Открыть список
Как стать автором
Обновить

Сборка Open Source GTA VC и GTA III в Linux

C++Разработка игр
Tutorial
image

Скорее всего нет тут такого человека, который бы не играл в GTA (или хотя бы не слышал о ней). Первая 3D версия серии вышла около 20 лет назад. Это была GTA III. Через год вышла GTA: Vice City. Несмотря на это, в эти игры до сих пор не только играют, но и создают моды. Эти игры портированы на множество платформ, но к сожалению, Linux (до недавнего времени) обошли стороной. Единственный вариант поиграть в Linux — был wine. Но недавно все изменилось.

Мне на глаза попалась новость — Разработчики закончили реверс-инжиниринг GTA III и Vice City и выпустили порты для разных платформ.

А так как я слежу за всем, что касается исходников (утечки, открытие и т.д.), а также люблю собирать софт из исходников — разумеется это я не мог проигнорировать. Из новости я понял, что энтузиасты опубликовали исходный код GTA III и GTA: VC. Моей радости не было предела. Я сразу же пошел на github за дополнительной информацией.

Основные улучшения (касательно miami):

  • Исправлено множество мелких и крупных багов.
  • Пользовательские файлы (сохранения и настройки), теперь хранятся в корневом каталоге GTA.
  • Настройки теперь хранятся в файле reVC.ini (в оригинале были в gta_vc.set).
  • Добавлено меню отладки (доступно по CTRL+M).
  • Свободная камера (Debug camera). CTRL+B — вкл/выкл. При включении камеру можно свободно перемещать во всей карте.
  • Убраны экраны загрузки между островами.
  • И некоторые другие исправления/улучшения, включая исправления для других платформ.

Примечание: эти параметры можно настроить в файле core/config.h. Некоторые параметры можно менять прямо в игре (используя отладочное меню), а для остальных потребуется пересборка.

Перейдем к самому интересному, а именно к сборке miami (GTA: VC).

Нам потребуются:

  • Дистрибутив Linux (Ubuntu, Debian, Mint, etc);
  • Оригинальные файлы (ассеты) с дистрибутива игры VC (в случае сборки GTA III — соответственно потребуются файлы GTA III).
  • GCC.
  • Некоторые библиотеки и заголовочные файлы.

В качестве ОС использую Linux Mint 19.3 (основа — Ubuntu 18.04 LTS). Установить компиляторы gcc можно так (если не установлены):

sudo apt install build-essential

Установка необходимых библиотек:

sudo apt install libopenal-dev libglew-dev libglfw3-dev libsndfile1-dev libmpg123-dev

Тут остановимся и рассмотрим поподробнее. Я вчера пол часа потратил на поиск решения проблемы компиляции из-за своей невнимательности. На GitHub четко указано, что версия библиотеки glfw должна быть не ниже 3.3, в то время как в репозиториях Ubuntu 18.04 — 3.2. Поэтому, если у вас дистрибутив построенный на Ubuntu 18.04 (или в репозитории версия библиотеки glfw ниже 3.3) — то данную библиотеку необходимо собрать из исходников. Но тут нет ничего сложного. Качаем архив github.com/glfw/glfw/releases/download/3.3.2/glfw-3.3.2.zip

Распаковываем в любую папку. Заходим в распакованную папку и выполняем следующие команды:

mkdir glfw-build
cd glfw-build
cmake -DBUILD_SHARED_LIBS=ON ../
make -j2
sudo checkinstall

Библиотека нужной версии установлена. Теперь клонируем репозиторий:

git clone --recursive -b miami https://github.com/GTAmodding/re3.git reVC

Это много времени не займет. После клонирования размер папки reVC около 120 МБ(из которых 70 МБ папка .git).

Далее идем в папку reVC и запускаем premake5Linux:

./premake5Linux --with-librw gmake2

Генерация фалов сборки займет пару секунд.
Примечание: Если вы используете архитектуру arm/arm64 — то вам нужно собрать утилиту premake5Linux из исходников, а потом запустить с параметром, указанном выше.

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

— 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

Думаю, из названий и так все понятно. Главное не перепутайте amd64 и arm64(я вчера ночью сонный недосмотрел, потом не мог понять, почему не происходит сборка).

Переходим в директорию reVC/build и запускаем make с вашей конфигурацией. В случае с debug-версией для amd64 нужно так:

make config=debug_linux-amd64-librw_gl3_glfw-oal

Компиляция происходит достаточно быстро. На моём старом ноутбуке (Asus X55A, Pentium B970 2x2.3 ГГц и 4 Гб памяти) сборка отладочной версии заняла 2 мин. 10 сек.(выходной файл = 30.4 МБ), релизной — 4 мин. 44 сек.(размер файла = 43,8 МБ). По своему опыту скажу, что во многих случаях — обычно все наоборот.

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

Копируем куда-нибудь оригинальную папку с GTA: VC (при желании, можно удалить все файлы из корня — они нам не понадобятся). Потом в папку с игрой копируем наш бинарник reVC. Теоретически, игру уже можно запускать, и даже играть. Но текст на некоторых пунктах меню будут неправильно отображаться:

image

Чтобы это исправить, копируем папки с заменой из reVC/gamefiles в папку с игрой. Правда, в таком случае, игра будет на английском языке.

Теперь пробежимся по меню отладки:

image

Чтобы включить, или выключить меню отладки — нажмите CTRL+M.

  • Cam — все, что связанно с камерой.
  • Cheats — Различные читы.
  • Debug — Отображение разной отладочной информации, позиции игрока, и т.д.
  • Debug Render — Можно скрывать или отображать различные объекты, транспорт, строения, пешеходов, показывать пути транспорта и пешеходов и т.д.
  • Game — Телепортация в любое место (предварительно нужно поставить метку на карте). Также можно запустить абсолютно любую миссию.
  • Particle — Не знаю что это такое.
  • Render — Некоторые fix'ы, настройка fps, графические настройки...
  • Spawn — Спаун транспорта.
  • Time & Weather — Настройка времени и погоды.

Сборка GTA III ничем не отличается, за исключением клонирования репозитория:

git clone --recursive https://github.com/GTAmodding/re3.git

Насчет модов: текстуры, скрипты, модели должны работать. А вот dll/asi, CLEO работать не будут. Некоторые возможности этих модов уже реализованы в re3, некоторые можно настроить в файле config.h.

Ссылки по теме:

github.com/GTAmodding/re3
Инструкция по сборке GTA III
Готовые бинарники reVC для Mac, Linux, Windows
Готовые бинарники re3 для Mac, Linux, Windows
Просмотр репозитория в Visual Studio Code

Lifehack: Если в ссылке на github изменить github.com на github1s.com, то репозиторий можно просматривать в удобном Visual Studio Code.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Хотите собрать данный проект?
29.83% Обязательно соберу! 71
34.03% Нет, скачаю готовые бинарники. 81
36.13% Нет, мне это не интересно. 86
Проголосовали 238 пользователей. Воздержались 54 пользователя.
Только зарегистрированные пользователи могут участвовать в опросе. Войдите, пожалуйста.
Вы играли когда либо в GTAIII и VC?
13.58% Играл, и сейчас играю 44
75.31% Раньше играл 244
11.11% Нет, только видел или слышал 36
Проголосовали 324 пользователя. Воздержались 23 пользователя.
Теги:gtagrand theft autoopen sourcereverse engineeringlinux
Хабы: C++ Разработка игр
Всего голосов 23: ↑23 и ↓0 +23
Просмотры13.5K

Комментарии 52

Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

Похожие публикации

Administrator Linux.Basic
24 апреля 202155 000 ₽OTUS
React.js. Разработка веб-приложений
26 апреля 202127 000 ₽Loftschool
Веб-разработка для начинающих
26 апреля 202125 000 ₽Loftschool
Administrator Linux. Professional
27 апреля 202189 000 ₽OTUS
C# Developer. Professional
30 апреля 202165 000 ₽OTUS

Лучшие публикации за сутки