Игры Никита Лосев
8 203

Программист потратил более тысячи часов на реверс-инжиниринг исходного кода Diablo

При этом он повторил все баги и спорные решения для лучшей совместимости.

В закладки

Разработчик под ником GalaxyHaxz на днях опубликовал на GitHub версию исходного кода оригинальной Diablo 1996 года, полученную с помощью реверс-инжиниринга — для этого он исследовал уже готовую программу и обрывочные сведения, добытые другими пользователями сети. Подобный метод применяется, когда авторы оригинальной программы не предоставил открытую информацию о её создании.

В общей сложности GalaxyHaxz провёл за работой более 1200 часов на протяжении периода от шести месяцев до года. Сам он заявил, что просто хотел «сохранить» исходный код на будущее.

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

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

Из-за этого многие разработчики оставались с наполовину завершёнными модификациями, полными нераскрытого потенциала и багов, несмотря на потраченное на них время. Devilution должна это исправить, предоставив всем свободный доступ к коду.

GalaxyHaxz также объяснил, что его целью было как можно точнее повторить функции оригинального исходного кода, включая в том числе и все баги и не самые логичные решения, чтобы сделать проще разработку будущих обновлений и портирование на другие платформы.

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

В конце 2016 года сотрудники студии Blizzard сделали полноценную копию оригинальной Diablo в третьей части серии, добавив её в специальном патче. Тогда игроки получили 16 уровней, четырёх главных боссов игры, а также особый графический фильтр, который делал картинку похожей на аналог из 1996 года.

#diablo

{ "author_name": "Никита Лосев", "author_type": "editor", "tags": ["diablo"], "comments": 28, "likes": 81, "favorites": 10, "is_advertisement": false, "subsite_label": "games", "id": 21740, "is_wide": false }
{ "id": 21740, "author_id": 5402, "diff_limit": 1000, "urls": {"diff":"\/comments\/21740\/get","add":"\/comments\/21740\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/21740"}, "attach_limit": 2, "max_comment_text_length": 5000 }

28 комментариев 28 комм.

Популярные

По порядку

Написать комментарий...

Denis Shiryaev

52

Люблю такие проекты, не ясно зачем, почему, но проделана титаническая работа, поставил звездочку на гитхабе

Ответить

Никита Лосев

Denis
5

Когда у нас на DTF появится своя веб-версия по аналогии с Думом? :)

Ответить

Denis Shiryaev

Никита
4

Я после перезапуска даже Doom проверял, работает, хоть и стили побились :)

Я не знаю, я думал поле чудес должно стать следующим, оно ближе к народу

Ответить

Владимир Стародубов

Denis
0

Игра то сама работает, а что вокруг - сломалось.
(адблок выключал, всё так же)

Ответить

Denis Shiryaev

Владимир
2

Лень ковырять было, починим как-нибудь :)

Ответить

killadelphia

Denis
6

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

Ответить

Мария Брэдбери

Denis
1

не ясно зачем

Во-первых, как уже сказали, это довольно крутой проект для портфолио. Во-вторых, его реверс-инжиниринг облегчит работу ВСЕМУ моддерскому коммьюнити Дьяблы - гораздо легче работать с кодом игры, когда он опенсорс. Готовьтесь к потоку новых модов для Д1)

Ответить

Дмитрий Гулюта

Мария
8

Собственно тут и возникает вопрос - а зачем моды на Д1? Если и брать "ностальгию" то в этом плане все же вторая часть для подавляющего большинства "канон"

Ответить

Мария Брэдбери

Дмитрий
7

Есть заметная прослойка игроков, предпочитающих именно первую часть, и я в их числе.

Ответить

ivdok

Мария
1

Ну и как бонус - порты на OSX/Linux/*BSD.., и производные, а так же (в теории) на отличные от х86 архитектуры, но если автор порта идеально отреверсил игру, то возможно там осталось очень много платформозависимого кода, который надо переписать.

Ответить

Денис Файзулин

Мария
0

а близзы не забанят за такое ?

Ответить

Edvins Antonovs

Denis
0

Где-то читал, что у него депресуха вроде была, вот так пытался справится с ней

Ответить

Vladimir Yelovsky

10

"В конце 2016 года сотрудники студии Blizzard сделали полноценную копию оригинальной Diablo в третьей части серии"
Ничего полноценного там не было. Просто фильтр налепили и боссов добавили. Все подземелья генерировались на основе третьей части

Ответить

Данила Урусов

0

А как игрануть в версию от Близзов для Д3?

Ответить

Ваня Долгих

Данила
11

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

Ответить

Сергей Токарев

Ваня
0

расстроился и отменил установку третьей Дьяблы

Ответить

Роман Величкин

Данила
1

Ее запустили в годовщину Д1. Все думали, что это уникальный эвент. Но потом ее запускали ещё раз. Поскольку в Д3 теперь есть ачивки на этот эвент, то Д1 будут запускать время от времени. Следи за описаниями сезонов - там всегда сообщают.

Ответить

Эралорфин Статут

1

Парфёнов Серёжа, анус себе заминуси. Ощущение, что на рандомные комменты минус лепит.

З.Ы.: Извините, не удержался.

Ответить

Ваня Долгих

0

На новогодних праздниках играл в мод The Hell, который по сути переизобретал игру и ее аддон Hellfire (который был одним большим багом), полный ребаланс и багфикс. Кстати, сделан русским моддером. Теперь ему будем проще, я надеюсь.

Ответить

Эралорфин Статут

Ваня
3

Зачем? Есть же уже TheHell2 с полноценно перебранным двиглом. Пока, правда, в тестовой версии, но уже достаточно стабильной.

Ответить

Ваня Долгих

Эралорфин
0

Я настолько не заморачивался, решил поиграть в стабильный релиз. Вообще все началось с того что я просто подумал о том что никогда не играл в аддон и понеслось...

Ответить

Potus

1

Есть подобный проект по игре Blood, называется BloodGDX
Делает российский разработчик.

Ответить

Nikita Savyolov

0

Больше на прямое декомпилирование похоже, думаю, за такое и прилететь может

Ответить

ivdok

Nikita
0

На Хабре была похожая новость, там написано было, что использовался diablo.exe с отладочными символами, который разработчики забыли в ресурсах игры, и плюс утечки из порта на PSX (но их правовой статус сомнительный. Но благодаря пункту выше, факт использования информации из утечки ещё доказать надо).

Ответить

Nikita Savyolov

ivdok
0

Судя по коду, это тупо причёсанный копипаст из декомпилятора иды, за это точно должно прилететь, т.к. это не ревёрс

Ответить

ivdok

Nikita
0

По сути, такая же ситуация, как и с другими портами, вроде OpenMW:

Under the DMCA, reverse-engineering has exceptions for the purpose of documentation and interoperability. Devilution provides the necessary documentation needed to achieve the latter. However, it falls into an entirely grey area. The real question is whether or not Blizzard deems it necessary to take action.

Activision King больше не продают дьяблу, а репозиторий не содержит ассеты, так что юридический нарушений нет, есть только сомнения в чистоте реверса.

Ответить

Комментарий удален

Денис Сушко

0

Видно, что код написан не человеком, а после компилятора. Порадовала функция на 2к строк в одном из файлов

Ответить

ivdok

Денис
0

Interoperability, чо. Плюс автор писал, что "хочет максимально сохранить оригинал". Вангую появление форка а-ля "Chocolate Doom", в котором все ляпусы декомпилятора и легаси-код причешут.

Ответить
0

Прямой эфир

Подписаться на push-уведомления
[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } } ]