Несколько лет назад были выложены бинарники разных версий Л2. Часть содержала pdb и другими файлы, которые позволяют "относительно легко" реконструировать код. Некоторые из них были нарочно испорчены, но при этом все же были секции (процентов 20%) с полезными данными. На удивление (для меня) totalchecker2015.pdb оказался очень полезным для реконструкции L2Server. В начале лета я решил проверить справятся ли "frontier" АИ модели с декомпиляцией если им скормить все это. Спустя 32 дня работы 24/7 и 75 млдр токенов, была получена первая рабочая версия. Последующие месяцы ушли на тестирование, фиксы, очистку кода, дополнительные аудиты для сверки с машинным кодом и т.д. Большая часть тестирования была выполнена на MacOS. Но гарантировать стабильность при длительном рантайме и при большом онлайне не могу ни на какой платформе. Это все нужно проверять, у меня ни возможности ни времени не было.
Изменения по сравнению с оригиналом
- Консольные приложения вместо Win GUI. На виндовс можно для cached и authd в настройках указать режим gui, если это кому-то нужно.
- Кросс-платформенность. Все приложения билдятся и запускаются на Win, MacOS, Linux. Большая часть тестирования была проведена на MacOS, поэтому на других платформах могут быть ошибки о которых я не знаю.
- MSSQL заменена на PostgreSQL.
- При условии что PostgreSQL запущен и указаны правильные логин и пароль, схемы создадутся автоматически.
- В authd и cached есть папки sql с миграциями которые применяются автоматически. Если нужно внести изменение в схему или просто выполнить единоразово какой-то апдейт, то просто создайте новую миграцию.
- Регистрировать сервер в БД не обязательно, но для этого есть sql скрипт в AuthD\sql\tools. AuthD поддерживает текстовый файл в папке с конфигом AuthD\etc\serverlist. По-умолчанию он настроен на localhost, сервер Bartz.
- При логине аккаунт создается автоматически, если он не существует (как в джава эмуляторах). Это отключается в настройках.
- Создать аккаунт и изменить ГМ права можно с помощью консольных команд в authd и cached. help выведет в консоль все доступные команды, их там не много.
- Все приложения поддерживают флаг --сonfig-dir для указания папки с конфигом, иначе ищет в текущей/etc.
- Некоторые приложения поддерживают флаги --scripts-dir (CacheD, L2Server, L2NPC) , --html-dir (L2Server), --geo-dir (L2Server, L2NPC).
- По-умолчанию включена поддержка нескольких языков (из-за этого в архиве HTML_Korea и HTML_USA). Второй был переведен нейронками с учетом игровых данных корейского и английского клиентов чтобы сохранить корректные английские названия локаций, НПС, айтемов и т.д.
- По-умолчанию для выделения памяти используется стандартный аллокатор. В настройках можно установить legacy memory manager. Какое-то время назад делал бенчмарки на маке с учетом того на что память выделяют сервера и в большинстве случаев обычный аллокатор был эффективнее кастомного. Но в некоторых ситуациях кастомный был лучше (точно не помню, по-моему что-то связано с аллокацией маленьких обьектов и фрагментацией памяти). В общем, нужно тестировать.
- Переделаны все логи. Старые сохранены в комментариях. Видимо некоторые (неинформативные) логи разработчики добавляли для быстрого дебага и не удаляли их.
- Пофикшены несколько багов в ai.obj, html. Также исправлены и задокумментированы некоторые баги оригинала (docs/SHIPPING_BUG_FIXES.md).
- Поддержка 152 EN клиента
Протестировано
Прокачка персонажей (квесты и т.д.), различные механики (репутация, monster book, инстансы, кланы, различные операции с предметами, алхимия, игра в группе и т.д.). Не протестированы осады, олимпиада. Там по-моему нужно основной сервер настроить как сервер обрабатывающий эти механики. Некоторые файлы в scripts содержат адреса peer серверов и по идее если указать локальный адрес, то должно сработать. Еще были написаны e2e тесты для всех ГМ комманд, поскольку они затрагивают множество механик.
Кстати, docs\builder\index.html содержит таблицу с описание всех поддерживаемых гм комманд. Поиск тоже работает.
Баги
Очевидно, что они есть. Были исправлены сотни ошибок реконструкции. Практически все связаны с обращением не к тому полю (например в машинном коде идет обращение к полю с оффсетом Х, а здесь к полю с оффсетом X+1). Но это легко правится.
Заключение
Я никогда не играл в ГОД+ и слышал много хейта в адрес мейна. Пока тестировал механики убедился насколько же все халтурно и убого сделано. Для меня самая большая ценность этого наверное в возможности использовать как основу для даунгреда до C4-HF, может быть для классики. Поддерживать репозиторий с этим кодом у меня сейчас нет времени, поэтому скорее всего и апдейтов никаких я постить не буду. Если кто-то захочет, то может быть создаст репозиторий в который все могли бы контрибьютить. Надеюсь, что это окажется полезным для Л2 коммьюнити, где к сожалению много закрытых/платных сборок.
Смотрите README.md и REQUIREMENTS.md где указано, что необходимо для компиляции.
Ссылка:
Пароль: default_npc
Изменения по сравнению с оригиналом
- Консольные приложения вместо Win GUI. На виндовс можно для cached и authd в настройках указать режим gui, если это кому-то нужно.
- Кросс-платформенность. Все приложения билдятся и запускаются на Win, MacOS, Linux. Большая часть тестирования была проведена на MacOS, поэтому на других платформах могут быть ошибки о которых я не знаю.
- MSSQL заменена на PostgreSQL.
- При условии что PostgreSQL запущен и указаны правильные логин и пароль, схемы создадутся автоматически.
- В authd и cached есть папки sql с миграциями которые применяются автоматически. Если нужно внести изменение в схему или просто выполнить единоразово какой-то апдейт, то просто создайте новую миграцию.
- Регистрировать сервер в БД не обязательно, но для этого есть sql скрипт в AuthD\sql\tools. AuthD поддерживает текстовый файл в папке с конфигом AuthD\etc\serverlist. По-умолчанию он настроен на localhost, сервер Bartz.
- При логине аккаунт создается автоматически, если он не существует (как в джава эмуляторах). Это отключается в настройках.
- Создать аккаунт и изменить ГМ права можно с помощью консольных команд в authd и cached. help выведет в консоль все доступные команды, их там не много.
- Все приложения поддерживают флаг --сonfig-dir для указания папки с конфигом, иначе ищет в текущей/etc.
- Некоторые приложения поддерживают флаги --scripts-dir (CacheD, L2Server, L2NPC) , --html-dir (L2Server), --geo-dir (L2Server, L2NPC).
- По-умолчанию включена поддержка нескольких языков (из-за этого в архиве HTML_Korea и HTML_USA). Второй был переведен нейронками с учетом игровых данных корейского и английского клиентов чтобы сохранить корректные английские названия локаций, НПС, айтемов и т.д.
- По-умолчанию для выделения памяти используется стандартный аллокатор. В настройках можно установить legacy memory manager. Какое-то время назад делал бенчмарки на маке с учетом того на что память выделяют сервера и в большинстве случаев обычный аллокатор был эффективнее кастомного. Но в некоторых ситуациях кастомный был лучше (точно не помню, по-моему что-то связано с аллокацией маленьких обьектов и фрагментацией памяти). В общем, нужно тестировать.
- Переделаны все логи. Старые сохранены в комментариях. Видимо некоторые (неинформативные) логи разработчики добавляли для быстрого дебага и не удаляли их.
- Пофикшены несколько багов в ai.obj, html. Также исправлены и задокумментированы некоторые баги оригинала (docs/SHIPPING_BUG_FIXES.md).
- Поддержка 152 EN клиента
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками Вход или Регистрация
. От 162 KOREA он отличается пакетами связанными со скиллами, сharinfo/userinfo и кажется еще парочкой других. Некоторые хай лвл скиллы могут не отображаться. Это из-за того, что 152 клиент про них не знает.Протестировано
Прокачка персонажей (квесты и т.д.), различные механики (репутация, monster book, инстансы, кланы, различные операции с предметами, алхимия, игра в группе и т.д.). Не протестированы осады, олимпиада. Там по-моему нужно основной сервер настроить как сервер обрабатывающий эти механики. Некоторые файлы в scripts содержат адреса peer серверов и по идее если указать локальный адрес, то должно сработать. Еще были написаны e2e тесты для всех ГМ комманд, поскольку они затрагивают множество механик.
Кстати, docs\builder\index.html содержит таблицу с описание всех поддерживаемых гм комманд. Поиск тоже работает.
Баги
Очевидно, что они есть. Были исправлены сотни ошибок реконструкции. Практически все связаны с обращением не к тому полю (например в машинном коде идет обращение к полю с оффсетом Х, а здесь к полю с оффсетом X+1). Но это легко правится.
Заключение
Я никогда не играл в ГОД+ и слышал много хейта в адрес мейна. Пока тестировал механики убедился насколько же все халтурно и убого сделано. Для меня самая большая ценность этого наверное в возможности использовать как основу для даунгреда до C4-HF, может быть для классики. Поддерживать репозиторий с этим кодом у меня сейчас нет времени, поэтому скорее всего и апдейтов никаких я постить не буду. Если кто-то захочет, то может быть создаст репозиторий в который все могли бы контрибьютить. Надеюсь, что это окажется полезным для Л2 коммьюнити, где к сожалению много закрытых/платных сборок.
Смотрите README.md и REQUIREMENTS.md где указано, что необходимо для компиляции.
Ссылка:
Вы не можете просматривать ссылку пожалуйста воспользуйтесь следующими ссылками Вход или Регистрация
Пароль: default_npc
Последнее редактирование:




















