-
-
Notifications
You must be signed in to change notification settings - Fork 482
[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 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/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ý