Настройка L2JMobius: от клонирования до первого входа

Чистая настройка l2jmobius занимает один день, если следовать порядку, которого ожидает проект: сначала сборка, затем база данных, потом конфигурация и только после этого запуск серверов. Большинство первых попыток проваливается, потому что кто-то пропускает установщик базы, запускает game-сервер до login-сервера или компилирует не той версией Java. Это руководство проходит весь путь от клонирования репозитория до входа первого персонажа и перечисляет ошибки, на которых люди спотыкаются на каждом шаге. Точные команды отражают текущую структуру проекта; ваша папка хроники может немного отличаться в деталях.
Требования: Java, база данных и нужная хроника
Подготовьте это до того, как трогать исходник. Отсутствие одного из пунктов — самая частая причина проваленной сборки.
- Java JDK. Недавние релизы L2JMobius нацелены на современный JDK — текущая линия C4 требует JDK 25, а более старые папки хроник могут использовать другую версию. Проверьте
readme.txtв папке хроники и установите именно этот JDK. - Движок базы данных. MySQL 5.7+ или MariaDB 10.3+. Создайте отдельную базу с коллацией
utf8mb4для корректной работы с символами. - Инструмент сборки. Apache Ant, управляемый
build.xmlв корне собираемой хроники. - Железо. Минимум 4 ГБ ОЗУ для тестов (рекомендуется 16 ГБ+ с приходом игроков) и примерно 10 ГБ свободного диска под исходники, вывод сборки и базу данных.
Выберите одну папку хроники и работайте только внутри неё. L2JMobius поставляет отдельный самодостаточный дистрибутив на каждую хронику, а смешивание папок или схем ведёт к ошибкам, которых можно избежать.

Шаг 1 — Клонируйте репозиторий и соберите через Ant
Клонируйте проект, откройте его в своей IDE и запустите сборку Ant.
- Клонируйте
https://gitlab.com/MobiusDevelopment/L2J_Mobius.git(полный исходник — на GitLab). - Импортируйте проекты в Eclipse или IntelliJ и убедитесь, что IDE указывает на установленный вами JDK, а не на встроенный.
- Кликните правой кнопкой по
build.xmlи запустите его как сборку Ant. ДождитесьBUILD SUCCESSFUL. - Заберите собранный дистрибутив из папки
build(zip, который распаковывается в рабочую папку вродеC:\L2J_Mobiusили выбранный вами путь на Linux).
Если сборка падает сразу, это почти всегда версия Java или отсутствующий Ant. Исправьте это, прежде чем искать что-то ещё.
Шаг 2 — Настройте MySQL или MariaDB
Установите и запустите службу базы данных, затем создайте схему и пользователя для сервера.
- В Windows XAMPP — удобный способ запустить MySQL, но проверьте, что его встроенная версия всё ещё отвечает минимуму выше; отдельная установка MySQL или MariaDB — более надёжный выбор. В Linux используйте менеджер пакетов и
systemctl. - Создайте базу и отдельного пользователя и выдайте ему права на эту базу.
- Используйте
utf8mb4для базы, чтобы имена с нелатинскими символами хранились корректно.
Держите учётные данные под рукой. Вы введёте их в два конфигурационных файла, а не в один.

Шаг 3 — Запустите установщик базы и настройте подключения
Установщик базы создаёт таблицы и загружает базовые данные. Его пропуск — ошибка настройки номер один.
- Откройте папку
db_installerв распакованном дистрибутиве. - Отредактируйте
config/Database.iniвнутри установщика, указав хост, имя базы, пользователя и пароль. - Запустите установщик (в Windows — прилагаемый
DatabaseInstaller.vbs; в Linux — shell-лаунчер илиjava -jar DatabaseInstaller.jar). - Выберите опцию установки обеих схем, login и game, затем дайте ему создать таблицы и импортировать базовые данные.
Теперь настройте оба сервера на доступ к этой базе. Отредактируйте один и тот же блок подключения и в login/config/Database.ini, и в game/config/Database.ini. Если они отличаются от конфигурации установщика, серверы запустятся, а затем не смогут читать данные.
Шаг 4 — Запустите login-сервер, затем game-сервер
Порядок важен. Game-сервер регистрируется на login-сервере, поэтому login-сервер должен быть поднят первым.
- Запустите login-сервер из папки
login. Дождитесь сообщения, что он слушает (порт по умолчанию 2106). - Запустите game-сервер из папки
game. Дождитесь, что он сообщает о прослушивании (порт по умолчанию 7777) и успешной регистрации. - Настройте память JVM в
java.cfgдля каждого процесса. Game-серверу нужно заметно больше heap, чем login-серверу.
Если game-сервер пишет о провале регистрации, обычные причины — учётные данные базы или состояние login-сервера, а не сеть.
Шаг 5 — Согласуйте протокол клиента и войдите
Работающий сервер — только половина дела. Клиент должен говорить на той же версии протокола, что и скомпилированная хроника.
- Проверьте, что версия протокола клиента совпадает с папкой хроники (клиенты Chronicle 4, например, обычно используют протокол 656). Несовпадение проявляется мгновенным разрывом на экране выбора персонажа.
- Укажите в клиенте адрес сервера и порт логина на вашу машину, если тестируете локально.
- Создайте игровой аккаунт через login-сервер, затем войдите и убедитесь, что первый персонаж загружается.
Частые ошибки настройки L2JMobius и их исправления
- «Cannot connect with client» или мгновенный разрыв. Почти всегда несовпадение протокола — убедитесь, что версия клиента соответствует хронике.
- Сборка падает на проверке Java. Ваш JDK не той версии для этой папки хроники. Установите версию, указанную в readme.
- Game-сервер стартует, но персонажи не двигаются и не загружаются. Обычно это значит, что установщик базы не запускался, либо login/game смотрят в разные базы. Перезапустите установщик и согласуйте оба конфига.
- Отказ подключения к базе. Служба базы не запущена или учётные данные в
Database.iniневерны. - Сервер лагает с игроками онлайн. Проверьте heap JVM в
java.cfgи настройки базы, прежде чем винить код.
После первого входа: разместите сервер и дайте себя найти
Работающая настройка L2JMobius — это старт, а не запуск. Проверьте стабильность приватным тестом, затем опубликуйте точный листинг — хронику, рейты и час открытия — в бесплатном каталоге L2Calendar. Когда будете готовы бороться за внимание в недели запуска, VIP-размещение покажет сервер игрокам, которые активно ищут новые открытия. Сборка даёт вам работу; именно обнаружение наполняет сервер.
