Существует немало игр, которые, к сожалению, из-за своего возраста очень трудно запустить на современных системах. Благо, есть народные умельцы, которые готовы исправить данную несправедливость и помочь владельцам современного железа насладится старыми проектами.
С одним из таких умельцев нам и удалсь пообщаться. Поскольку мы недавно начали публиковать историю компании Action Forms, то решили что вам будет интересно почитать наше интервью с парнем под ником Panzerschrek, который сделал source-порт игры Chasm: The Rift под названием PanzerChasm.

Как Вы познакомились с оригинальной игрой Chasm: The Rift? Что Вас больше всего в ней зацепило?
Познакомился с оригинальной игрой весной 2014-го года. Зацепили общая игровая атмосфера и техническое исполнение.
Атмосфера была достаточно своеобразной, впечатлил дизайн монстров, удивила смена тем в разных эпизодах игры. Техническое исполнение удивило совмещением грубого двухмерного лабиринта и трёхмерных моделей.
Как вам удалось сделать, своего рода, source-код, без исходников проекта в открытом доступе?
Удалось воссоздать игру, используя ряд методов обратной разработки.(Reverse-инжениринга)
Сначала я открыл в шестнадцатеричном редакторе файл данных игры, и заметил в нём ряд повторяющихся последовательностей. Это оказались строки таблицы файлов в своеобразном архиве, в каждой строке были имя файла, размер и смещение. Разобравшись со всем этим, я извлёк все файлы из игрового архива и начал разбираться с ними.
Более-менее разобравшись с форматом уровней я начал писать тестовое приложение, которым бы можно было посмотреть уровни.
Далее пришла очередь узнать о формате моделей. По формату статичных моделей *.3o я нашёл заметку в интернете, и смог разобрать данные моделей, в последствии дополнив описание формата.
После моделей остались совсем уж простые файлы – текстовые, с ними проблем не возникло.
Примерно через 10 дней изысканий у меня на руках была информация об устройстве большинства данных игры. Поразмыслив над всем этим, я пришёл к выводу, что написать заново код игры будет не сильно сложной задачей и приступил к ней.
Дальнейшая задача была на 90% тривиальной, хоть и требующей кое-каких трудозатрат. 90% усилий были направлены на написание кода обсчёта игровой логики и рисования результата на экране.

Оставшиеся 10% задачи составляло выяснение деталей оригинальной игровой логики — как насчитывается урон от оружия, как работает просчёт столкновений, как ведут себя монстры, как работают скрипты уровней. Всё это узнавалось экспериментальным путём, через запуск оригинальной игры и анализа происходящего в ней.
Часть знаний о логике была получена путём модификации данных уровней и монстров, с последующим анализом реакции оригинального исполняемого файла игры на эти модификации.
Всю работу делали самостоятельно, или была команда?
Почти всю работу выполнил я. Немного помогли в каких-то аспектах ряд форумчан (речь о посетителях форума gamedev.ru – прим.ред.) , чуть позже через github несколько добровольцев присылали исправления.
Контактировали ли вы с разработчиками оригинальной игры для решения тех или иных проблем?
Выйти на контакт с оригинальными разработчиками игры я не пытался. Спустя столько лет, я не надеялся, что разработчики что-то помнят, что я не смог бы выяснить методами обратной разработки.
Существенно помочь могло бы только полное открытие оригинального исходного кода, но надежды на это были весьма туманны в связи с давностью лет и неясностями с авторскими правами.

Возникали ли сложности с разработкой проекта? Если да, то какого плана они были?
Сложности были с распознаванием нюансов игровой логики. Я так до конца и не смог добиться местами поведения оригинальной игры, из-за чего ряд уровней всё ещё не проходим.
Ещё были сложности, преодолевать которые, я и не стремился. К примеру, я сознательно не стал даже разбираться с форматами сохранений и демок оригинальной игры, поскольку посчитал малозначительным поддержку старых форматов.
Поговорим немного о чем-то другом. Играете ли вы вообще в игры? Если да, то какие у вас самые любимые?
В игры конечно же играю. Предпочитаю, в основном, жанр шутеров от первого лица, но иногда играю в игры других жанров.
Любимые игры — Doom, Doom II, Quake, Quake II, Serious Sam. Из не-шутеров – Thief, Portal, Minecraft.
В основном я предпочитаю игры проверенные временем, в новинки особо не играю, предпочитаю играть в игры года так до 2006-го.
Часто ли хочется что-то улучшить в игре, что-то изменить?
Я играю в основном в такие игры, которые являются в некотором роде шедеврами, а значит изменить в них что-то — значит ухудшить. Поэтому в таких играх у меня и мыслей нету что-то менять.
В остальных играх бывают случаи, когда что-то явно раздражает, какой-то элемент игрового процесса, или какая-то деталь технической реализации. Но, обычно, в таких ситуациях изменить ничего не выйдет, приходиться смиряться с этим. В случае, когда не одному мне что-то не нравится, как правило уже существуют фанатские модификации, это что-то исправляющие.

Последние тенденции в игровой индустрии непрозрачно намекают, что крупные издатели не в восторге от того, что на их игры создают моды. Считаете ли вы такое отношение к модификациям и, в принципе, к фанатскому творчеству приемлемым?
Я резко порицаю любые поползновения правообладателей в сторону ограничения свободного творчества сообщества по созданию модификаций, реинкарнаций, ремейков и т. д. Я считаю, что такие действия правообладателей вредят сообществу игроков в угоду частной выгоде конкретного правообладателя.
Возвращаясь к PanzerChasm. Хотелось бы вам что-то улучшить в нем? Если да, то что именно?
Хотелось бы устранить в PanzerChasm непроходимость ряда оригинальных уровней. Проблема только в том, что не понятно пока, как это сделать.
Также можно было бы улучшить кое-какие незначительные элементы игры – Искусственный интеллект монстров, ряд графических эффектов и так далее.
Ещё, в PanzerChasm есть многопользовательский режим, который (насколько мне известно) так и не тестировался в должной мере. Вполне возможно, что там есть что поправить и улучшить.
Хотели ли вы создать собственную игру (или же, вы её уже создали)?
Я уже создал ряд игр. На первых курсах института я, как и все, создал свои версии игр типа “Змейка” и “Тетрис”.
На конкурсы 64k, 96k, 32k игр на GameDev.ru я создал ряд игр с генерируемым контентом. Относительно недавно, в декабре 2018-го года, я участвовал в местной сходке игроделов, на которой написал простенькую игру про дилемму вагонетки.
Но, в целом, именно что разработчиком игр в полном понимании этого термина я себя не считаю. Я по профессии программист и могу закодить какую-то игру, но не могу разработать оригинальной игровой механики и уж тем более не могу наполнить игру содержимым (спрайтами, моделями, текстурами и т. д.). Желание собираться с кем-то, кто это всё может, у меня особо нету.

Что можете пожелать начинающим мододелам и разработчикам?
Хочется пожелать игроделам и мододелам всяческих успехов в их начинаниях.
Но я хотел бы предостеречь их от преждевременных попыток коммерциализации. Подумайте, действительно ли ваша игра интересна или уникальна, чтобы пользователь захотел играть именно в неё, или же вы своей игрой лишь расширите свалку поделок в Steam / GooglePlay.
Благодарим Panzerschrek за интервью и желаем успехов в его деятельности!
Скачать PanzerChasm можно тут. Как уже было сказано ранее, source-порт ещё не полностью готов, но уже можно поиграть в игру на разрешениях выше 1024х768 и оценить улучшеную производительность.
А еще, обязательно посмотрите первую часть истории компании Action Forms, если не сделали этого раньше. Ведь вторая часть уже на подходе!