Приватный сервер Ragnarok Online 2: Legend of the Second — пишу эмулятор сервера

Когда-то давно я немного играл в Ragnarok Online 2 — часов 20. Потом по какой-то причине забросил, не помню почему, и несколько лет вообще о ней не вспоминал.

Приватный сервер Ragnarok Online 2: Legend of the Second — пишу эмулятор сервера

Недавно решил снова зайти, скачал игру в Steam, запустил — в игру не пускает. Полез разбираться и обнаружил, что ещё в 2019 году разработка и дальнейшая поддержка Ragnarok Online 2 были прекращены.

Тогда я начал искать, может, уже существует какой-нибудь приватный сервер Ragnarok Online 2, на котором можно снова поиграть.

Но для Ragnarok Online 2: Legend of the Second / Advent of Valkyrie я не нашёл ни работающего private server, ни готового server emulator, который можно было бы просто взять и запустить.

Поэтому решил попробовать написать сервер сам.

Что я сейчас делаю

Сейчас занимаюсь reverse engineering клиента Ragnarok Online 2, который скачал с офф. сайта.

Официальный сервер недоступен, поэтому посмотреть настоящий обмен между клиентом и сервером уже нельзя. Поэтому мне приходится заниматься статическим разбором клиента(копаюсь в байтах).

Приватный сервер Ragnarok Online 2: Legend of the Second — пишу эмулятор сервера

Сейчас моя задача — восстановить RMI-протокол игры, то есть понять всю схему общения клиента с сервером:

--------------------------------------------------------------------------------------------------------------------------

что клиент отправляет → какие данные передаёт → какой ответ ожидает → что происходит дальше.

--------------------------------------------------------------------------------------------------------------------------

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

Что уже работает

🟢 Клиент подключается к моему серверу

🟢 Начальное соединение и вход

🟢 Проверка версии клиента

🟢 Получение списка серверов и каналов

🟢 Отображение заполненности каналов

🟢 Выбор канала

🟢 Переход к экрану персонажей

🟡 Список и создание персонажей — сейчас занимаюсь этим

Приватный сервер Ragnarok Online 2: Legend of the Second — пишу эмулятор сервера

Есть ещё отдельная часть сетевого взаимодействия через UDP. Её пока сознательно отложил — на текущем этапе она не мешает двигаться дальше.

Что предстоит

Сначала хочу восстановить по RMI весь путь до первого входа в игровой мир:

🔴 Получение списка персонажей

🔴 Создание персонажа

🔴 Выбор персонажа

🔴 Вход в игровой мир

После этого уже можно будет переходить от эмуляции протокола к нормальной серверной логике и собрать первый полноценный рабочий сценарий:

--------------------------------------------------------------------------------------------------------------------------

регистрация → логин → выбор сервера и канала → создание персонажа → вход в мир

--------------------------------------------------------------------------------------------------------------------------

На этом этапе появятся база данных, хранение аккаунтов и персонажей, проверки, валидация, сохранение и загрузка данных.

А дальше — непосредственно игровой мир:

🔴 Загрузка карты

🔴 Передвижение персонажа

🔴 NPC и мобы

🔴 Инвентарь и характеристики

🔴 Чат

🔴 Квесты и остальные игровые системы

То есть ближайшая большая цель — создать персонажа, выбрать его и впервые войти в игровой мир.
Кстати в планах ещё и русификатор сделать! — Но это, так сказать, наполеоновские планы:D

Стек

Пока стек небольшой, потому что сейчас основная задача — исследование протокола, а не разработка полноценного игрового сервера.

Server Emulator

  • C#
  • .NET

Reverse Engineering / инструменты

  • Ghidra
  • x32dbg
  • CDB
  • Python

Ghidra использую для статического анализа клиента и разбора RMI, x32dbg и CDB — для динамической отладки и проверки найденного уже на работающем клиенте.

Python использую для вспомогательных скриптов, анализа данных и автоматизации рутинной части reverse engineering.

База данных и остальная серверная инфраструктура появятся на следующем этапе. В качестве БД пока планирую PostgreSQL.

Где следить за разработкой

На DTF буду иногда выкладывать крупные результаты.

Текущий прогресс, небольшие находки, скриншоты и заметки по reverse engineering буду публиковать в Telegram:

1
1