-
-
Notifications
You must be signed in to change notification settings - Fork 488
[UA] Як зібрати на налаштувати рушій на Linux та MacOS
-
Підготовка
1.1. Встановлення залежностей
1.2. Отримання вихідного коду -
Збірка
2.1. Налаштування
2.2. Компіляція -
Встановлення
3.1. Створення пакету для Debian/Ubuntu
3.2. Створення пакету для Fedora/CentOS
3.3. Створення пакету для ArchLinux/Manjaro
3.4. Спільнотні репозиторії
3.5. Ресурси гри
3.6. Портативна установка -
Можливі проблеми
4.1. Встановлений рушій не запускається
4.2. Команда не знайдена
4.3. Помилка під час завантаження спільних бібліотек
4.4. Не вдається налаштувати рендерер -
Відомі помилки та баги
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.
Можна створити .deb пакет для встановлення рушія через dpkg. Якщо ви користуєтесь Ubuntu, радимо збирати DEB-пакет.
! Для коректної генерації списку залежностей для deb-пакету має бути встановлено пакет dpkg-dev.
-
Збірка DEB-пакету через
make:
make package -
Збірка DEB-пакету через
checkinstall:
sudo checkinstall -D
та відповідайте на запитання на екрані.
Обидва варіанти створять DEB-пакет, який можна встановити командою:
sudo dpkg -i *.deb
Можна створити .rpm пакет для встановлення рушія через rpm.
-
Збірка RPM-пакету:
make package
Отримаєте RPM-пакет, який можна встановити командою:
sudo rpm -i *.rpm
Директорія xray-16/ArchLinux містить готовий PKGBUILD для збірки пакету на цих дистрибутивах.
-
Збірка пакету:
cd ../ArchLinux && makepkg
Отримаєте пакет, який можна встановити командою:
sudo pacman -U openxray-dev...x86_64.pkg.tar.xz
Нижче наведено список спільнотних репозиторіїв для встановлення OpenXRay.
Ubuntu 18.04
Щоб додати репозиторій та встановити OpenXRay, виконайте:
sudo add-apt-repository ppa:eagleivg/openxray
sudo apt update
# sudo apt install openxray?ArchLinux/Manjaro
AUR має готові пакети для OpenXRay:
- openxray — останній стабільний реліз
- openxray-git — остання нестабільна, версія в розробці
OpenSUSE
Встановіть пакет в один клік або додайте репозиторій і встановіть його звичайним способом:
sudo zypper ar obs://games games
sudo zypper ref
sudo zypper in openxrayGentoo
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.:
levelslocalizationmppatchesresources
Помістіть їх у цей каталог:
-
~/.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/Ubuntu —
sudo apt install innoextract -
Fedora —
sudo dnf install innoextract
(Для архівів GOG також потрібенunrarз репозиторіюrpmfusion-nonfree, оскількиunrar-freeу стандартних репозиторіях Fedora не підтримує архіви з паролем і багаточастинні архіви.) -
ArchLinux/Manjaro —
sudo pacman -S innoextract -
Nixpkgs —
nix-env -iA nixpkgs.innoextract
Щоб розпакувати архіви дистрибутива:
- Скопіюйте вміст диска до директорії, наприклад,
~/CoP - Відкрийте термінал, перейдіть у цю директорію та виконайте:
innoextract setup.exe -L
Опції innoextract:
-
-L— Переводить всі імена файлів і директорій у нижній регістр -
-d— Вказує, куди розпаковувати файли, наприклад,CoP_unpack -
--gog— Використовуйте, якщо розпаковуєте GOG-версію
- Після завершення розпакування у вас буде директорія
appабоgameз потрібними каталогами, які були згадані раніше.
Розпакована CD-версія
Розпакована 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), можете скористатися таким методом:
- У вашому домашньому каталозі створіть папку для движка (наприклад,
S.T.A.L.K.E.R.) та для гри (наприклад,S.T.A.L.K.E.R.CoP) - Виконайте кроки з розділів Підготовка та Збірка цього посібника.
- Після компіляції скопіюйте вміст директорії
xray-16/bin/<arch>/Release/у~/S.T.A.L.K.E.R./bin/. (<arch>залежить від архітектури вашого процесора, наприклад для 64-біт Intel/AMD замініть<arch>наx64) - Скопіюйте директорію
gamedataта файлfsgame.ltxзxray-16/resу~/S.T.A.L.K.E.R./. - Скопіюйте або створіть символічні посилання на потрібні директорії (
levels,localizationтощо) у~/S.T.A.L.K.E.R.CoP/. Виглядати це має приблизно так:
Щоб запустити гру, відкрийте термінал, перейдіть у каталог ~/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- При виході з гри процес може зависати назавжди (станом на травень 2020 року ця проблема спостерігалась при збірці з GCC9 або новішим)
- Збереження та логи не підтримують UTF-8
- На відеокартах AMD можуть виникати проблеми з SSAO. Рекомендуємо вимкнути цю опцію на таких системах.
- Попередній перегляд файлів збережень не генерується.
Зазвичай цей збій супроводжується повідомленням про помилку у журналі, схожим на це:
[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.
Щоб виправити цю проблему:
- Перейдіть у директорію з ресурсами (
~/.local/share/GSC Game World/S.T.A.L.K.E.R. - ...) - Переконайтеся, що назва директорії локалізації написана малими літерами
Правильно:localization
Неправильно:Localization - У директорії
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
Наприклад, щоб отримати російську версію:
Максимальні значення деяких розширених графічних налаштувань значно вищі, порівняно з оригінальною грою. Будьте уважні з наступними налаштуваннями:
- Object details - цей параметр суттєво впливає на продуктивність.
- Grass render distance - цього параметра не було в оригінальному рушії, це було фіксоване значення.
- Grass density - максимальне значення цього параметра було подвоєне / потроєне порівняно з оригінальним рушієм.
- Shadow map quality - цього параметра не було в оригінальному рушії, це була прихована опція. Єдиний спосіб змінити її — через параметри запуску. Навіть з параметром запуску максимальне значення було обмежене 4096. Цей параметр збільшено до максимального значення 16384.
Деякі дистрибутиви можуть не мати 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.: Тінь Чорнобиля.
Виконайте кроки, описані в Крах при наближенні до персонажа на початку гри.
На жаль, сумісність із деякими модами неповна з таких причин:
-
Багато розробників модів вносять власні зміни до рушія. Ці зміни можуть бути відсутні в OpenXRay. Такі моди несумісні з OpenXRay. Навіть якщо розробник моду використовував OpenXRay, можливо, він змінив свою версію рушія.
-
Розробники модів часто використовують різний регістр (великі чи малі літери) у шляхах і назвах файлів ресурсів гри. Файлова система Linux відрізняється від Windows: якщо Windows вважає файли
A.ddsіa.ddsоднаковими, то в Linux це різні файли. Якщо в моді є така невідповідність у регістрі, це може спричинити краш через відсутній файл.
Щоб мод працював з OpenXRay, він має відповідати таким вимогам:
- Мод не повинен змінювати сам рушій.
- У скриптах шляхи та назви файлів мають використовувати правильний регістр.
Home
English
- Русский
- Українська
- Беларуская
- Polski
- Český


