-
Notifications
You must be signed in to change notification settings - Fork 0
[RU] Как собрать движок на Linux
Этап 1.
- Установка зависимостей
- Получение исходников.
Этап 2.
- Настройка проекта
- Компиляция
Этап 3.
- Установка
- Сборка пакета для Debian/Ubuntu
- Сборка пакета для ArchLinux/Manjaro
- Пользовательские репозитории
- Игровые ресурсы
- Портативная установка
Возможные проблемы
Известные баги и ошибки.
На текущий момент поддерживаются только компиляторы GCC8, GCC9, GCC10, однако, ниже предусмотрены инструкции по сборке в GCC7.
Для работы также необходимо, чтобы ваша система поддерживала OpenGL 4.1.
- Для Debian/Ubuntu
sudo apt install git cmake make libglew-dev libfreeimage-dev liblockfile-dev libopenal-dev libtbb-dev libcrypto++-dev libogg-dev libtheora-dev libvorbis-dev libsdl2-dev liblzo2-dev libjpeg-dev libncurses5-dev libreadline-dev gcc g++ libfreeimageplus-dev libfreeimageplus3 dpkg-dev
- Для Fedora/CentOS
sudo dnf install git cmake make gcc gcc-c++ glew-devel pcre-devel pcre2 freeimage-devel freeimage-plus-devel liblockfile-devel openal-devel tbb-devel cryptopp-devel libogg-devel libtheora-devel libvorbis-devel SDL2-devel lzo-devel libjpeg-turbo-devel readline-devel
- Для ArchLinux/Manjaro
sudo pacman -S gcc git cmake make libglvnd libjpeg6-turbo ncurses pcre2 pcre glew sdl2 openal intel-tbb crypto++ liblockfile freeimage libogg libtheora libvorbis lzo lzop libjpeg-turbo
git clone https://github.com/OpenXRay/xray-16.git --recurse-submodules
- перейдите во внутрь локального репозитария и создайте в нём каталог для сборки, название каталога не имеет значения но обязательно на Английском языке рекомендуется
bin
илиbuild
(далее в примере будит использоваться папка bin) в терминале будет проще
cd xray-16 && mkdir bin && cd bin
находясь в каталоге bash xray-16/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
- Смешанная -
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 (Значение по умолчанию)
- tbb
- 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 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 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. - Чистое Небо не завершены. Возможны баги и ошибки.
Если вы не имеете возможности создать пакет для своей системы и(или) не хотите устанавливать движок в свою систему то можете воспользоватся данным способом.
- В домашней директории создайте каталог для игры например
S.T.A.L.K.E.R.
- Выполните Этап 1 и Этап 2 этого руководства (на Этапе 2 можно особо не настраивать проект выполнив
cmake .. -DCMAKE_BUILD_TYPE=Release
). - После компиляции скопируйте содержимое каталога
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
и выполните команду
./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
!!! На данный момент путь к fsgame.ltx должен быть абсолютным начиная от корня системы
- Установленный движок не запускается.
Откройте терминал и введите команду 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
У меня низкий 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 это разные файлы и в таком случае можно получить вылет связанный с отсутствием файла.
Для того чтобы модификация могла запустится нужно выполнить несколько условий:
- Модификация не должна затрагивать сам движок
- Должны быть правильно прописаны пути и имена файлов в скриптах