Skip to content

[RU] Как собрать движок на Linux

Xottab_DUTY edited this page Jan 13, 2021 · 55 revisions

Этап 1.

  • Установка зависимостей
  • Получение исходников.

Этап 2.

  • Настройка проекта
  • Компиляция

Этап 3.

  • Установка
  • Сборка пакета для Debian/Ubuntu
  • Сборка пакета для ArchLinux/Manjaro
  • Пользовательские репозитории
  • Игровые ресурсы
  • Портативная установка

Возможные проблемы

Известные баги и ошибки.


На текущий момент поддерживаются только компиляторы GCC8, GCC9, GCC10, однако, ниже предусмотрены инструкции по сборке в GCC7.

Для работы также необходимо, чтобы ваша система поддерживала OpenGL 4.1.

Этап 1.

Установка зависимостей и получение исходников.

Для установки всех необходимых пакетов для сборки движка выполните:

  • Для Debian/Ubuntu
sudo apt install git cmake make libglew-dev libfreeimage-dev liblockfile-dev libopenal-dev libtbb-dev libcrypto++-dev libogg-dev libtheora-dev libvorbis-dev libsdl2-dev liblzo2-dev libjpeg-dev libncurses5-dev libreadline-dev gcc g++ libfreeimageplus-dev libfreeimageplus3 dpkg-dev
  • Для Fedora/CentOS
sudo dnf install git cmake make gcc gcc-c++ glew-devel pcre-devel pcre2 freeimage-devel freeimage-plus-devel liblockfile-devel openal-devel tbb-devel cryptopp-devel libogg-devel libtheora-devel libvorbis-devel SDL2-devel lzo-devel libjpeg-turbo-devel readline-devel
  • Для ArchLinux/Manjaro
sudo pacman -S gcc git cmake make libglvnd libjpeg6-turbo ncurses pcre2 pcre glew sdl2 openal intel-tbb crypto++ liblockfile freeimage libogg libtheora libvorbis lzo lzop libjpeg-turbo

Для получения исходников выполните:

git clone https://github.com/OpenXRay/xray-16.git --recurse-submodules

Этап 2.

Настройка проекта

  • перейдите во внутрь локального репозитария и создайте в нём каталог для сборки, название каталога не имеет значения но обязательно на Английском языке рекомендуется bin или build (далее в примере будит использоваться папка bin) в терминале будет проще
cd xray-16 && mkdir bin && cd bin

находясь в каталоге bash xray-16/bin настройте проект выполнив:

  • Для Debian/Ubuntu
cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_BINDIR=/usr/games
  • Для Fedora/CentOS
cmake .. -DCMAKE_INSTALL_LIBDIR=lib64 -DCMAKE_INSTALL_PREFIX=/usr
  • Для ArchLinux/Manjaro
cmake .. -DCMAKE_INSTALL_PREFIX=/usr

! Если вы планируете собрать пакет перейдите к разделу Установка

  • Портативная (переносная) установка

! Если вы не планируете устанавливать движок в систему

cmake ..

Дополнительные параметры которые можно указать при настройке

! За более подробной информацией обратитесь к документации вашего дистрибутива.

DCMAKE_BUILD_TYPE - Тип сборки может быть равен:

  • Release - Релиз (значение по умолчанию, рекомендуется для игроков)
  • Debug - Отладка
  • Mixed - Смешанная
  • RelWithDebInfo - Релиз с отладочными символами

DCMAKE_INSTALL_PREFIX - Каталог установки, рекомендуется /usr.

DCMAKE_INSTALL_LIBDIR - Каталог расположения библиотек. Определяется автоматически, как правило INSTALL_PREFIX/lib. При необходимости можно задать:

  • lib Большинство дистрибутивов (Значение по умолчанию)
  • lib64 Дистрибутивы в которых строго разделены 32х и 64х разрядные библиотеки (Fedora, CentOS...)

DCMAKE_INSTALL_BINDIR - Каталог расположения исполняемого файла:

  • По умолчанию большинство дистрибутивов bin
  • Для Ubuntu рекомендуется games
  • Для Gentoo рекомендуется games/bin

DMEMORY_ALLOCATOR - Выбор распределителя памяти, может быть равен:

  • mimalloc (Значение по умолчанию)
  • tbb
  • standard

Компиляция

  • для непосредственной компиляции выполните make -jx х обозначает число ядер участвующих в компиляций, например 4 make -j4 .

если у вас все завершилось без ошибок то можно продолжать !

Этап 3.

Установка

! Предпочтительно собрать пакет для вашего дистрибутива

  • Если у вас нет возможности собрать пакет для вашего дистрибутива то можно выполнить sudo make install для установки в корень системы. Для удаления в каталоге сборки необходимо выполнить sudo make uninstall.

ArchLinux/Manjaro

  • В каталоге xray-16/ArchLinux/ находится готовый PKGBUILD для сборки пакета перейдите в xray-16/ArchLinux/ и выполните makepkg после сборки пакет можно установить sudo pacman -U openxray-dev...x86_64.pkg.tar.xz

DEB пакет Debian/Ubuntu... На данный момент имеется возможность собрать deb пакет для Debian/Ubuntu используя утилиту сheckinstall или make, если вы являетесь пользователем Ubuntu то рекомендуем собрать deb пакет.

! Для корректного генерирования списка зависимостей для deb пакета, должен быть установлен пакет dpkg-dev

  • сборка deb пакет при помощи make в папке xray-16/bin выполнить команду make package

  • собрать deb пакет при помощи сheckinstall в папке xray-16/bin выполнить команду sudo сheckinstall -D и ответить на несколько вопросов.

В итоге будет собран deb пакет который можно установить при помощи sudo sudo dpkg -i *.deb

RPM пакет Fedora/CentOS... Для сборки rpm пакета в папке xray-16/bin выполнить команду make package

В итоге будет собран rpm пакет который можно установить при помощи sudo rpm -i *.rpm

Пользовательские репозитории

Репозитории сообщества.ю созданные пользователями

Ubuntu 18.04

Launchpad.net

добавить репозиторий и установить

sudo add-apt-repository ppa:eagleivg/openxray
sudo apt-get update

ArchLinux/Manjaro

В AUR имеется готовые пакеты

  • openxray - Текущий стабильный релиз
  • openxray-git - Не стабильная версия в разработке

OpenSUSE

Build.opensuse.org

Установить в один кликOpenSUSE Install или добавить репозиторий и установить

sudo zypper ar obs://games games
sudo zypper ref
sudo zypper in openxray

Gentoo

Portage Ebuild

Игровые ресурсы

  • Для запуска игры вам потребуются оригинальные ресурсы лицензионной копии S.T.A.L.K.E.R. Зов Припяти. и(или) S.T.A.L.K.E.R. - Чистое Небо. Поместите каталоги levels, localization, mp, patches, resources из дистрибутива S.T.A.L.K.E.R. Зов Припяти в ~/.local/share/GSC Game World/S.T.A.L.K.E.R. - Call of Pripyat/ и(или) в ~/.local/share/GSC Game World/S.T.A.L.K.E.R. - Clear Sky из дистрибутива S.T.A.L.K.E.R. - Чистое Небо.

!!!Внимание каталог ~/.../GSC Game World/S.T.A.L.K.E.R. -... необходимо создать самостоятельно

mkdir -p ~/.local/share/GSC Game World/S.T.A.L.K.E.R. - Call of Pripyat

mkdir -p ~/.local/share/GSC Game World/S.T.A.L.K.E.R. - Clear Sky

Если у вас есть цифровая копия игры в Steam то ресурсы можно скопировать из ~/.local/share/Steam/steamapps/common/Stalker... (Каталог установки игр Steam в Linux по умолчанию).

Если у вас есть физическая копия игры или копия из GoG то её можно распаковать воспользовавшись консольной утилитой innoextract скорее всего она имеется в репозитории вашего дистрибутива и её можно установить:

ArchLinux/Manjaro sudo pacman -S innoextract

Debian/Ubuntu sudo apt install innoextract

Fedora sudo dnf install innoextract

Для распаковки дистрибутива выполните:

  1. Скопируйте содержимое компакт диска в домашний каталог например ~/CoP
  2. Откройте терминал перейдите в каталог с дистрибутивом игры cd ~/CoP и выполните innoextract setup.exe -L

ключ -L переводит название всех файлов и каталогов в нижний регист

ключ -d указывает каталог куда будут помещены распакованные файлы например -d CoP_unpack

ключ --gog необходим для распаковки инсталятора gog

  1. Дождитесь окончания распаковки, по завершению в каталоге ~/CoPпоявится каталог app или game из которого можно скопировать levels, localization, mp, patches, resources

Распакованный СD дистрибутив CD

Распакованный GOG дистрибутив GOG

Внимание!!! имена каталогов levels, localization, mp, patches, resources и файлы в них должны находиться в нижнем регистре то есть маленькими буквами актуально для копии игры из GOG.

  • Если по каким либо причинам Вы не хотите занимать дополнительное место в домашнем каталоге но уже имеете установленную игру в Windows или Steam то можете создать символические ссылки на каталоги с ресурсами levels, localization, mp, patches, resources Ниже приведён пример создание символических ссылок S.T.A.L.K.E.R. Зов Припяти установленного в Steam:
mkdir -p ~/.local/share/GSC Game World/S.T.A.L.K.E.R. - Call of Pripyat
ln -s ~/.local/share/Steam/steamapps/common/Stalker Call of Pripyat/levels ~/.local/share/GSC Game World/S.T.A.L.K.E.R. - Call of Pripyat/levels
ln -s ~/.local/share/Steam/steamapps/common/Stalker Call of Pripyat/localization ~/.local/share/GSC Game World/S.T.A.L.K.E.R. - Call of Pripyat/localization
ln -s ~/.local/share/Steam/steamapps/common/Stalker Call of Pripyat/mp ~/.local/share/GSC Game World/S.T.A.L.K.E.R. - Call of Pripyat/mp
ln -s ~/.local/share/Steam/steamapps/common/Stalker Call of Pripyat/patches ~/.local/share/GSC Game World/S.T.A.L.K.E.R. - Call of Pripyat/patches
ln -s ~/.local/share/Steam/steamapps/common/Stalker Call of Pripyat/resources ~/.local/share/GSC Game World/S.T.A.L.K.E.R. - Call of Pripyat/resources
  • Теперь игру можно запустить выбрав пункт S.T.A.L.K.E.R.: Call of Pripyat (OpenXRay) или S.T.A.L.K.E.R.: - Clear Sky (OpenXRay) из меню приложений или выполнив в терминале xr_3da для запуска S.T.A.L.K.E.R. Зов Припяти или xr_3da -cs для запуска S.T.A.L.K.E.R. - Чистое Небо

Внимание!!! работы по поддержке S.T.A.L.K.E.R. - Чистое Небо не завершены. Возможны баги и ошибки.

Портативная установка

Если вы не имеете возможности создать пакет для своей системы и(или) не хотите устанавливать движок в свою систему то можете воспользоватся данным способом.

  • В домашней директории создайте каталог для игры например S.T.A.L.K.E.R.
  • Выполните Этап 1 и Этап 2 этого руководства (на Этапе 2 можно особо не настраивать проект выполнив cmake .. -DCMAKE_BUILD_TYPE=Release).
  • После компиляции скопируйте содержимое каталога xray-16/bin/x64/Release/ в ~/S.T.A.L.K.E.R./bin/
  • Скопируйте каталог gamedata и файл fsgame.ltx из каталога xray-16/res в ~/S.T.A.L.K.E.R./
  • Из xray-16/src/xr_3da/ скопируйте скрипт xr_3da.sh в ~/S.T.A.L.K.E.R.CoP/bin.
  • В ~/S.T.A.L.K.E.R.CoP/ поместите игровые ресурсы levels, localization, mp, patches, resources. Должно получиться примерно так: S.T.A.L.K.E.R.CoP bin Для запуска откройте терминал перейдите в каталог ~/S.T.A.L.K.E.R./bin и выполните команду
./xr_3da.sh -fsltx /home/Имя пользователя/S.T.A.L.K.E.R./fsgame.ltx

Аналогично можно поступить с ресурсами S.T.A.L.K.E.R.: Чистое Небо но для его запуска следует добавить ключ -cs

./xr_3da.sh -cs -fsltx /home/Имя пользователя/S.T.A.L.K.E.R./fsgame.ltx

!!! На данный момент путь к fsgame.ltx должен быть абсолютным начиная от корня системы

Возможные проблемы

  • Установленный движок не запускается.

Откройте терминал и введите команду xr_3da если будет выдано сообщение вида:

bash: xr_3da: команда не найдена

возможно не правильно настроено расположение исполняемого файла на этапе настройки проекта, как правило значение по умолчанию переменной DCMAKE_INSTALL_BINDIR должно быть /usr/bin в ряде дистрибутивах она может отличатся. Если вы увидите сообщение вида:

./xr_3da: error while loading shared libraries: xrEngine.so: cannot open shared object file: No such file or directory

Возможно что на этапе настройки проекта неправильно определились одна из переменных (или обе сразу)

DCMAKE_INSTALL_PREFIX должна быть равна /usr, а DCMAKE_INSTALL_LIBDIRlib или lib64.

Если если происходит инициализация после которой движок завершается аварийно с сообщением

FATAL ERROR
 
[error] Expression    : setupSelectedRenderer
[error] Function      : InitializeRenderers
[error] File          : /home/chip/OpenXray/xray-16/src/xrEngine/EngineAPI.cpp
[error] Line          : 128
[error] Description   : Can't setup renderer

В случае портативной установки скорее всего вы не скопировали шейдеры из каталога xray-16/res/ скопируйте каталог xray-16/res/gamedata в каталог с ресурсами игры

Известные баги и ошибки.

  1. При выходе из игры процесс может зависнуть (по состоянию на май 2020 данная проблема наблюдается при сборке с использованием gcc9 )
  2. Сохранения и логи не поддерживают UTF-8
  3. На видеокартах AMD замечены баги с включенным SSAO, поэтому рекомендуется его полностью отключить.
  4. Не создаются превью для сохранения
  5. При первом запуске могут сбиться настройки разрешения экрана в вашем DE

У меня низкий FPS

Ограничения некоторых расширенных настроек графики существенно увеличены, по сравнению с оригинальной игрой. Следует быть осторожным со следующими настройками графики:

  • Детализация объектов. Данная опция оказывает значительное влияние на производительность.
  • Дальность прорисовки травы. Данной опции просто не было в оригинальном движке и её значение было «зашито» прямо в движке.
  • Плотность травы. Лимит данной опции был увеличен в два-три раза.
  • Качество теневых карт. Этой опции также не было в оригинальном движке, значения были «зашиты» и единственным методом смены были ключи запуска, однако даже через ключ запуска максимальным значением было 4096, в то время как у нас максимум – 16384.

Не могу собрать ошибка версии GCC

  • Некоторые пользователи сталкиваются с проблемой не совместимости версии GCC поскольку в ряде дистрибутивов по умолчанию предоставляется GCC версии 7, для сборки рекомендуется использовать GCC версии 8 и выше для решения этой проблем вы можете установить GCC 8 штатными средствами вашего дистрибутива и на этапе конфигурации выполнить cmake -DCMAKE_C_COMPILER=gcc-8 -DCMAKE_CXX_COMPILER=g++-8 -DCMAKE_BUILD_TYPE=Debug -w ..
  • Не рекомендуется исправить в файле CMakeLists.txt но если в репозитории вашего дистрибутива нет GCC 8 то измените строку CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.0.0 на свой GCC к примеру CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.4.0. Однако возможны проблемы.

Звук плохо позиционируется

Нужно принудительно включить HRTF в OpenAL: echo "hrtf = true" >> ~/.alsoftrc

Если это не заработало, проверьте, что в системе присутствуют файлы default-44100.mhr и default-48000.mhr (В Ubuntu это пакет libopenal-data)

Если и после этого не заработало, запускайте игру с переменными ALSOFT_LOGLEVEL=3 ALSOFT_LOGFILE=/tmp/openallog.txt ./xr_3da и анализируйте лог на предмет HRTF.

Не загружаются сохранения S.T.A.L.K.E.R.: Чистое Небо из оригинальной игры

Обратной совместимости с форматом сохранения S.T.A.L.K.E.R.: Чистое Небо нет.

Не запускается S.T.A.L.K.E.R.: Тень Чернобыля

Я установил движок и скопировал игровые ресурсы S.T.A.L.K.E.R.: Тень Чернобыля в ~/.local/share/GSC Game World/S.T.A.L.K.E.R. - Shadow of Chernobyl/ но он у меня не запускается.

На данный момент работы по поддержке S.T.A.L.K.E.R.: Тень Чернобыля только начаты.

Игра запускается на английском языке как переключить язык на русский?

Данная проблема наблюдается для копии игры из GOG для её решения зайдите в .../S.T.A.L.K.E.R.../localization в ней должен находится только файлы base_sounds.db, xefis_movies.db, xrussian.db всё остальное нужно удалить

Игра вылетает с установленным модом

К сожалению, совместимость с некоторыми модификациями неполная, это связанно со следующим:

  1. Многие разработчики при разработке модов вносят свои изменения в движок которых нет в OpenXRay такой мод полностью не совместим. Даже если разработчик мода использовал OpenXRay, не исключено что он внёс свои изменения в свою ветку.
  2. Разработчики модификаций часто используют разный регистр (Заглавные и строчные буквы) в путях и названиях файлов игровых ресурсов. Файловая система Linux устроена иначе: если в Windows файлы с именем A.dds и a.dds считаются одним и тем же файлом, то в Linux это разные файлы и в таком случае можно получить вылет связанный с отсутствием файла.

Для того чтобы модификация могла запустится нужно выполнить несколько условий:

  1. Модификация не должна затрагивать сам движок
  2. Должны быть правильно прописаны пути и имена файлов в скриптах
Clone this wiki locally