Неофициальный порт Grand Theft Auto V запустили прямо в браузере

Энтузиасты представили неофициальный порт Grand Theft Auto V, который позволял запускать игру непосредственно в браузере. Проект playgta5.com не использовал стриминг или удалённую трансляцию: игра была скомпилирована под WebAssembly и выполнялась на устройстве пользователя.
В порте заявили два режима. В сюжетном можно было пройти основную историю, а в режиме песочницы — свободно перемещаться по Лос-Сантосу, управлять автомобилями, участвовать в перестрелках и выполнять другие игровые действия. Впрочем, долго проект не просуществовал: спустя несколько часов сайт стал недоступен.
Как работал браузерный порт
Принцип работы проекта объяснил разработчик и популяризатор браузерного гейминга и эмуляции Никита Аксёнов, известный в сети как @Carter54. По его словам, за основу взяли утёкший ранее исходный код версии Grand Theft Auto V для ПК и PlayStation 4, после чего скомпилировали его почти без изменений под WebAssembly.
В основе порта использовался оригинальный движок RAGE в отладочной сборке. В коде сохранились даже пути к файлам на компьютерах разработчиков, присутствовавшие в полученных исходных материалах. При этом речь не шла о полноценной оптимизированной браузерной версии: проект требовал значительных ресурсов и был рассчитан на современное оборудование.
Для вывода графики применили WebGPU. Поскольку исходная версия игры рассчитана на DirectX 11, разработчикам пришлось создать специальную прослойку. Она перехватывала команды рендеринга, которые игра отправляла бы графическому API на ПК, и передавала их браузерному WebGPU.
Высокие требования и сохранённые технологии
Порт работал на архитектуре wasm64, использовал многопоточность через pthreads и мог требовать от 3 до 16 ГБ оперативной памяти. Такая конфигурация заметно отличает проект от обычных браузерных игр и показывает, насколько ресурсоёмким оказался перенос крупного консольного проекта.
Внутри сохранились ключевые технологии оригинальной Grand Theft Auto V, включая физическую систему Euphoria, интерфейсы Scaleform и звуковую подсистему. Из игры убрали только видеоролики в формате Bink Video.
Загрузка игровых файлов выполнялась по HTTP, а сохранения и обработка ввода с клавиатуры и мыши были реализованы средствами JavaScript. Для воспроизведения звука использовался AudioWorklet. Несмотря на короткое время доступности, проект продемонстрировал, что современные браузерные API позволяют запускать в веб-среде значительно более сложные игры, чем это было возможно раньше.


