Arrowgene.DragonsDogmaOnline
Arrowgene.DragonsDogmaOnline — это не просто гитхаб-репозиторий. Нет, это целый цифровой некромантский ритуал, попытка кучки энтузиастов с ЧСВ размером с грифона воскресить давно почившую японскую MMORPG Dragon’s Dogma Online. Зачем? Ну, официально — «for educational purpose only». Мы-то знаем, что истинная цель — утолить ностальгический зуд и дать олдам ещё один шанс погриндить мобов в графоне эпохи PS3, только теперь на самопальных серверах с блекджеком и багами.
Суть происходящего[править]
Capcom, будучи верной себе корпорацией добра, в 2019 году выдернула шнур из розетки серверов DDO, оставив толпы рыцарей и волшебниц с разбитыми сердцами и недокачанными пешками. Но свято место пусто не бывает, и нашлись добровольцы, решившие, что «можем повторить». Возглавляемые неким sebastian-heinz и подкреплённые легионом камрадов вроде pacampbell и Ando, эти титаны мысли принялись ковыряться в кишках клиентского кода, дебажить сетевые пакеты и изобретать сервер с нуля.
Используя модные технологии типа .NET 9.0 и C# 13 (потому что зачем воскрешать старьё на старье, верно?), ребята ваяют эмулятор, способный заставить клиент игры поверить, что он снова дома. Тут тебе и веб-сервер для скачки файлов (порт 52099), и логин-сервер (52100), и, собственно, гейм-сервер (52000). Всё это можно запустить хоть на Windows, хоть под Linux, и даже упаковать в Docker-контейнер, выбирая между SQLite (для нищебродов и тестов), MariaDB или PostgreSQL (для серьёзных парней). Настоящий конструктор «Сделай сам себе MMO».
Что имеем на практике[править]
А на практике имеем вечный альфа-тест, как и положено любому фанатскому проекту такого масштаба. Судя по тикетнице на Гитхабе, лулзы не заставляют себя ждать:
- Десинки! О, эти сладкие десинки. Твой хилер (Spirit Lancer) кастует Cure Glasta (Issue #715)? Молодец! Вот только остальные члены пати из-за лагов могут не увидеть ни анимации, ни спасительного круга, и продолжат подыхать. Скиллы вообще любят глючить в пати, особенно если ты не лидер (Issue #639). Кастуешь огненный шар? На твоём экране — эпичное файершоу. На сервере и у лидера — тишина и пустота, урон не проходит. Фикс? Распустить пати и собрать заново после того, как все выучили новые скиллы. Гениально!
- Бессмертие (почти)! Таймер на бесплатные воскрешения (ревайвы) хранится… в памяти сервера (Issue #529). Перешёл на другой инстанс? Поздравляем, таймер сбросился! Можно абузить систему и воскрешаться чаще, чем задумано. Фича!
- Информативные ошибки! Клиент вылетает с сообщением вроде `ERROR_CODE_GP_CAPTOGP_USECAPEXECUTE_SESSIONKEY_API_FAILED`? Понятно же, что проблема с сессионным ключом API для внутриигрового магазина, которого тут и нет (Issue #610). Разрабы даже подумывают сделать ошибки более многословными. Ждём сообщений на пол-экрана.
- Прогресс по-васянски! Механика «Contents Released» (разблокировка фич по мере прохождения квестов) реализована… ну, скажем так, креативно (Issue #544). Игрокам по дефолту доступно почти всё, так что можно сломать последовательность, варпнуться из стартовой локации или нанять пешек раньше времени, вызывая у игры недоумение и новые баги.
Несмотря на всё это, проект живёт и развивается. Энтузиасты пилят квесты (Issue #686), добавляют сезонный контент, механики прокачки (Issues #684, #685) и вообще всячески стараются приблизить эмулятор к ванильному состоянию. Список участников впечатляет — тут и реверсеры, и кодеры, и просто неравнодушные. Даже гайдлайны по кодингу и Git-флоу завезли — всё по-взрослому.