Skip to content

[UA] Як зібрати на налаштувати рушій на Linux та MacOS

1therealcloud edited this page Jul 14, 2025 · 1 revision

Зміст

  1. Підготовка
    1.1. Встановлення залежностей
    1.2. Отримання вихідного коду
  2. Збірка
    2.1. Налаштування
    2.2. Компіляція
  3. Встановлення
    3.1. Створення пакету для Debian/Ubuntu
    3.2. Створення пакету для Fedora/CentOS
    3.3. Створення пакету для ArchLinux/Manjaro
    3.4. Спільнотні репозиторії
    3.5. Ресурси гри
    3.6. Портативна установка
  4. Можливі проблеми
    4.1. Встановлений рушій не запускається
    4.2. Команда не знайдена
    4.3. Помилка під час завантаження спільних бібліотек
    4.4. Не вдається налаштувати рендерер
  5. Відомі помилки та баги
    5.1. Краш при наближенні до персонажа на початку гри
    5.2. Низький FPS
    5.3. Не можу скомпілювати OpenXRay: помилка версії GCC
    5.4. Погане позиціювання звуку
    5.5. Не можу завантажити сейви, зроблені в оригінальному S.T.A.L.K.E.R. - Clear Sky
    5.6. S.T.A.L.K.E.R.: Shadow of Chernobyl не працює
    5.7. Гра запускається англійською, як змінити мову?
    5.8. Гра вилітає з модами

Підготовка

Наразі офіційно підтримуються лише компілятори GCC8, GCC9 та GCC10, але ви можете знайти інструкції для збірки з іншими компіляторами у розділах Налаштування та Не можу скомпілювати OpenXRay: помилка версії GCC. Ваше середовище також повинне підтримувати OpenGL 4.1.

Встановлення залежностей

Щоб встановити необхідні пакети для збірки рушія, виконайте:

  • Для Debian/Ubuntu
sudo apt install git cmake make libopenal-dev libcrypto++-dev libogg-dev libtheora-dev libvorbis-dev libsdl2-dev liblzo2-dev libjpeg-dev libncurses5-dev gcc g++ dpkg-dev libmimalloc-dev
  • Для Fedora/CentOS
sudo dnf install git cmake make gcc gcc-c++ openal-devel cryptopp-devel libogg-devel libtheora-devel libvorbis-devel SDL2-devel lzo-devel libjpeg-turbo-devel mimalloc-devel
  • Для ArchLinux/Manjaro
sudo pacman -S gcc git cmake make libglvnd libjpeg6-turbo ncurses sdl2 openal crypto++ libogg libtheora libvorbis lzo lzop libjpeg-turbo mimalloc
  • Для Gentoo
sudo emerge --ask gcc git cmake make libglvnd libjpeg-turbo ncurses libsdl2 media-libs/openal crypto++ libogg libtheora libvorbis lzo lzop mimalloc
  • Для MacOS
brew install git cmake sdl2 libogg libvorbis theora lzo mimalloc jpeg-turbo

Отримання вихідного коду

Щоб отримати вихідний код, виконайте:

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

Збірка

Налаштування

Зайдіть у клонований репозиторій і створіть там директорію для збірки. Назва директорії не має значення, наприклад, bin або build (bin буде використовуватись у подальшій документації для позначення цієї директорії). Приклад створення директорії та переходу в неї через термінал:

cd xray-16 && mkdir bin && cd bin

Опинившись у директорії 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 — Компроміс між Release та Debug
  • RelWithDebInfo — Оптимізація для релізу з відладковими символами

DCMAKE_INSTALL_PREFIX — Префікс установки, рекомендовано /usr (наприклад, /usr/bin, /usr/lib, /usr/share тощо)

DCMAKE_INSTALL_LIBDIR — Каталог для встановлення бібліотек. За замовчуванням lib (відносно INSTALL_PREFIX). Якщо потрібно, можна встановити:

  • lib — Підходить для більшості дистрибутивів (за замовчуванням)
  • lib64 — Для дистрибутивів з розділенням 32- і 64-бітних бібліотек (Fedora, CentOS тощо)

DCMAKE_INSTALL_BINDIR — Каталог для встановлення виконуваних файлів. За замовчуванням bin (відносно INSTALL_PREFIX). Якщо потрібно, можна встановити:

  • games — Рекомендовано для Ubuntu
  • games/bin — Рекомендовано для Gentoo

DMEMORY_ALLOCATOR — Вибір аллокатора пам’яті для рушія. Можливі значення:

  • mimalloc — Компільований і використовується mimalloc (за замовчуванням)
  • standard — Використання стандартної реалізації malloc системи

Примітки

Для використання clang:
Clang не підтримується, але ви можете спробувати використати його на свій розсуд:

CC=clang CXX=clang++ cmake ..

Щоб увімкнути всі оптимізації для вашої машини:

CFLAGS="-march=native" CXXFLAGS="-march=native" cmake ..

Компіляція

Щоб скомпілювати рушій, виконайте:

make -jx

! x вказує кількість потоків, які ви хочете призначити процесу компіляції. Наприклад, якщо ви хочете використати 4 потоки:

make -j4

Щоб записати лог і помилки у різні файли:

make -jx >out.log 2>error.log

Якщо компіляція завершилася без помилок, можете продовжувати з встановленням рушія!

Встановлення

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

Якщо ви не можете або не хочете збирати пакет для вашого дистрибутиву, ви можете виконати sudo make install для встановлення всього у префікс встановлення (за замовчуванням /usr). Щоб видалити все пізніше, виконайте sudo make uninstall.

Створення пакету для Debian/Ubuntu

Можна створити .deb пакет для встановлення рушія через dpkg. Якщо ви користуєтесь Ubuntu, радимо збирати DEB-пакет.

! Для коректної генерації списку залежностей для deb-пакету має бути встановлено пакет dpkg-dev.

  • Збірка DEB-пакету через make:
    make package

  • Збірка DEB-пакету через checkinstall:
    sudo checkinstall -D
    та відповідайте на запитання на екрані.

Обидва варіанти створять DEB-пакет, який можна встановити командою:
sudo dpkg -i *.deb

Створення пакету для Fedora/CentOS

Можна створити .rpm пакет для встановлення рушія через rpm.

  • Збірка RPM-пакету:
    make package

Отримаєте RPM-пакет, який можна встановити командою:
sudo rpm -i *.rpm

Створення пакету для ArchLinux/Manjaro

Директорія xray-16/ArchLinux містить готовий PKGBUILD для збірки пакету на цих дистрибутивах.

  • Збірка пакету:
    cd ../ArchLinux && makepkg

Отримаєте пакет, який можна встановити командою:
sudo pacman -U openxray-dev...x86_64.pkg.tar.xz

Репозиторії спільноти

Нижче наведено список спільнотних репозиторіїв для встановлення OpenXRay.

Ubuntu 18.04

Launchpad.net

Щоб додати репозиторій та встановити OpenXRay, виконайте:

sudo add-apt-repository ppa:eagleivg/openxray
sudo apt update
# sudo apt install openxray?

ArchLinux/Manjaro

AUR має готові пакети для OpenXRay:

  • openxray — останній стабільний реліз
  • openxray-git — остання нестабільна, версія в розробці

OpenSUSE

Build.opensuse.org

Встановіть пакет в один клік або додайте репозиторій і встановіть його звичайним способом:

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

Gentoo

Portage Ebuild

Nixpkgs

Останню стабільну версію можна встановити через Nixpkgs на NixOS та будь-якому іншому дистрибутиві Linux з встановленим Nix.

nix-env -iA nixpkgs.openxray

Ігрові ресурси

Щоб запустити гру, вам знадобляться оригінальні ресурси ліцензійної копії S.T.A.L.K.E.R. - Call of Pripyat та/або S.T.A.L.K.E.R. - Clear Sky.

Вам потрібні такі каталоги з вашої дистрибуції гри S.T.A.L.K.E.R.:

  • levels
  • localization
  • mp
  • patches
  • resources

Помістіть їх у цей каталог:

  • ~/.local/share/GSC Game World/S.T.A.L.K.E.R. - Call of Pripyat/ - For Call of Pripyat
  • ~/.local/share/GSC Game World/S.T.A.L.K.E.R. - Clear Sky/ - For Clear Sky

!!!Увага: Ці шляхи потрібно створити вам вручну. Зверніть увагу на пропуски — їх потрібно правильно екранувати. Наприклад:

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

Версія Steam
Якщо у вас є цифрова копія гри у Steam, ресурси можна знайти в ~/.local/share/Steam/steamapps/common/Stalker... (директорія за замовчуванням для встановлення ігор Steam у Linux).

Для встановлення ресурсів із Steam через steamcmd, виконайте:

steamcmd "+@sSteamCmdForcePlatformType windows" +login <your_steam_username> \
    +force_install_dir ~/.local/share/GSC Game World/S.T.A.L.K.E.R. - Call of Pripyat/ +app_update 41700 +quit

! Якщо ви не хочете займати зайве місце на диску, зберігаючи кілька копій директорій, читайте далі.

Фізична версія / GOG Якщо ви придбали фізичну копію гри або цифрову версію на GOG, ви можете розпакувати ресурси за допомогою інструменту командного рядка innoextract. Щоб встановити innoextract через ваш пакетний менеджер, виконайте:

  • Debian/Ubuntusudo apt install innoextract
  • Fedorasudo dnf install innoextract
    (Для архівів GOG також потрібен unrar з репозиторію rpmfusion-nonfree, оскільки unrar-free у стандартних репозиторіях Fedora не підтримує архіви з паролем і багаточастинні архіви.)
  • ArchLinux/Manjarosudo pacman -S innoextract
  • Nixpkgsnix-env -iA nixpkgs.innoextract

Щоб розпакувати архіви дистрибутива:

  1. Скопіюйте вміст диска до директорії, наприклад, ~/CoP
  2. Відкрийте термінал, перейдіть у цю директорію та виконайте:
    innoextract setup.exe -L

Опції innoextract:

  • -L — Переводить всі імена файлів і директорій у нижній регістр
  • -d — Вказує, куди розпаковувати файли, наприклад, CoP_unpack
  • --gog — Використовуйте, якщо розпаковуєте GOG-версію
  1. Після завершення розпакування у вас буде директорія app або game з потрібними каталогами, які були згадані раніше.

Розпакована CD-версія
CD

Розпакована GOG-версія
GOG

!!!Увага: Імена потрібних директорій (levels, localization тощо) МАЮТЬ бути у нижньому регістрі (малими літерами). Це особливо важливо для копії гри з GOG.

Якщо не хочете займати додаткове місце на диску і у вас гра вже встановлена (через Steam або на Windows-розділі)

Ви можете створити символічні посилання на потрібні директорії замість їх копіювання. Наприклад, для Steam-версії:

STEAM_DIR=~/.local/share/Steam/steamapps/common/Stalker\ Call\ of\ Pripyat
XRAY_DIR=~/.local/share/GSC\ Game\ World/S.T.A.L.K.E.R.\ -\ Call\ of\ Pripyat
mkdir -p "$XRAY_DIR"
ln -s "$STEAM_DIR/levels" "$XRAY_DIR/levels"
ln -s "$STEAM_DIR/localization" "$XRAY_DIR/localization"
ln -s "$STEAM_DIR/mp" "$XRAY_DIR/mp"
ln -s "$STEAM_DIR/patches" "$XRAY_DIR/patches"
ln -s "$STEAM_DIR/resources" "$XRAY_DIR/resources"

Запуск гри

S.T.A.L.K.E.R. - Call of Pripyat

  • Знайдіть та натисніть S.T.A.L.K.E.R.: Call of Pripyat (OpenXRay) у меню програм або
  • Запустіть у терміналі команду xr_3da

S.T.A.L.K.E.R. - Clear Sky

  • Знайдіть та натисніть S.T.A.L.K.E.R.: Clear Sky (OpenXRay) у меню програм або
  • Запустіть у терміналі команду xr_3da -cs

!!!Увага: Підтримка S.T.A.L.K.E.R. - Clear Sky все ще неповна. Можливі помилки та збої.

Якщо ресурси гри знаходяться в іншій директорії, ніж рекомендовано, використовуйте ключ -fsltx з шляхом до вашого файлу fsgame.ltx:

xr_3da -fsltx /шлях/до/fsgame.ltx

```bash
xr_3da -fsltx /path/to/fsgame.ltx

ПРИМІТКА: шлях до fsgame.ltx має бути абсолютним, починаючи з / (кореня файлової системи).

Якщо ви хочете налагоджувати движок за допомогою gdb, запустіть:

DEBUGGER="gdb --ex=r --args" xr_3da

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

Якщо ви не можете і/або не хочете встановлювати OpenXRay системно (через пакет або make install), можете скористатися таким методом:

  1. У вашому домашньому каталозі створіть папку для движка (наприклад, S.T.A.L.K.E.R.) та для гри (наприклад, S.T.A.L.K.E.R.CoP)
  2. Виконайте кроки з розділів Підготовка та Збірка цього посібника.
  3. Після компіляції скопіюйте вміст директорії xray-16/bin/<arch>/Release/ у ~/S.T.A.L.K.E.R./bin/. (<arch> залежить від архітектури вашого процесора, наприклад для 64-біт Intel/AMD замініть <arch> на x64)
  4. Скопіюйте директорію gamedata та файл fsgame.ltx з xray-16/res у ~/S.T.A.L.K.E.R./.
  5. Скопіюйте або створіть символічні посилання на потрібні директорії (levels, localization тощо) у ~/S.T.A.L.K.E.R.CoP/. Виглядати це має приблизно так: S.T.A.L.K.E.R.CoP bin

Щоб запустити гру, відкрийте термінал, перейдіть у каталог ~/S.T.A.L.K.E.R. і виконайте команду:

./bin/xr_3da -fsltx ./fsgame.ltx

Для S.T.A.L.K.E.R. - Clear Sky використовуйте параметр -cs:

./bin/xr_3da -cs -fsltx ./fsgame.ltx

Можна спросити собі запуск, створивши .sh файл в папці з грою, його вміст має бути, як команди вище.

Створення: touch xr_3da.sh && nano xr_3da.sh

Вставте команди вище в файл, залежно від вашої гри (COP/CS).

Запуск гри через .sh файл: sh xr_3da.sh

Можливі проблеми

Встановлений рушій не запускається

Відкрийте термінал і запустіть гру через xr_3da. Ви повинні побачити більш конкретне повідомлення про помилку.

Команда не знайдена

bash: xr_3da: Command not found

Не вдалося знайти розташування виконуваного файлу. Можливо, ви вказали неправильне значення на кроці налаштування проекту. Як правило, значення за замовчуванням для DCMAKE_INSTALL_PREFIX (/usr) та DCMAKE_INSTALL_BINDIR (<DCMAKE_INSTALL_PREFIX>/bin) має працювати на більшості систем. Якщо значення DCMAKE_INSTALL_BINDIR не входить до вашого PATH (echo $PATH), спробуйте запустити xr_3da з повним шляхом (/path/to/xr_3da) або додайте цей шлях до змінної середовища PATH.

Помилка під час завантаження спільних бібліотек

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

Можливо, шлях, куди ви встановили бібліотеки (DCMAKE_INSTALL_LIBDIR), не входить до списку LD_LIBRARY_PATH вашої системи (echo $LD_LIBRARY_PATH). Спробуйте використати шлях зі списку (з урахуванням DCMAKE_INSTALL_PREFIX та DCMAKE_INSTALL_LIBDIR) або додайте ваш обраний шлях до змінної середовища LD_LIBRARY_PATH.

Не вдається налаштувати рендер

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

При використанні портативної установки може знадобитися скопіювати шейдери з каталогу xray-16/res/gamedata/ у директорію ресурсів вашої гри:

.
├── bin/
├── gamedata/
├── levels/
├── localization/
├── mp/
├── patches/
├── resources/
└── fsgame.ltx

Щоб запустити гру, відкрийте термінал, перейдіть до ~/S.T.A.L.K.E.R./bin і виконайте:

LD_LIBRARY_PATH="./bin:$LD_LIBRARY_PATH" ./bin/xr_3da -fsltx ./fsgame.ltx

Відомі помилки та збої

  1. При виході з гри процес може зависати назавжди (станом на травень 2020 року ця проблема спостерігалась при збірці з GCC9 або новішим)
  2. Збереження та логи не підтримують UTF-8
  3. На відеокартах AMD можуть виникати проблеми з SSAO. Рекомендуємо вимкнути цю опцію на таких системах.
  4. Попередній перегляд файлів збережень не генерується.

Збій при підході до персонажа на початку гри

Зазвичай цей збій супроводжується повідомленням про помилку у журналі, схожим на це:

[error] Expression  : !m_error_code
[error] Function    : ~raii_guard
[error] File        : /.../.../xray-16/src/xrSCRIPTENGINE/script_engine.cpp
[error] Line        : 569
[error] Description : ...R. -Call of Pripyat\gamedata\scripts\sound_theme.script:225: bad argument #1 to 'gsub' (string expected, got nil)

Ця проблема помічена лише у копіях гри з GOG.
Щоб виправити цю проблему:

  1. Перейдіть у директорію з ресурсами (~/.local/share/GSC Game World/S.T.A.L.K.E.R. - ...)
  2. Переконайтеся, що назва директорії локалізації написана малими літерами
    Правильно: localization
    Неправильно: Localization
  3. У директорії localization мають бути лише архіви з потрібною локалізацією гри. Всі інші файли та папки потрібно видалити.
  • Англійська - base_sounds.db xefis_movies.db xenglish.db
  • Французька - base_sounds.db xefis_movies.db xfrench.db
  • Німецька - base_sounds.db xger_movies.db xgerman.db
  • Італійська - base_sounds.db xefis_movies.db xitalian.db
  • Польська - base_sounds.db xpolish_texts.db xrus_sounds.db xpolish_sounds.db
  • російська - base_sounds.db xefis_movies.db xrussian.db
  • Іспанська - base_sounds.db xefis_movies.db xspanish.db
  • Українська - base_sounds.db xefis_movies.db xukrainian.db

Перелічені вище файли можна знайти в директоріях localization/En, localization/Fr, localization/Ge тощо.
4) У файлі налаштувань ~/.local/share/GSC Game World/S.T.A.L.K.E.R. - .../user.ltx слід або видалити параметр g_language, або встановити його в одне з наступних значень залежно від вибраної мови:

  • Англійська - g_language eng
  • Французька - g_language fra
  • Німецька - g_language ger
  • Італійська - g_language ita
  • Польська - g_language pol
  • російська - g_language rus
  • Іспанська - g_language spa
  • Українська - g_language ukr

Наприклад, щоб отримати російську версію:

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

Максимальні значення деяких розширених графічних налаштувань значно вищі, порівняно з оригінальною грою. Будьте уважні з наступними налаштуваннями:

  • Object details - цей параметр суттєво впливає на продуктивність.
  • Grass render distance - цього параметра не було в оригінальному рушії, це було фіксоване значення.
  • Grass density - максимальне значення цього параметра було подвоєне / потроєне порівняно з оригінальним рушієм.
  • Shadow map quality - цього параметра не було в оригінальному рушії, це була прихована опція. Єдиний спосіб змінити її — через параметри запуску. Навіть з параметром запуску максимальне значення було обмежене 4096. Цей параметр збільшено до максимального значення 16384.

I can't compile OpenXRay: GCC version error

Деякі дистрибутиви можуть не мати GCC версії 8 або новішої за замовчуванням. Ви можете вручну встановити новішу версію GCC через менеджер пакетів. Якщо так зробите, можливо, доведеться вказати проекту, який компілятор використовувати:

cmake -DCMAKE_C_COMPILER=gcc-8 -DCMAKE_CXX_COMPILER=g++-8 ..

Ми не рекомендуємо цього робити, але якщо у вашому дистрибутиві немає GCC версії 8 або новішої, ви можете змінити мінімальну версію GCC у файлі CMakeLists.txt. Знайдіть рядок CMAKE_CXX_COMPILER_VERSION VERSION_LESS 8.0.0 і змініть його на нижче значення, наприклад: CMAKE_CXX_COMPILER_VERSION VERSION_LESS 7.4.0. Будь ласка, розумійте, що ми не можемо гарантувати, що це не викличе проблем ні під час компіляції, ні в кінцевій збірці рушія.

Звук погано позиціонується

У OpenAL потрібно примусово увімкнути HRTF:

echo "hrtf = true" >> ~/.alsoftrc

Якщо це не спрацювало, перевірте, чи присутні файли default-44100.mhr та default-48000.mhr.
(У Ubuntu можливо, доведеться встановити пакет libopenal-data)

Якщо і це не допомогло, запустіть гру з

ALSOFT_LOGLEVEL=3 ALSOFT_LOGFILE=/tmp/openallog.txt xr_3da

та перевірте в журналі (log), чи згадується HRTF.

Я не можу завантажити збереження, створені в оригінальному S.T.A.L.K.E.R. — Clear Sky

Ми не підтримуємо зворотну сумісність із форматом збережень S.T.A.L.K.E.R. — Clear Sky.

S.T.A.L.K.E.R.: Тінь Чорнобиля не працює

Наразі ми все ще працюємо над додаванням підтримки S.T.A.L.K.E.R.: Тінь Чорнобиля.

Гра запускається англійською, як змінити мову?

Виконайте кроки, описані в Крах при наближенні до персонажа на початку гри.

Гра крашиться з установленими модами

На жаль, сумісність із деякими модами неповна з таких причин:

  1. Багато розробників модів вносять власні зміни до рушія. Ці зміни можуть бути відсутні в OpenXRay. Такі моди несумісні з OpenXRay. Навіть якщо розробник моду використовував OpenXRay, можливо, він змінив свою версію рушія.

  2. Розробники модів часто використовують різний регістр (великі чи малі літери) у шляхах і назвах файлів ресурсів гри. Файлова система Linux відрізняється від Windows: якщо Windows вважає файли A.dds і a.dds однаковими, то в Linux це різні файли. Якщо в моді є така невідповідність у регістрі, це може спричинити краш через відсутній файл.

Щоб мод працював з OpenXRay, він має відповідати таким вимогам:

  1. Мод не повинен змінювати сам рушій.
  2. У скриптах шляхи та назви файлів мають використовувати правильний регістр.
Clone this wiki locally