R

re3

Категория проекта: Ожидает модерации
re3 logo

Build Status

Введение

Попытка сохранить исходный код недоступного на github проекта

В этом репозитории можно найти весь обратный исходный код для GTA III (master branch) и GTA VC (miami branch).

Он был протестирован и работает в Windows, Linux, MacOS и FreeBSD на x86, amd64, arm и arm64.
Рендеринг может выполняться либо исходным RenderWare (D3D8), либо его переработанной версией librw (D3D9, OpenGL 2.1 или выше, OpenGL ES 2.0 или выше). Звук воспроизводится с помощью MSS (используются библиотеки dll из исходной GTA) или OpenAL.

Проект был также перенесен на Nintendo Switch, Playstation Vita и Nintendo Wii U.

Мы пока не можем выполнить сборку для PS2 или Xbox. Если вы заинтересованы в этом, свяжитесь с нами.

Установка

  • Для работы re3 требуются игровые ассеты для ПК, поэтому вы обязательно должны иметь копию of GTA III.
  • Соберите re3 или загрузите сборку:
  • Извлеките загруженный архив в директорию GTA 3 и запустите re3. Архив включает в себя исполняемый файл, обновленные и дополнительные игровые файлы, а в случае OpenAL требуемые библиотеки dll.

Скриншоты

re3 2021-02-11 22-57-03-23 re3 2021-02-11 22-43-44-98 re3 2021-02-11 22-46-33-76 re3 2021-02-11 22-50-29-54

Улучшения

Мы внедрили ряд изменений и улучшений в оригинальную игру. Они могут быть настроены в core/config.h. Некоторые из них можно включать и выключать во время выполнения, а некоторые нет.

  • Исправлено множество мелких и крупных ошибок
  • Пользовательские файлы (сохранения и настройки) хранятся в корневой директории GTA
  • Настройки хранятся в файле re3.ini вместо gta3.set
  • Меню отладки для выполнения и изменения различных вещей (для открытия нажмите Ctrl-M)
  • Отладочная камера (для переключения нажмите Ctrl-B)
  • Поворачивающаяся камера
  • Поддержка контроллера XInput (Windows)
  • Отсутствие загрузочных экранов между островами («использование памяти карты» в меню)
  • Поддержка скинированных педов (модели с Xbox или Mobile)
  • Рендеринг
    • Поддержка широкоформатных экранов (правильно масштабированные HUD, меню и FOV)
    • PS2 MatFX (отражения на автомобилях)
    • Альфа-тест PS2 (лучший рендеринг прозрачных текстур)
    • Частицы PS2
    • Рендеринг автомобилей Xbox
    • Рендеринг карты мира Xbox (требуется карта Xbox)
    • Световая подсветка Xbox
    • Капли дождя на экране Xbox
    • Более настраиваемый цветовой фильтр
  • Меню
    • Карта
    • Больше опций
    • Меню конфигурации контроллера
    • ...
  • Можно загружать DFF-файлы и TXD-файлы с других платформ, что может повлиять на производительность
  • ...

Предстоящие задачи

Было бы неплохо иметь или сделать следующее:

  • Исправить физику для высоких значений FPS
  • Повысить производительность на устройствах с низкими характеристиками, особенно в OpenGL на Raspberry Pi (если у вас есть соответствующий опыт, свяжитесь с нами)
  • Сравнить код с кодом PS2 (трудно, хорошего декомпилятора нет)
  • Порт для PS2
  • Порт для Xbox (менее важно)
  • Выявить неиспользуемые или отладочные функции
  • Сравнить сборку CodeWarrior с исходным двоичным файлом для более точного кода (очень трудоемко)

Моддинг

Как правило, модификации ассетов (модели, текстуры, обработка, скрипты и т. д.) должны работать так же, как и в оригинальной GTA.

Скрипты CLEO работают с CLEO Redux.

Моды, которые изменяют код (dll/asi, limit adjusters) не будут работать.. Некоторые вещи, которые делают эти моды, уже внедрены в re3 (большая часть SkyGFX, GInput, SilentPatch, Widescreen fix), другие можно легко реализовать (увеличение лимитов, см. config.h), а другие придется переписывать и интегрировать непосредственно в код. Извините за неудобства.

Сборка из исходного кода

При использовании premake вы можете указать переменную среды GTA_III_RE_DIR в корневую папку GTA3 , чтобы исполняемый файл перемещался туда с помощью сценария после сборки.

Чтобы клонировать репозиторий, используйте команду git clone --recursive https://hub.mos.ru/msapik/re3.git. Затем в клонированном репозиторий перейдите в директорию cd re3.

Linux Premake

Чтобы использовать Linux Premake, сделайте следующее: Building on Linux

Linux Premake(МОС 12, ROSA Linux)

Чтобы использовать Linux Premake, сделайте следующее: Building on Linux

Подробнее на русском языке про сборку в Linux

sudo dnf in git lib64glew-devel lib64glfw-devel lib64openal-devel lib64mpg123-devel lib64sndfile-devel
git clone --recursive https://hub.mos.ru/msapik/re3
cd re3
./premake5Linux --with-librw gmake2
cd build

Для сборки доступны следующие конфигурации:

  • debug_linux-x86-librw_gl3_glfw-oal
  • debug_linux-amd64-librw_gl3_glfw-oal
  • debug_linux-arm-librw_gl3_glfw-oal
  • debug_linux-arm64-librw_gl3_glfw-oal
  • release_linux-x86-librw_gl3_glfw-oal
  • release_linux-amd64-librw_gl3_glfw-oal
  • release_linux-arm-librw_gl3_glfw-oal
  • release_linux-arm64-librw_gl3_glfw-oal
make config=debug_linux-amd64-librw_gl3_glfw-oal

Если компиляция прошла без ошибок, то в папке re3/bin/ваша_конфигурация/Debug_или_Release/ будет бинарник re3. Копируем бинарник в папку оригинальной GTA3 и запускаем.

Linux Conan

Установите python и conan, а затем запустите сборку.

conan export vendor/librw librw/master@
mkdir build
cd build
conan install .. re3/master@ -if build -o re3:audio=openal -o librw:platform=gl3 -o librw:gl3_gfxlib=glfw --build missing -s re3:build_type=RelWithDebInfo -s librw:build_type=RelWithDebInfo
conan build .. -if build -bf build -pf package
MacOS Premake

Чтобы использовать MacOS Premake, сделайте следующее: Building on MacOS

FreeBSD

Чтобы использовать FreeBSD Premake, сделайте следующее: Building on FreeBSD

Windows

Если у вас есть Visual Studio 2015/2017/2019:

  • Запустите один из вариантов premake-vsXXXX.cmd в корневой папке.
  • Откройте build/re3.sln с помощью Visual Studio и скомпилируйте решение.

Microsoft недавно прекратила распространение DX9 SDK. Вы можете загрузить архивную версию здесь: https://archive.org/details/dxsdk_jun10

Если вы выбрали OpenAL в Windows Вам необходимо ознакомиться с разделом Running OpenAL build on Windows.

В premake есть опция --with-lto, если вы хотите, чтобы проект был скомпилирован с параметром Link Time Optimization.

В config.h есть различные настройки, которые могут быть вам полезны.

re3 использует полностью самописный движок рендеринга вместо RenderWare; librw. librw предоставляется как подмодуль re3, но вы также можете использоваnь переменную окружения LIBRW для указания пути к своему собственному librw.

Если вам это необходимо, вы также можете использовать CodeWarrior 7 для компиляции re3 с помощью прилагаемого проекта codewarrior/re3.mcp — для этого требуются оригинальные библиотеки RW33 и пакет SDK DX8. Однако сборка является нестабильной по сравнению со сборками MSVC и предназначена в основном в качестве справочного материала.

Вклад

Весь код в репозитории, который не указан в препроцессоре (например, FIX_BUGS), является полностью обратным кодом из оригинальных двоичных файлов.

Мы не принимаем пользовательский код, если он не завернут в препроцессор, или если это не подсистема Linux/кроссплатформенная подсистема или уровень совместимости.

Мы принимаем только такие запросы на перенос:

  • Новое улучшение, которое существует как минимум в одной из GTA (если оно отсутствовало в III/VC, то оно не должно быть декомпиляцией)
  • Исправления ошибок в игре, интерфейсе пользователя или пользовательском опыте (если это исправление оригинального кода, оно должно быть указано в FIX_BUGS)
  • Платформозависимый и/или неиспользуемый код, который еще не был обращен
  • Увеличение понятности или точности обратного кода, например, «какой код создал бы эту сборку».
  • Новые кроссплатформенные подсистемы/уровни совместимости или их улучшения
  • Исправления перевода для языков, которые поддерживались в оригинальной игре
  • Код, повышающий удобство поддержки

У нас есть документ Coding Style , который на самом деле не соблюдается и не поддерживается должным образом.

Не используйте возможности C++11 или более поздних версий.

История

Работа над re3 началась где-то весной 2018 года, изначально в качестве способа протестировать обратный код столкновений и физики внутри игры. Это было сделано путем замены отдельных функций игры их обратными аналогами с помощью библиотеки dll.

После некоторой работы проект бездействовал около года, а в мае 2019 года его возобновили и выложили на github. В то время я (aap) обратил около 10 тыс. строк кода и предположил, что в финальной версии игры будет около 200-250 тыс. строк. Вскоре к проекту присоединились другие (Fire_Head, shfil, erorcun и Nick007J в хронологическом порядке, а немного позже — Serge) и мы добились очень быстрого прогресса в течение лета 2019 года, после чего темп немного снизился.

Из-за того, что в начале пандемии коронавируса все оставались дома, у всех появилось много времени, чтобы снова поработать над re3, и в апреле 2020 года мы, наконец, получили отдельный исполняемый файл (тогда в нем было около 180 тыс. строк кода).

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

После этого мы начали работать над reLCS, который в данный момент находится в разработке.

Лицензия

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