-
-
Notifications
You must be signed in to change notification settings - Fork 488
[RU] Как собрать движок на Linux
- Установка зависимостей
- Получение исходников
- Настройка и сборка OpenXRay
- Портативная (переносная) установка
- Установка
- Сборка пакета для 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
- Для 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- Для ArchLinux/Manjaro
sudo pacman -S gcc git cmake make libglvnd libjpeg6-turbo ncurses glew sdl2 openal crypto++ libogg libtheora libvorbis lzo lzop libjpeg-turbogit clone https://github.com/OpenXRay/xray-16.git --recurse-submodulesNOTE: Здесь и далее будим считать что каталог с исходным кодом 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 -jXNOTE: X обозначает число ядер участвующих в компиляций, например 4 make -j4
- В домашней директории создайте каталог для игры например
S.T.A.L.K.E.R. - Cкопируйте следующие файлы
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```
из каталога `xray-16/bin/x64/Release/` в `~/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` и выполните команду
```bash
./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.ltxNOTE: На данный момент путь к fsgame.ltx должен быть абсолютным начиная от корня системы
- Для 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Дополнительные параметры которые можно указать при настройке
! За более подробной информацией обратитесь к документации вашего дистрибутива.
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
- Для непосредственной компиляции выполните
make -jxх обозначает число ядер участвующих в компиляций, например 4make -j4.
Если у вас все завершилось без ошибок то можно продолжать !
! Предпочтительно собрать пакет для вашего дистрибутива
- Если у вас нет возможности собрать пакет для вашего дистрибутива то можно выполнить
sudo make installдля установки в корень системы. Для удаления в каталоге сборки необходимо выполнитьsudo make uninstall.
ArchLinux/Manjaro
- В каталоге
xray-16/ArchLinux/находится готовыйPKGBUILDдля сборки пакета перейдите вxray-16/ArchLinux/и выполнитеmakepkgпосле сборки пакет можно установитьsudo pacman -U openxray-dev...x86_64.pkg.tar.xz
DEB пакет Debian/Ubuntu... На данный момент имеется возможность собрать deb пакет для Debian/Ubuntu используя утилиту сheckinstall или make, если вы являетесь пользователем Ubuntu то рекомендуем собрать deb пакет.
! Для корректного генерирования списка зависимостей для deb пакета, должен быть установлен пакет dpkg-dev
-
сборка deb пакет при помощи make в папке
xray-16/binвыполнить командуmake package -
собрать deb пакет при помощи сheckinstall в папке
xray-16/binвыполнить командуsudo сheckinstall -Dи ответить на несколько вопросов.
В итоге будет собран deb пакет который можно установить при помощи sudo dpkg -i *.deb
RPM пакет Fedora/CentOS... Для сборки rpm пакета в папке xray-16/bin выполнить команду make package
В итоге будет собран rpm пакет который можно установить при помощи sudo rpm -i *.rpm
Репозитории сообщества, созданные пользователями
Ubuntu 18.04
Добавить репозиторий и установить
sudo add-apt-repository ppa:eagleivg/openxray
sudo apt-get updateArchLinux/Manjaro
В AUR имеется готовые пакеты
- openxray - Текущий стабильный релиз
- openxray-git - Не стабильная версия в разработке
OpenSUSE
Установить в один кликOpenSUSE Install или добавить репозиторий и установить
sudo zypper ar obs://games games
sudo zypper ref
sudo zypper in openxrayGentoo
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/Enlocalization/Frlocalization/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/Enlocalization/Frlocalization/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ý


