С чего начинают
Свой сервер Lineage 2
Слова «поднять свой сервер» звучат как одно действие, а на деле это пять отдельных частей, которые должны совпасть между собой по версии игры. Если не совпадут — клиент либо не подключится вовсе, либо подключится и вывалится на первом же входе в мир.
Из чего состоит сервер
Lineage 2 устроена не как одна программа, а как две плюс база. Это важно понять до установки: половина вопросов новичка — «а почему оно не видит друг друга» — именно про стык между ними.
- Логин-сервер. Принимает логин с паролем, показывает список игровых миров и
передаёт игрока дальше. Слушает порт
2106. - Игровой сервер. Всё остальное: мир, мобы, навыки, предметы, экономика.
Слушает порт
7777. Он же обычно и съедает почти всю оперативную память. - База данных. Два отдельных набора таблиц — один для аккаунтов, другой для игрового мира. У L2J это MySQL или MariaDB, у PTS — Microsoft SQL Server.
- Клиент с патчем. У игрока должна стоять та же версия игры и те же файлы ресурсов, что заложены в сервер. Правленые доспехи, интерфейс, звуки — всё это и есть «патч», который игрок скачивает отдельно.
- Геодата. Карта проходимости и высот. Технически необязательна — сервер запустится и без неё, — но мир тогда получится проходимым насквозь. Подробнее про геодату.
Клиент игры и его ресурсы принадлежат NCSoft. Частный сервер на эмуляторе — не официальный сервер, и этот текст не о том, как обойти официальный, а о том, из каких частей собирается эмулятор.
Две развилки, которые решаются первыми
Обе определяют вообще всё дальнейшее: какую ОС ставить, какую базу, где искать файлы и у кого спрашивать, когда не заработает. Менять решение на полпути почти всегда означает начать заново.
- Эмулятор или оригинальные файлы. L2J — открытый эмулятор на Java, его можно читать и править. PTS — оригинальные скомпилированные серверные файлы, механики ведут себя как на официальном сервере, но исходников нет. Сравнение по пунктам.
- Хроника. Interlude, Gracia, High Five и далее. От неё зависит, какой клиент будут качать игроки и какие сборки вам вообще подойдут. Что значат названия и номера CT.
Третье решение — рейты — выглядит самым заметным для игрока, но технически оно самое дешёвое: это несколько чисел в конфиге, их меняют когда угодно. Что меняет каждый множитель.
Сколько нужно железа
Честный ответ: зависит от онлайна, хроники и эмулятора, а универсальной таблицы не существует. Что можно сказать точно, не выдумывая цифр:
- Игровой сервер — процесс, которому важнее частота одного ядра, чем их количество. Много ядер помогают, но не линейно: значительная часть игровой логики всё равно упирается в последовательную обработку.
-
Оперативная память тратится в первую очередь на мир и на геодату, то есть расходуется ещё
до прихода первого игрока. У L2J размер кучи задаётся в скрипте запуска, и именно он чаще
всего оказывается причиной падения сервера по
OutOfMemoryErrorна людном сервере. - Диск под базу лучше брать SSD. Сервер пишет в базу постоянно — персонажи, инвентарь, клановые данные, — и на обычном диске это становится заметно как лаги при массовом сохранении.
- Канал важнее, чем кажется: трафик мелкий, но постоянный и чувствительный к задержке. Сервер на домашнем интернете играбелен для компании друзей и мучителен для сотни человек.
Для теста «запустить и зайти одним персонажем» хватает обычного рабочего компьютера, и начинать стоит именно так — локально, до аренды чего-либо.
Порядок действий
- Выбрать хронику и эмулятор. См. выше. Без этого шага остальные бессмысленны.
- Поставить базу и создать две схемы с пользователем. Одну под аккаунты, одну под игровой мир.
- Развернуть серверную часть. Либо собрать из исходников, либо распаковать готовую ревизию. Чем одно отличается от другого.
- Импортировать дампы таблиц. В комплекте любой сборки есть скрипт установки базы; руками таблицы не создают.
- Прописать адреса в конфигах. Внешний и внутренний адрес сервера, доступ к базе. Это место, где ломается чаще всего — особенно за NAT.
- Запустить логин-сервер, потом игровой. Порядок именно такой: игровой при старте регистрируется у логин-сервера.
- Собрать клиентский патч и прописать в нём адрес. Пока этого нет, зайти на сервер не сможет никто, включая вас.
- Зайти админским аккаунтом и проверить мир. Телепорт, спавн моба, удар, подбор предмета. На этом шаге обычно и выясняется, что геодаты нет.
Где спотыкаются почти все
- Клиент не видит сервер. В девяти случаях из десяти дело в адресе: либо в конфиге сервера стоит внутренний адрес там, где нужен внешний, либо в клиенте не прописан ваш адрес вместо официального.
- Список миров пустой. Логин-сервер поднялся, игровой — нет, или не смог к нему зарегистрироваться. Смотреть лог игрового сервера, а не логин-сервера.
- Вход проходит, персонаж не создаётся. Как правило, не импортированы дампы игровых таблиц или сервер смотрит в пустую схему.
- Вылет сразу после входа в мир. Версия клиента не совпала с той, которую ждёт сервер. Протокол у каждой хроники свой, и подружить Interlude с High Five нельзя никакими настройками.
- Кракозябры вместо русских имён. Кодировка базы. Задаётся при создании схемы, и исправлять её потом болезненнее, чем пересоздать базу на пустом сервере.
Общее правило отладки: читать лог игрового сервера с первой строки, а не с последней. Настоящая ошибка почти всегда происходит на старте, а то, что видно в конце, — её последствия.