Grand Theft Auto 3 и Grand Theft Auto: Vice City теперь полностью воссозданы с исходным кодом — этот амбициозный проект небольшой группы фанатов, над созданием которой работали годы.
Это означает, что исходный код обеих игр, созданный фанатами, теперь доступен на GitHub. Код может использоваться кем угодно, чтобы играть в обе игры на ПК — в надежде, что другие игроки воспользуются им и улучшат его дальше.
Re3 (декомпилированая GTA III) и reVC (декомпилированая GTA: Vice City) предлагают множество привлекательных улучшений по сравнению с оригинальными играми, в которые сегодня официально можно играть на ПК. Видео ниже демонстрирует работу и возможные изменения.
Были исправлены ошибки, доступно меню отладки и свободной камеры, мгновенная совместимость с текущими контроллерами, отсутствие экранов загрузки между островами и поддержка широкоэкранного режима с правильно масштабируемым HUD, меню и полем обзора, среди других улучшений. Есть даже улучшенные эффекты от версии для PS2. Re3 также включает карту Либерти-Сити в меню паузы — чего нет во всех оригинальных версиях GTA III.
Это захватывающее событие для субкультуры реверс-инжиниринга видеоигр, которая до сих пор избегала возмездия со стороны Rockstar Games и её материнской компании Take-Two Interactive.
«GTA с открытым исходным кодом, вероятно, была мечтой для многих из нас, фанатов GTA. Мы много лет внедряли наш код в игры для модификации, но, конечно, это утомительно, и вы всё ещё ограничены в том, что можете делать», — сказал Eurogamer руководитель проекта aap.
На протяжении многих лет было несколько попыток воссоздать GTA 3, приключенческий экшн 2001 года, разработанный DMA Design и опубликованный Rockstar Games.
Одна из таких попыток, получившая название Open ReWrite или OpenRW, активно развивалась, но теперь кажется бездействующей. Также были проекты, которые воссоздали Grand Theft Auto 3 в таких движках, как Unity и Unreal. Однако aap был больше заинтересован в обратном преобразовании оригинального кода в исходный код. В какой-то момент в 2016 году aap начал реверс-инжиниринг кода GTA 3 на временной основе, достигнув точки, в которой игрок мог летать по карте.
Затем aap сосредоточился на декомпиляции кода столкновений и физики, внедрив его в реальную игру для тестирования. Так начался проект re3. aap заменил функции оригинальной игры, пока всё не было заменено весной 2018 года.
«Я понятия не имел, будет ли когда-нибудь закончен этот проект», — пояснил aap. «В то время я всё ещё работал над этим в одиночку, но это казалось наиболее многообещающим путём к GTA с открытым исходным кодом».
Не следует недооценивать навыки, время и энергию, необходимые для декомпиляции видеоигры. Это непросто для профессионалов, не говоря уже об энтузиастах. Необходимо проработать огромное количество кода, и ошибки неизбежны, особенно если они не приводят к какому-либо очевидному неправильному поведению в игре. aap признает, что в коде re3 почти наверняка всё ещё есть ошибки, которые не являются оригинальными.
Тем не менее, это замечательное достижение. Проще говоря, вот как справились с этими проблемами app вместе с его командой:
«GTA 3 и Vice City изначально были написаны на C++», — поясняет aap. «Поставляемые скомпилированные исполняемые файлы представляют собой машинный код. Таким образом, общая задача — вернуться от машинного кода к C++».
«Машинный код можно (более или менее) сопоставить 1:1 в удобочитаемой форме, называемой языком ассемблера, но читать его по-прежнему очень утомительно».
«Возвращение к C++ — это ни в коем случае, не простое отображение 1:1, но за последние 10 лет или около того появились декомпиляторы, которые помогают в этом процессе».
«Итак, что мы обычно делаем, так это работаем с выводом декомпилятора и возвращаем его обратно в читаемый C++. Иногда это довольно просто, а иногда сложно, но в любом случае это много кода, и вы неизбежно совершаете ошибки».
К счастью, код GTA 3 для PS2 и Android включает символы отладки. Символы отладки содержат всю дополнительную информацию, необходимую для отладки игры в процессе разработки, но часто вырезаются для исполняемых файлов выпущенной игры, чтобы избежать раздувания [веса игры]. По какой-то причине Rockstar Games оставила эти символы, давая команде реверс-инжиниринга огромную фору.
«Нам очень повезло, что у нас были символы для игр», — говорит aap. «PS2 версия GTA 3 и все выпуски Android имеют имена для глобальных вещей (функций и глобальных переменных). Это было огромным подспорьем, и я не думаю, что без них мы были бы и близко к тому, чтобы полностью декомпилировать GTA».
На продолжительном видео ниже показан анализ кода мусора, который валяется на виртуальных улицах GTA 3.
aap перестал работать над re3 на год, затем возобновил работу весной 2019 года, а в мае 2019 года перенес работу на GitHub. В то время было добавлено около 15,000 строк кода.
Другие обратили внимание и присоединились к усилиям aap. После того, как во второй половине 2019 года работа застопорилась, в начале 2020 года проект возобновили, так как программисты обнаружили, что у них больше свободного времени из-за пандемии коронавируса. В апреле 2020 года команда re3 выпустила свой первый автономный исполняемый файл. Ядро команды составляло всего шесть человек.
Почему вообще выбрали GTA 3? «Это была первая игра той эпохи, самая маленькая (меньше кода на реверсирование), и она в целом понравилась всем в команде», — объясняет aap. После GTA 3 следующим логическим шагом стал Vice City. В конце концов, она очень похожа на GTA 3. reVC был запущен в начале мая 2020 года, а команда завершила его в декабре 2020 года.
Заглядывая в будущее, aap говорит, что хотел бы, чтобы физика игр была исправлена для высокой частоты кадров, и, если об этом позаботиться, мод виртуальной реальности «был бы крутым». Другой проект мог бы увидеть Renderhook, который обеспечивает трассировку лучей в GTA, перенесенный на re3. «Посмотрим…», — говорит aap.
Мы уже видели некоторые интересные незавершенные порты из re3, в том числе версии для Wii U, Nintendo Switch и PlayStation Vita. Видео ниже, от Modern Vintage Gamer, демонстрирует порт re3 для Nintendo Switch WIP:
«Порт Wii U определенно стал неожиданностью», — говорит aap. «Я думаю, что порт Android должен быть выполнен рано или поздно, но никто из команды не имеет никакого опыта работы с Android, поэтому, вероятно, это снова будет сторонняя компания».
«PlayStation 2 — это то, что я вожделею, потому что это оригинальная платформа для GTA, но я не вижу, чтобы кто-то, кроме меня, делал это (по крайней мере, у меня есть devkit для PS2). PS3 — это тоже то, что я хотел бы увидеть или даже сделать, но у меня нет времени (по крайней мере, у меня, опять же, есть devkit)».
В сообществе реверс-инжиниринга GTA сейчас напряжённые времена. Некоторым из программистов PS Vita, которые работали над re3 и reVC, удалось получить Android-версию Grand Theft Auto: San Andreas 2004 года, работающую на Sony PS Vita (она находится на GitHub/GTASA_VITA). Это не декомпилированный исходный код, но вдохновение, по словам aap, пришло непосредственно из возможности играть в GTA 3 и Vice City на Vita. Пока мы говорим, на Vita переносятся и другие игры для Android.
Естественно задаться вопросом, почему Take-Two и Rockstar не сказали хотя бы пару слов о его проектах. Для работы re3 требуются игровые ресурсы для ПК, поэтому вы должны владеть копией GTA 3. И aap подчеркивает на GitHub, что код следует использовать только в образовательных целях, в целях документации и модификации. «Мы не поощряем пиратство или коммерческое использование», — говорит aap.
Но Take-Two и Rockstar имеют репутацию сторонников радикального отношения к ремейкам фанатов и других, кто возится с их кодом. Команда беспокоилась о вмешательстве?
«Да, мы очень волновались по этому поводу и старались оставаться незамеченными как можно дольше», — говорит aap.
«Мы привлекли много внимания, когда произошел порт на Switch, но ничего от Take-Two. Мы восприняли это как знак того, что им всё равно (или они действительно слепы)».
aap и его команда считают тот факт, что проект обратного инжиниринга Super Mario 64 всё еще находится на GitHub/SM64, хорошим знаком, «потому что Nintendo в этих вопросах так же агрессивна, как Take-Two». Пока всё хорошо. Но как долго?
aap не ждёт, чтобы узнать. На очереди reLCS, проект обратного инжиниринга для игры Grand Theft Auto: Liberty City Stories 2005 года для PlayStation Portable. Работа над этим началась в январе 2021 года, и когда она будет завершена, это будет первый раз, когда у игры будет надлежащий порт для ПК.
А потом? Grand Theft Auto: Vice City Stories, которую aap описывает как «вероятно, святой Грааль GTA, обратного инжиниринга прямо сейчас». VCS добавила функции в LCS, но так и не увидела порта Android. Из-за этого в его коде нет символов. Обратный инжиниринг игры для PSP 2006 года — огромная проблема.
«Мы посмотрим, что мы можем с этим поделать, когда придет время», — говорит aap.
Источник: gta.com.ua