- PVSM.RU - https://www.pvsm.ru -

Я познакомился с Lineage 2, когда был в начальной школе. Играл несколько лет, но замедление прогресса с ростом уровня было невыносимым, а запустить свой сервер [1] было сложно. Так я забросил «линейку» на многие года. С тех пор заинтересовался IT, получил два высших образования и начал писать статьи на Хабр. Но мысль про свой сервер не оставляла меня.
Что произошло с игрой за 10+ лет? Можно ли сегодня прикоснуться к игре детства? Действительно ли «раньше было лучше» или это когнитивное искажение? Ответы на эти и другие вопросы ждут вас под катом.
Дисклеймер: статья написана исключительно в ознакомительных целях.
Я начал играть в Lineage 2 с версии Chronicle 4: Scions of Destiny, сокращенно — С4. Спустя время сервер обновился до версии Interlude, которую называют C6. Именно на С6 я провел больше всего времени.
Игровой процесс того времени помню плохо, а скриншотов, увы, не сохранилось. Помню, что доставал разговорами взрослых, которые пришли отдохнуть в игре после работы, но я видел цель и не видел препятствий. К счастью, со мной общались вежливо.
Большая часть интерфейса была на английском, как и сюжеты квестов. Английский я тогда не знал, а охотиться на монстров скучно. Вкладывал все силы в социализацию, так что прокачал персонажа только до 64 уровня из 80 возможных. Экипировку и прочие ценные вещи мне помогали доставать взрослые. Все происходило без внутриигровых покупок!
Даже спустя 13 лет в моей памяти сохранились воспоминания о главной площади Гирана, где было поле «торгашей», и недосягаемость красивого замка Аден. Пора проверить свои школьные олдскулы на прочность. Так ли хороши пейзажи городов, как мне подсказывает память.
Время начинать!
Используйте навигацию, если не хотите читать текст полностью:
→ Клиент игры [2]
→ Игровой сервер? [3]
→ В небо и выше [4]
→ Если хочется поновее [5]
→ Руофф [6]
→ Заключение [7]
Lineage 2 — это корейская MMORPG от компании NCSoft, вышедшая в 2004 году. Упомянутые хроники С4 вышли в 2006, а С6 — в 2007. Официально эти версии в России и странах СНГ не появлялись. Интерфейс был переведен лишь частично, а квесты… Только обязательные, связанные с развитием персонажа, и то не факт. В базах знаний было написано «поговорите с X», а чего он там говорит — не так важно. :)
Официально в России Lineage 2 появилась в декабре 2008 года в версии Gracia Part 1, что через две версии после выхода Interlude. Издателем выступила компания «Иннова», которая до сих пор представляет Lineage 2 и все модификации на территории России.
В отличие от Minecraft, Factorio и прочих многопользовательских игр, Lineage 2 никогда не была «открытой». У Lineage 2 были только официальные сервера: в Южной Корее, Китае, США, Европе и России. Игровой клиент был ограничен достаточно строгими правилами — распространять и модифицировать клиент нельзя.
Этого уже достаточно, чтобы данный раздел статьи существенно уменьшился: ссылок и намеков не будет. Тем не менее, поделюсь набором интересных фактов.
В общем, если у вас сохранился официальный клиент Interlude, то доставайте виртуальную машину, устанавливайте Windows 7 или даже ХР и продолжим.

Как и говорилось ранее, игровой сервер Lineage 2 существует только в одной форме: в официальной. Все остальное — игристое программное обеспечение. Исходного кода сервера в открытом виде нет. Что делать?
В 2005 году энтузиасты создали ответ на этот вопрос: эмулятор сервера L2J [8], написанный на Java с открытым исходном кодом под лицензией GPLv3. Сервер реализует большинство игровых механик, но даже сейчас какие-то из вариантов в квестах могут быть отмечены как «NOT IMPLEMENTED». Самый свежий коммит в проекте на момент написания статьи — 11 мая 2024, так что проект скорее жив. Попробуем развернуть.
Эмулятор сервера не использует никаких частей игрового клиента и в исходном коде не упоминается название игры. Более того, разработчики пресекают обсуждение всего, что связано с игровым клиентом. Похоже, что такой подход успешно спасает от юридических претензий и позволяет проекту жить.
Эмулятор L2J состоит из следующих частей:
В этой статье не будет про Geodata, потому что есть вопросы касательно авторского права. Сервер относительно корректно работает и без геодаты, но позволяет клиенту проваливаться при скольжении по наклонным поверхностям.
Для запуска сервера нужно подготовиться.
Я выполняю все команды на Ubuntu 22 и разворачиваю сервер версии Interlude. Подробнее процедура описана в документации l2jserver [9], но для версии High Five, последней в «оригинальной» игре.
Планируете запустить собственный игровой сервер? Используйте выделенные серверы [10], чтобы создать надежное и мощное окружение для вашей платформы.
# Ставим рекомендуемый дистрибутив JVM
apt install -y wget apt-transport-https gpg
wget -qO - https://packages.adoptium.net/artifactory/api/gpg/key/public | gpg --dearmor | tee /etc/apt/trusted.gpg.d/adoptium.gpg > /dev/null
echo "deb https://packages.adoptium.net/artifactory/deb $(awk -F= '/^VERSION_CODENAME/{print$2}' /etc/os-release) main" | tee /etc/apt/sources.list.d/adoptium.list
apt update
apt install temurin-21-jdk
# Ставим git и unzip
apt install git unzip
# Ставим mariadb
apt install mariadb-server
Настраиваем mariadb:
# mysql_secure_installation
Switch to unix_socket authentication [Y/n] y
Change the root password? [Y/n] n
Remove anonymous users? [Y/n] y
Disallow root login remotely? [Y/n] y
Remove test database and access to it? [Y/n] y
Reload privilege tables now? [Y/n] y
Создаем пользователя с максимальными правами для l2j:
# Заходим в БД, пароль по умолчанию пустой
mariadb -u root -p
# Выполняем команды, используйте другие пароли!
CREATE OR REPLACE USER 'l2j'@'%' IDENTIFIED BY 'l2jserver2019';
GRANT ALL PRIVILEGES ON *.* TO 'l2j'@'%' IDENTIFIED BY 'l2jserver2019';
FLUSH PRIVILEGES;
exit
Игровой сервер не нуждается в правах суперпользователя, поэтому выделяем отдельного пользователя и далее работаем от него.
# useradd game
# su - game
Клонируем репозитории l2j:
mkdir ~/git
cd ~/git
# Ветка master, последняя актуальная версия
git clone -b master https://bitbucket.org/l2jserver/l2j-server-login.git
# Эмулятор сервера, выбираем ветку Interlude
git clone -b Interlude https://bitbucket.org/l2jserver/l2j-server-game.git
git clone -b Interlude https://bitbucket.org/l2jserver/l2j-server-datapack.git
У эмулятора сервера есть ветки [11] на большинство игровых хроник, но все, кроме Interlude и High Five, не развиваются с 2015 года. Собираем:
cd ~/git/l2j-server-login/
chmod 755 mvnw
cd ~/git/l2j-server-game/
chmod 755 mvnw
cd ~/git/l2j-server-datapack/
chmod 755 mvnw
Деплоим:
# Логин-сервер
mkdir -p ~/server/login
cd ~/server/login
unzip ~/git/l2j-server-login/target/l2j-server-login-*.zip -d .
# Игровой сервер
mkdir -p ~/server/game
cd ~/server/game
unzip ~/git/l2j-server-game/target/l2j-server-game-*.zip -d .
unzip ~/git/l2j-server-datapack/target/l2j-server-datapack-*.zip -d .
Теперь инициализируем базу данных начальными значениями. Это делается через отдельную утилиту l2j-cli:
mkdir ~/cli
cd ~/cli
wget https://l2jserver.com/api/download/cli/latest -O /tmp/l2jcli-latest.zip
unzip /tmp/l2jcli-latest.zip -d .
chmod 755 l2jcli.sh
db install -sql /home/game/server/login/sql -u l2j -p l2jserver2019 -m FULL -t LOGIN -c -mods
db install -sql /home/game/server/game/sql -u l2j -p l2jserver2019 -m FULL -t GAME -c -mods
quit
У меня в процессе установки скриптов была одна ошибка, но она не повлияла на результат:
Running l2jdb_create.sql...
[WARN ] 2024-05-17 18:53:07 ErrorPacket - Error: 1050-42S01: Table 'accounts' already exists
There has been an error executing file l2jdb_create.sql!
java.sql.SQLSyntaxErrorException: (conn=105) Table 'accounts' already exists
Если все выполнено верно, то в mariadb появится две базы данных: l2jgs и l2jls, для игрового сервера и логин-сервера соответственно. Осталось сконфигурировать общие параметры приложения.
Множители сервера можно оставить без изменений, ведь если вы пришли «пробежаться» по воспоминаниям, то меню администратора решит все ваши проблемы. Но если вы поставите слишком большие числа, например, 10000 на выпадение предметов, то будет что-то подобное:
Запускаем логин-сервер. Скрипт запускает его в фоне:
cd ~/server/login
chmod +x *.sh
mkdir log
Если все хорошо, то в log/stdout.log будет примерно такой результат:
[INFO ] 2024-05-17 19:16:25 LoginServer: Loaded 2 banned IPs.
[INFO ] 2024-05-17 19:16:25 LoginServer: Listening for game servers on 127.0.0.1:9014.
[INFO ] 2024-05-17 19:16:25 LoginServer: Telnet server is currently disabled.
[INFO ] 2024-05-17 19:16:25 LoginServer: Login Server is now listening on *:2106.
[INFO ] 2024-05-17 19:16:25 UPnPService: Looking for UPnP Gateway Devices...
Затем повторяем процедуру для игрового сервера. В этот раз скрипт запускает сервер в текущей сессии, поэтому откройте screen или tmux.
cd ~/server/game
chmod +x *.sh
mkdir log
Если все хорошо, то лог игрового сервера не будет пугать, а логин-сервер зарегистрирует новый игровой сервер.
$ tail -n 4 ~/server/game/log/stdout.log
Connecting to login on 127.0.0.1:9014
Maximum Numbers of Connected Players: 100
Telnet server is currently disabled.
Registered on login as Server 1 : Bartz
$ tail -n 5 ~/server/login/log/stdout.log
[INFO ] 2024-05-17 19:25:00 GameServerThread: Updated game server Bartz[1] IPs.
[INFO ] 2024-05-17 19:25:00 GameServerThread: <адреса удалены>
[INFO ] 2024-05-17 19:25:00 GameServerThread: <адреса удалены>
[INFO ] 2024-05-17 19:25:00 GameServerThread: <адреса удалены>
[INFO ] 2024-05-17 19:25:00 GameServerAuth: Game Server Interlude enabled.
Отлично, сервер запущен, осталось подключиться. Адрес официального игрового сервера прописан в файле конфигурации внутри игрового клиента. Но есть проблемы. Во-первых, изменять клиент запрещено, а во-вторых, файл конфигурации зашифрован.
К счастью для нас, игровой клиент обращается к серверу по доменному имени. Так что задача подключения к эмулятору сводится к подмене DNS-ответа. Это можно сделать через hosts-файл:
789.174.486.787 l2authd.lineage2.com
Способ с локальным hosts-файлом может не работать на более современных клиентах, где GameGuard следит за этим файлом. К счастью, это не единственный вариант. Если у вас Windows 7 или старше, то можно запускать с аргументами через командную строку:
@start l2.bin IP=127.0.0.1
Windows 10 отказывается запускать bin-файлы таким способом, поэтому можно открыть Visual Studio и быстро написать запускатор через WinAPI.
#include <iostream>
#include <Windows.h>
int main(int argc, char* argv[])
{
STARTUPINFOA si;
PROCESS_INFORMATION pi;
// set the size of the structures
ZeroMemory(&si, sizeof(si));
si.cb = sizeof(si);
ZeroMemory(&pi, sizeof(pi));
char* cmdArgs[] = "l2.bin IP=127.0.0.1";
// start the program up
if (CreateProcessA
(
argv[1], // the path
cmdArgs, // Command line
NULL, // Process handle not inheritable
NULL, // Thread handle not inheritable
FALSE, // Set handle inheritance to FALSE
CREATE_NEW_CONSOLE, // Opens file in a separate console
NULL, // Use parent's environment block
NULL, // Use parent's starting directory
&si, // Pointer to STARTUPINFO structure
&pi // Pointer to PROCESS_INFORMATION structure
) == 0) {
std::cout << "Code: " << GetLastError() << std::endl;
return 1;
}
// Close process and thread handles.
CloseHandle(pi.hProcess);
CloseHandle(pi.hThread);
return 0;
}

В моем Telegram-канале [12] можно увидеть заметки по теме статей, над которыми я работаю. А еще там маленькие познавательные посты на разные темы.
Запускаем игру. Вводим логин-пароль, происходит авторегистрация и вот окно выбора сервера. Добро пожаловать обратно.

Здравствуйте, мистер Баюм.
После регистрации и создания персонажа нужно будет первый раз залезть в базу данных. В базе данных l2jls в таблице accounts нужно изменить accesslevel на 8 для вашего аккаунта. В таблице characters нужно изменить accesslevel на 100 для вашего персонажа.
Эти операции можно выполнять через любой удобный инструмент взаимодействия с базой данных. В моем случае это функциональность подключения к БД в IDE PyCharm, но можно использовать SQL-интерфейс mariadb или освоить l2jcli. Единственное требование — выйти из аккаунта на момент применения изменений.

Небольшой коллаж админского меню.
После запуска ник вашего персонажа становится зеленым. Поздравляю, вы администратор. Панель администратора открывается командой //admin в чате. Не буду перечислять все возможности «админки», а только проясню некоторые детали.
В детстве я прокликивал квесты, не вдаваясь в реплики NPC. Поэтому я решил пройти «сюжетную» составляющую квестов Fate's Whisper и Mimir's Elixir (квесты на получение возможности брать саб-классы) и все четыре части Possessor of a precious soul — получение «нобла», то есть титула «дворянин».
Даже с возможностями администратора телепортироваться в определенные точки, неуязвимостью и мощью команды Kill это было долго. Каково же было тем, кто проходил это в оригинале? Наверное, им было весело.
Остался один не закрытый вопрос. Как стать героем? После получения дворянства нужно поучаствовать в олимпиаде. Проблема в том, что прежде необходимо поучаствовать в нескольких боях с другими персонажами, а мы тут одни. Второй и последний раз заходим в базу данных и заполняем одну строчку в таблице olympiad_nobbles, где:
После этого в меню администратора Game → Manual Hero. Готово, вы признанный герой и можете получить все положенные привилегии.
Когда играешь в Lineage 2 совершенно один, то большие и открытые, но пустые пространства немного угнетают. Не только пустотой, но и некоторой серостью. «Линейка» получала обновления каждый год. Может со временем стало лучше?

Спустя столько лет…
Рассказать полную историю взлетов и падений Lineage 2 мне не под силу, но я попробую обозначить основные вехи. Обновления игры происходят каждые полгода по «главам» повествуемой «саги». Сейчас пять саг.
В 2011 году вышла Goddess of Destruction, которая огорчила своими упрощениями «старичков». NCSoft пошли на встречу старым игрокам и сделали некое ответвление Classic, которое воссоздает то самое «раньше было лучше» в новых декорациях. Сейчас игра разделилась на три ветви.
Оригинальный эмулятор L2J покрывает только первые две саги — The Chaotic Chronicles и The Chaotic Throne. L2J — это основа, на которой выросли другие проекты. Один из таких — L2JMobius [13].
В отличие от оригинала, L2JMobius замахнулся в более современную Epic Tale Of Aden, чтобы сделать Classic еще более хардкорным. То есть отключить телепорт из любого места в любую локацию, спрятать автолечение и так далее. Эмулятор L2JMobius взаимодействует с более современными игровыми клиентами, так что графика будет радовать вас больше.
Это упрощенный форк эмулятора L2J, однако суть осталась та же. Собираем сервер, но не через Maven, а через Ant. Инициализируем базу данных. Запускаем логин-сервер и игровой сервер. Готово! Вы восхитительны!
Да, графика похорошела. Но все еще одиноко. Куда деваться?

Главная площадь Гирана. Не узнали? Я тоже.
Я вспомнил молодость и поиграл на оригинальном Interlude. Но я быстро вспомнил, что главное в Lineage 2 — это люди. Старые локации кажутся безжизненными без множества персонажей и постоянной болтовни героев и торговцев. Так что зашел на официальный сервер [14], выбрав версию Classic и сервер Antharas. Сейчас играть можно без помесячной подписки, но монетизация присутствует.

Да, это бесплатный телепорт. Даже не обязательно подходить к Gatekeeper’у.
Админки, конечно, мне никто не даст, но издалека можно посмотреть даже на охотничьи угодья. Телепорт бесплатный, по крайней мере на низких уровнях.
Зашел в Башню Дерзости, понаблюдал короткий сюжет с устранением конкурентов под эпический саундтрек игры. Ну и хватит, пожалуй, Classic-версии. Посмотрим еще Essence.

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

Квесты… Щедрые!
После воспоминаний об оригинальном Interlude, обучение в Essence выглядит довольно удобно и совершенно не хардкорно. Вас сразу же обучают автоохоте, а уведомления о квесте позволяют телепортироваться в нужные охотничьи угодья. Еще и в награду подарят 100 зелий лечения. Не знаю, есть ли такое в Classic-версии, потому что я сразу полетел в Гиран.
Это было познавательное приключение в мир старой Lineage 2. Игре почти 20 лет, а интерес к ней в рунете так и не остыл. Даже старые версии все еще пользуются популярностью. Что немного удивляет: в мире растет скорость потребления контента, наблюдается тенденция к его упрощению, а социальные сети уже везде. Но люди все еще тянутся к хардкорным социальным играм.
Автор: Владимир
Источник [15]
Сайт-источник PVSM.RU: https://www.pvsm.ru
Путь до страницы источника: https://www.pvsm.ru/news/391746
Ссылки в тексте:
[1] сервер: https://selectel.ru/services/cloud/servers/?utm_source=habr.com&utm_medium=referral&utm_campaign=cloud_article_lineage2_280524_content
[2] Клиент игры: #1
[3] Игровой сервер?: #2
[4] В небо и выше: #3
[5] Если хочется поновее: #4
[6] Руофф: #5
[7] Заключение: #6
[8] эмулятор сервера L2J: https://l2jserver.com/
[9] в документации l2jserver: https://l2jserver.com/docs/installation-guide
[10] выделенные серверы: https://selectel.ru/services/dedicated/?utm_source=habr.com&utm_medium=referral&utm_campaign=dedicated_article_lineage2_280524_content
[11] ветки: https://bitbucket.org/l2jserver/l2j-server-game/branches/
[12] В моем Telegram-канале: https://t.me/%2BVzpLr5pam-MxODEy
[13] L2JMobius: https://www.l2jmobius.org/
[14] на официальный сервер: https://ru.4game.com/lineage2legacy/
[15] Источник: https://habr.com/ru/companies/selectel/articles/816165/?utm_source=habrahabr&utm_medium=rss&utm_campaign=816165
Нажмите здесь для печати.