L2OFF Decompiled Sources (Salvation: The Gathering / Orfen - 152/162)

~RosT~

Знаменитый
Участник
Старожил I степени
Легенда Истоков
Сообщения
17
Розыгрыши
0
Репутация
283
Реакции
73
Баллы
1 275
Несколько лет назад были выложены бинарники разных версий Л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 клиента . От 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
 
Последнее редактирование:
Несколько лет назад были выложены бинарники разных версий Л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 клиента . От 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
Царский подгон, спасибо
 
Чертов ты красавец, доделал то, на что у меня сил не хватило (заебался бороться с блокировками копилота еще в мае месяце, разобрал 50-60% л2сервера)
 
Царский подгон, спасибо
 
Мощь
 
Красавчик, но очень много расхождений с оригиналом прям очень.
П.С В больших классах на тысячи и десятки тысяч.
 
Последнее редактирование:
rly crazy works.like ~RosT~ said... Perhaps the greatest value of this project lies in its potential to serve as a foundation for "downgrading" and converting it into C4 – HF version, or even a "Classic" version.

BTW,how to compile this project?VS version?
 
compile mingw, it is crossplatform, linux and postgre sql too, read docs inside archive
 
I don't know if this is the right place, but I'm sending a shout-out to MasterToma, haha.
 
Красавчик, но очень много расхождений с оригиналом прям очень.
П.С В больших классах на тысячи и десятки тысяч.
Привет, спасибо) Если скажешь где именно ты нашел расхождения (например, классы или методы), то можно перепроверить.
И с чем ты сравниваешь? Ты делал разбор в ИДА или у тебя есть доступ к исходникам?
 
With advancements in reverse engineering, it might be possible to reverse-engineer the Lineage 2 client for x64.
 
With advancements in reverse engineering, it might be possible to reverse-engineer the Lineage 2 client for x64.
I do this here https://mmo-dev.info/threads/cruma-lineage-2-world-viewer-radar-map-generator.38707 but only to get info on how certain materials/objects are rendered. I believe that reverse engineering the whole client is completely doable today.
Сообщение объединено:
Чертов ты красавец, доделал то, на что у меня сил не хватило (заебался бороться с блокировками копилота еще в мае месяце, разобрал 50-60% л2сервера)
Модели от openai очень сговорчивы в этом плане) модели от anthropic могут выделываться, но там можно наврать о целях. А если уже есть хоть что-то разобранное, то они продолжают без вопросов. Или под блокироваки ты имел в виду лимиты? Мне пришлось оформить 5-6 200$ подписок чтобы работа не останавливалась.
 
а есть рабочий или тестовый сервер основанный на этом проекте?
 
I do this here https://mmo-dev.info/threads/cruma-lineage-2-world-viewer-radar-map-generator.38707 but only to get info on how certain materials/objects are rendered. I believe that reverse engineering the whole client is completely doable today.
Сообщение объединено:
Модели от openai очень сговорчивы в этом плане) модели от anthropic могут выделываться, но там можно наврать о целях. А если уже есть хоть что-то разобранное, то они продолжают без вопросов. Или под блокироваки ты имел в виду лимиты? Мне пришлось оформить 5-6 200$ подписок чтобы работа не останавливалась.
они каким то образом узнавали что я из россии использую их сервис(github copilot) хотя пользовался vpn. и аккаунты, которые после оплаты работали всего 4-7 дней блокировались. потом использовал курсор, но он очень быстро сьедал лимиты на топ моделях, что было очень не выгодно, по сравнению с copilot
 
а есть рабочий или тестовый сервер основанный на этом проекте?
Я только локально поднимал для тестирования. Может быть кто-то другой поднимет тестовый сервер. Я бы не рисковал запускать реальный проект на текущем этапе. Нужно много тестирования и баг фиксов.
 
Ну у меня был прикол, что именно рестор в исходный код вызывал пипец какие галюцинации. Из-за чего я пошел по пути восстановления самого .ida файла, чтобы даже если что-то проебется, по контексту было видно где и как.
 
еще такой вопрос: sql файлы нашел в папках AuthD (3) и Cached (203). это полный комплект проекта, или остальное нужно через ии генерировать? также возможно если запустишь тестовый, люди помогут с репортами.
 
еще такой вопрос: sql файлы нашел в папках AuthD (3) и Cached (203). это полный комплект проекта, или остальное нужно через ии генерировать? также возможно если запустишь тестовый, люди помогут с репортами.
Полностью поддерживаю!
 
Назад
Сверху Снизу