-
-
Notifications
You must be signed in to change notification settings - Fork 472
[RU] Как собрать движок на Linux
- Установка зависимостей
- Получение исходников
- Настройка и сборка OpenXRay
- Портативная (переносная) установка
- Сборка для ArchLinux/Manjaro
- Сборка для Debian/Ubuntu
- Сборка для Fedora/CentOS
- Установка
- Сборка пакета для Debian/Ubuntu
- Сборка пакета для ArchLinux/Manjaro
- Пользовательские репозитории
- Игровые ресурсы
- Портативная установка
Возможные проблемы
Известные баги и ошибки
NOTE: На текущий момент поддерживаются только компиляторы GCC8, GCC9, GCC10, однако, ниже предусмотрены инструкции по сборке в GCC7.
NOTE: Для работы также необходимо, чтобы ваша система поддерживала OpenGL 4.1.
Для сборки OpenXRay в системе должны быть установлены следующие пакеты
git gcc cmake libglvnd libjpeg6-turbo ncurses pcre2 pcre glew sdl2 openal crypto++ freeimage libogg libtheora libvorbis lzo lzop libjpeg-turbo
- Для ArchLinux/Manjaro
sudo pacman -S gcc git cmake make libglvnd libjpeg6-turbo ncurses glew sdl2 openal crypto++ libogg libtheora libvorbis lzo lzop libjpeg-turbo
- Для Debian/Ubuntu
sudo apt install git cmake make libglew-dev libopenal-dev libcrypto++-dev libogg-dev libtheora-dev libvorbis-dev libsdl2-dev liblzo2-dev libjpeg-dev libncurses5-dev gcc g++ dpkg-dev
- Для Fedora/CentOS
sudo dnf install git cmake make gcc gcc-c++ glew-devel openal-devel cryptopp-devel libogg-devel libtheora-devel libvorbis-devel SDL2-devel lzo-devel libjpeg-turbo-devel
git clone https://github.com/OpenXRay/xray-16.git --recurse-submodules
NOTE: Здесь и далее будим считать что каталог с исходным кодом xray-16 находится в домашнем каталоге текущего пользователя.
NOTE: Таким образом вы получите не стабильную версию в разработке которая может иметь как улучшения так и быть не работоспособной. Если текущая версия является не работоспособной то есть появляются ошибки при компиляции рекомендуется перейти к стабильному релизу, для этого: Откройте терминал и перейдите в каталог с исходным кодом
cd ~/xray-16
Для того чтобы увидеть доступные релизы выполните
git tag
Вы уведите список доступных тегов
1144-december-2021-rc1
21
221
...
xd239
xd261
xd58
где 1144-december-2021-rc1 это тег последнего релиза на данный момент NOTE: Для того чтобы вернутся обратно в консоль введите q для того чтобы переключится на 1144-december-2021-rc1 выполните
git checkout (НЕОБХОДИМЫЙ ТЕГ)
- Перейдите внутрь локального репозитория и создайте в нём каталог для сборки. Название каталога не имеет значения, но обязательно на английском языке,
bin
илиbuild
(далее в примере будет использоваться папка bin). Пример создания каталога и переход в него в терминале
cd ~/xray-16 && mkdir bin && cd bin
Находясь в каталоге bash xray-16/bin
настройте проект и соберите OpenXRay выполнив:
- Портативная (переносная) установка Если вы не имеете возможности создать пакет для своей системы и(или) не хотите устанавливать движок в свою систему то можете воспользоватся данным способом.
cmake ..
make
NOTE: Для задействования всех ядер процессора во время компиляции их количество можно передать make через ключ -j, например make -j3
будит задействовано четыре ядра процессора. Почему четыре ядра если указано число три? Потому что ядра считаются начиная с нулевого.
- В домашней директории создайте каталог для игры например
S.T.A.L.K.E.R.
- Из каталога
xray-16/bin/x64/Release/
скопируйте следующие файлы:
xr_3da xrAICore.so xrAPI.so xrCDB.so xrCore.so xrEngine.so xrGame.so xrLuabind.so xrLuajit.so xrNetServer.so xrParticles.so xrRender_GL.so xrScriptEngine.so xrSound.so xrUICore.so
в каталог ~/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./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
NOTE: На данный момент путь к fsgame.ltx должен быть абсолютным начиная от корня системы
- Сборка пакета для ArchLinux/Manjaro
cd ~/xray-16/ArchLinux/
makepkg
sudo pacman -U openxray-dev...x86_64.pkg.tar.xz```
* **Сборка пакета для Debian/Ubuntu**
NOTE: Для корректного генерирования списка зависимостей для deb пакета, должен быть установлен пакет `dpkg-dev`
```bash
mkdir -p ~/xray-16/bin
cd ~/xray-16/bin
cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib -DCMAKE_INSTALL_BINDIR=/usr/games
make package
В итоге будет собран deb пакет который можно установить при помощи sudo dpkg -i *.deb
- Сборка пакета для Fedora/CentOS
mkdir -p ~/xray-16/bin
cd ~/xray-16/bin
cmake .. -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_INSTALL_LIBDIR=lib64
make
make package
В итоге будет собран rpm пакет который можно установить при помощи sudo rpm -i *.rpm
NOTE: Для задействования всех ядер процессора во время компиляции их количество можно передать make через ключ -j, например make -j3
будит задействовано четыре ядра процессора. Почему четыре ядра если указано число три? Потому что ядра считаются начиная с нулевого.
Дополнительные параметры которые можно указать при настройке
NOTE: За более подробной информацией обратитесь к документации вашего дистрибутива.
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 (Значение по умолчанию)
- standard
Репозитории сообщества, созданные пользователями
Ubuntu 18.04
Добавить репозиторий и установить
sudo add-apt-repository ppa:eagleivg/openxray
sudo apt-get update
ArchLinux/Manjaro
В AUR имеется готовые пакеты
- openxray - Текущий стабильный релиз
- openxray-git - Не стабильная версия в разработке
OpenSUSE
Установить в один клик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
Для распаковки дистрибутива выполните:
- Скопируйте содержимое компакт диска в домашний каталог например
~/CoP
- Откройте терминал перейдите в каталог с дистрибутивом игры cd
~/CoP
и выполните innoextract setup.exe -L
ключ -L переводит название всех файлов и каталогов в нижний регистр
ключ -d указывает каталог куда будут помещены распакованные файлы например -d CoP_unpack
ключ --gog необходим для распаковки инсталятора gog
- Дождитесь окончания распаковки, по завершению в каталоге
~/CoP
появится каталогapp
илиgame
из которого можно скопироватьlevels, localization, mp, patches, resources
Распакованный СD дистрибутив
Распакованный 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. - Чистое Небо не завершены. Возможны баги и ошибки.
- Установленный движок не запускается.
Откройте терминал и введите команду 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_LIBDIR
– lib
или 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
в каталог с ресурсами игры
- При выходе из игры процесс может зависнуть (по состоянию на май 2020 данная проблема наблюдается при сборке с использованием gcc9 )
- Сохранения и логи не поддерживают UTF-8
- На видеокартах AMD замечены баги с включенным SSAO, поэтому рекомендуется его полностью отключить.
- Не создаются превью для сохранения
- При первом запуске могут сбиться настройки разрешения экрана в вашем DE
Вылет при приближении к персонажу в начале игры
Подобный вылет в большинстве случаев сопровождается подобным сообщением в логе игры
[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
- В каталоге localization должны находится архивы с желаемой локализацией игры все остальные файлы и каталоги должны быть удалены. Ниже приведён список локализации для всех поддерживаемых языков.
- English
base_sounds.db xefis_movies.db xenglish.db
- French
base_sounds.db xefis_movies.db xfrench.db
- German
base_sounds.db xger_movies.db xgerman.db
- Italian
base_sounds.db xefis_movies.db xitalian.db
- Polish
base_sounds.db xpolish_texts.db xrus_sounds.db xxpolish_sounds.db
- Russian
base_sounds.db xefis_movies.db xrussian.db
- Spanish
base_sounds.db xefis_movies.db xspanish.db
Выше перечисленные файлы находятся в подкаталогахlocalization/En
localization/Fr
localization/Ge
...
Также в файле настроек ~/.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
Как переключить язык игры
Данная проблема выявлена только на копиях игры из GOG.
Для её решения перейдите в каталог ~/.local/share/GSC Game World/S.T.A.L.K.E.R. - ...
В каталоге localization должны находится архивы с желаемой локализацией игры все остальные файлы и каталоги должны быть удалены.
Ниже приведён список локализации для всех поддерживаемых языков.
- English
base_sounds.db xefis_movies.db xenglish.db
- French
base_sounds.db xefis_movies.db xfrench.db
- German
base_sounds.db xger_movies.db xgerman.db
- Italian
base_sounds.db xefis_movies.db xitalian.db
- Polish
base_sounds.db xpolish_texts.db xrus_sounds.db xxpolish_sounds.db
- Russian
base_sounds.db xefis_movies.db xrussian.db
- Spanish
base_sounds.db xefis_movies.db xspanish.db
Выше перечисленные файлы находятся в подкаталогахlocalization/En
localization/Fr
localization/Ge
...
Также в файле настроек ~/.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
У меня низкий 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
всё остальное нужно удалить
Игра вылетает с установленным модом
К сожалению, совместимость с некоторыми модификациями неполная, это связанно со следующим:
- Многие разработчики при разработке модов вносят свои изменения в движок которых нет в OpenXRay такой мод полностью не совместим. Даже если разработчик мода использовал OpenXRay, не исключено что он внёс свои изменения в свою ветку.
- Разработчики модификаций часто используют разный регистр (Заглавные и строчные буквы) в путях и названиях файлов игровых ресурсов. Файловая система Linux устроена иначе: если в Windows файлы с именем A.dds и a.dds считаются одним и тем же файлом, то в Linux это разные файлы и в таком случае можно получить вылет связанный с отсутствием файла.
Для того чтобы модификация могла запустится нужно выполнить несколько условий:
- Модификация не должна затрагивать сам движок
- Должны быть правильно прописаны пути и имена файлов в скриптах
Home
English
- Русский
- Українська
- Беларуская
- Polski
- Český