#01 — Уроки по La2 — Основные понятия

Краткое содержание

В данном видеоуроке обсуждается процесс создания собственного игрового сервера Lineage. Рассматривается структура серверных папок, особенности взаимодействия клиента с сервером, а также настройки портов и конфигурация. Автор делится опытом использования платной сборки L2Code и перечисляет основные этапы настройки серверной машины и запуска сервера. В конце приводится план действий для создания и тестового запуска сервера.

Всем привет! Это первый видеоурок цикла «Как создать свой собственный сервер Lineage». В предыдущем видео мы с вами познакомились и я рассказал о том, как я пришел к тому, что стал разбираться в создании игровых серверов Lineage. А в этом видео мы с вами разберем основные тезисы, которые необходимо знать для создания своего собственного проекта.

Также мы составим список задач, которые нам необходимо будет выполнить, чтобы создать свой собственный сервер. Итак, начнем. Для того, чтобы приступить к созданию своего собственного сервера Lineage, необходимо понимать, что же такое на самом деле игровой сервер и как с ним взаимодействует клиент игры. Что же представляет собой игровой сервер? По сути, это набор папок с файлами.

Новичку в этом деле будет очень сложно ориентироваться в этих папках и тем более понимать, что за что отвечает. Мы подробно разберем каждую папку в отдельности в следующих видео. Я в своих видеоуроках буду использовать сборку такого разработчика как L2Code. Это интерлюд сборка, основана она на исходном коде разработчиков Lucero.

В свое время я потратил немало сил в поисках хоть сколько-нибудь годных сборок в свободном доступе. Но все, что находится в так называемой шаре, это мусор с кучей ошибок, совершенно без какой-либо защиты и, что немаловажно для начинающего админа, без поддержки разработчика. В двух словах о самой сборке и разработчике. Автор данного эмулятора вполне адекватный человек.

Я с ним неоднократно общался в Аське, он оперативно отвечает на вопросы, связанные с его сборкой, оперативно фиксит найденные баги и в целом сотрудничество с ним вызывало у меня только положительные эмоции. В конфигах сервера есть масса различных настроек, вплоть до настройки физических и магических характеристик персонажа в зависимости от одетого оружия или вещи.

То есть для тех, кто считает, что знает, как должен выглядеть баланс, есть все, чтобы проявить свой талант. Но есть один серьезный минус. Это сборка платная. И деньги надо платить за каждый месяц использования данного эмулятора. То есть он дает свою сборку в аренду. За эти деньги вы получаете ежедневную поддержку, помощь в настройке серверной машины и постоянное обновление.

Хотя стоит заметить, что это довольно распространенная практика у разработчиков Lineage серверов. Что касается сборки, которая находится у меня, я купил ее на неограниченный срок с условием, что я не буду получать обновления. Меня вполне это устраивает. Чтобы наглядно понимать, как взаимодействуют клиенты игры с нашим сервером, я подготовил вот такую вот картинку.

Вот наш игровой клиент. В папке System есть два основных файла, отвечающие за подключение к серверу. Engine.dll и L2.ini. Engine.dll это самый первый файл во всем клиенте, который запускается после того, как мы клацаем по ярлыку L2.exe. Чем же этот файл так важен, что я решил о нем рассказать?

Все дело в том, что я однажды столкнулся с такой ситуацией. У меня есть серверная машина, на которой запущен игровой сервер. Игровой сервер по сути это два отдельных независимых сервера, которые взаимодействуют друг с другом. Это логин сервер и гейм сервер. Логин сервер это программа, которая постоянно слушает определенный порт на серверной машине. И когда в этот порт постучался клиент, логин сервер запрашивает логин пароль и получает ответ.

Сравнивает ответ с базой данной и если все совпадает, то переключает клиент на геймсервер. То есть уже на игровой порт. На тот порт, на котором работает сам геймсервер. Во всех мануалах, которые я когда-либо читал, пишут, что логин сервер должен слушать порт 2106, а геймсервер порт 9014.

И вот у меня настроенный сервер по мануалу с открытыми портами 2106 и 9014. И однажды у меня возникает такая потребность. На логин сервер запустить два гейм сервера. Я взял папку с сервером, скопировал, поменял в конфигах порт подключения с 9014 на 9015 и все сработало. В клиенте после логина появляется окно с выбором серверов и там был тот самый дополнительный сервер.

Но когда у меня появилась необходимость на данной серверной машине запустить два логин сервера, я проделал все то же самое с портами. То есть в конфигах поменял порт подключения с 2106 на 2107 и ничего не произошло. То есть сам логин сервер запускается, я проверяю порт 2107, он открыт. Но клиент по-прежнему подключается к серверу с портом 2106.

Я начал искать информацию в интернете, и что я узнал? Порт подключения к логин-серверу зашит в файле engine.dll, и поменять его практически невозможно. Но все же решение я нашел с помощью дополнительных файлов библиотек. Но у этого способа есть серьезный минус, из-за которого мне пришлось от него отказаться. У некоторых игроков по непонятной мне причине при запуске клиента с новыми файлами критуют клиента.

Причем я проверял на трех своих компьютерах, у меня все хорошо. У других, кто пытается подключиться, через одного критуют. Возможно, кто-то из вас сможет разобраться в причине и исправить ее. Поэтому я все равно расскажу об этом способе смены порта логин сервера, но уже в другом видео. И, наконец, файл L2.ini. Это файл настроек подключения к серверной машине.

По сути, тут нам важен только один параметр. Это IP сервера. Тут может быть написан как сам IP, то есть цифры, так и доменное имя вашего сервера, если домен привязан к вашему IP, где находится игровой сервер. Порт, который тут указан, может быть любой и по сути ни на что не влияет. Главное, чтобы в конфигах самого сервера эти порты совпадали. Данный файл редактируется с помощью специальной программы. Об этом я расскажу уже в следующих уроках. Давайте еще раз быстренько пробежимся по нашей схеме. Есть клиент игры, в нем по умолчанию установлен порт подключения к логин-серверу 2106 и будем считать, что его изменить нельзя. В файле L2.ini мы вписываем IP серверной машины, на которой запущен наш игровой сервер.

В конфигах игрового сервера прописаны все необходимые порты и IP адреса. мы запускаем клиент, он обращается по IP, который указан в L2.ini к порту 2106. На этом порте, как известно, находится логин-сервер. Логин-сервер запрашивает логин-пароль клиента, после чего сверяет полученные данные с базой данных, и если не нашел в базе пару логин-пароль, выдает об этом сообщение.

Если совпадения найдены, что переводит клиент к выбору игрового сервера. Тут мы выбираем нужный нам сервер, и клиент уже переключается на геймсервер. По сути, в данный момент мы спокойно можем выключить логин сервера, клиент на это никак не отреагирует. Просто другие игроки не смогут попасть на геймсервер. В общих чертах так выглядит взаимодействие клиента и игрового сервера. Если вы планируете стать админом своего сервера вы должны это как минимум понимать.

Теперь создадим небольшой план действий на ближайшее время первое и самое основное это настройка серверной машины по сути серверной машины может являться и ваш собственный домашний ноутбук и все дальнейшие объяснения по созданию игрового сервера будут также актуальны и для такого случая. Но должен сразу предупредить о проблемах, с которыми вы столкнетесь и которые вам придется решать самостоятельно.

И о которых я не буду рассказывать в данном цикле видеоуроков. Я говорю о портах, которые на большинстве роутеров попросту закрыты и динамичным IP вашего компьютера. Итак, во-первых, нам необходимо найти подходящую в категории цена-качество серверную машину. Во-вторых, установить на серверную машину все необходимое ПО. В-третьих, приступить к настройке игрового сервера.

После этого сделаем тестовый запуск сервера. Также нам надо установить виртуальный HTTP сервер, веб-обвязку и форум. Выполнив все эти пункты, у нас будет шаблонный сервер, который мы будем настраивать и изменять как нашей душе угодно. Этим мы займемся в следующем видео уроке. На этом я с вами прощаюсь и помните, главное в жизни это двигаться к цели, насколько бы недостижимой она вам не казалась.

Дневник Разработчика