Найти в Дзене
TechrooM

OpenXRay собираем из исходников культовый шутер на Linux ч. 2

S.T.A.L.K.E.R. Чистое небо
S.T.A.L.K.E.R. Чистое небо

В первой части мы рассмотрели сборку Quake и MoHAA == Медаль за отвагу (тут => https://dzen.ru/a/Z0v6webjdRxDBvS0).


После релиза "ремастера" трилогии игр S.T.A.L.K.E.R. от GSC Game world (для меня уже не GSC как Григорович ее продал, сдал в аренду... не важно ) загадочным образом перестал запускаться оригинальный Сталкер в Steam, как в Windows так в Linux под Proton.

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

Первым делом клонируем репозиторий с помощью git

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

Нужен последний стабильный релиз (не путать с релиз кандидатами) переходим на коммит 1dc1c10 ( на 24.05.2025 г.см. P.S.!!!) возможно у Вас будет что то другое, заходите на страничку с релизами (https://github.com/OpenXRay/xray-16/releases) и смотрим где плашка Latest зеленого цвета.

git chechkout 1dc1c10

Вытягиваем все дополнительные модули необходимые для сборки

git submodule update --init --recursive

Процесс может быть длительным

Теперь установим зависимости, необходимо поставить пакеты:

cmake,
build-essential,
libglew-dev,
libegl1-mesa-dev,
libgles2-mesa-dev,
libopenal-dev,
libcrypto++-dev,
libfreeimage-dev,
libfreeimageplus-dev,
libogg-dev,
libtheora-dev,
libvorbis-dev,
liblzo2-dev,
libjpeg-dev,
libncurses5-dev,
gcc-10,
libpcre3-dev,
libsdl2-dev,
g++-10,
debhelper,

Кроме данного списка мне потребовалось

libtbb2-dev

Стоит оговориться что сборка производилась под ОС LinuxMint 21.3 аналог Ubuntu 22.04 LTS, версия gcc 11.4.0 cmake 3.22.1

теперь выполняем конфигурацию проекта (после cmake стоит точка)

cmake .

Если в процессе возникли ошибки внимательно смотрим на название и устанавливаем необходимые зависимости.

Начинаем сборку

make -j 14

Ожидаем окончание сборки. В зависимости от машины и производительности, в пике вместе с браузером и компиляцией система потребляла до 7,5 Гб памяти ОЗУ, а сама сборка шла на Ryzen 9 5900HX и процесс длился не более 3-4 минут.

По завершению получим каталог

bin/x64/Release

где будут лежать все необходимые файлы и библиотеки

На текущий момент поддерживается Зов Припяти и Чистое небо, увы Тени Чернобыля только в ночных сборках, а моя система (LinuxMint 21.03) имеет старую версию cmake и пересобирать его ради SoC не сильно хочется.

Далее берем папку с ресурсами игры, например Чистое небо, переименовываем каталог bin в bin_bk, создаем bin и туда размещаем все что скомпилировалось в bin/x64/Release

Отсюда скачиваем gamedata для чистого неба https://github.com/OpenXRay/xray-16/wiki/%5BRU%5D-Как-установить-и-играть

распаковываем архив в папку с игрой

далее переходим в папку bin и запускаем командой

LD_LIBRARY_PATH=./ ./xr_3da -fsltx <ПУТЬ_ДО_ПАПКИ_С_ИГРОЙ>/fsgame.ltx

Чтобы в последствии не бегать в терминал в папке с игрой можно создать скрипт, например с именем start_stalker_cos.sh в нем разместить строки

#!/bin/bash
PATH_TO_SCRIPT_FOLDER=`dirname $0`
cd $PATH_TO_SCRIPT_FOLDER
PATH_TO_LTX="`pwd`/fsgame.ltx"
LD_LIBRARY_PATH=./bin ./bin/xr_3da -fsltx $PATH_TO_LTX

Далее даем права на исполнение

chmod +x start_stalker_cos.sh

И запускаем игру через ярлык с рабочего стола.

Полезные источники информации:

GitHub проекта Как собрать движок на Linux (https://github.com/OpenXRay/xray-16/wiki/%5BRU%5D-Как-собрать-движок-на-Linux)

GitHub проекта Параметры командной строки для запуска (https://github.com/OpenXRay/xray-16/wiki/%5BEN%5D-Engine's-command-line-keys)

P.S.

В процессе работы с материалом выяснил, что собрал релиз-кандидат, но это не изменило ситуацию, так как при настройках графики выяснилось, что при установке пресета выше Low наблюдаются артефакты освещения.

Их можно избежать вручную, настроив детализацию и остальные параметры на максимум при пресете Low, но отсутствие динамического освещения, конечно, делает картинку серовато-скучной, как в SoC, что на просторах болот смотрится не так эффектно.

Ниже примеры артефактов:

Приемр Артефактов динамичекого освещения 1
Приемр Артефактов динамичекого освещения 1
Штрихи на стене слева
Штрихи на стене слева

При сборке релиза вскрывается досадная ошибка в файле

Externals/luabind/luabind/typeid.hpp

не хватает инклуда, чтобы исправит ошибку добавляем туда строчку

#include <cstddef>

файл будет выглядеть так

-4

После чего сборка пройдет без нареканий

Оставлю ссылки на архивы с бинарными сборками для LinuxMint 21.3:

Страница с релизами проекта (https://github.com/OpenXRay/xray-16/releases)

December 2021 RC1 commit 1dc1c10

bin_december_2021_rc1_1dc1c10.tar.gz


December 2020 Preview commit edbaac6

bin_december 2020_edbaac6.tar.gz