How-to compile games on e2k: различия между версиями

Материал из ALT Linux Wiki
Строка 113: Строка 113:


==OpenVR SDK==
==OpenVR SDK==
OpenVR is an API and runtime (нужна для Bullet Physics SDK)
OpenVR is an API and runtime that allows access to VR hardware from multiple vendors without requiring that applications have specific knowledge of the hardware they are targeting.


- https://github.com/ValveSoftware/openvr
- [https://www.steamvr.com/ Сайт]
- [https://github.com/ValveSoftware/openvr GitHub]


1) git clone --recursive https://github.com/ValveSoftware/openvr.git
    git clone --recursive https://github.com/ValveSoftware/openvr.git
2) cd openvr && mkdir build && cd build
    cd openvr && mkdir build && cd build
3) cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release ..
    cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED=ON ..
4) make -j8
    make -j8


==Bullet Physics SDK==
==Bullet Physics SDK==

Версия от 18:46, 7 декабря 2020

MangoHud

A Vulkan and OpenGL overlay for monitoring FPS, temperatures, CPU/GPU load and more.

- GitHub

    apt-get install mako mako3
    git clone --recursive https://github.com/flightlessmango/MangoHud.git
    cd MangoHud

переключение на стабильную версию 0.6.1 - 079f67a7295a47eb2ca98a79f95ecf22dd17a5e1 (опционально)

    cd MangoHud && git checkout 079f67a7295a47eb2ca98a79f95ecf22dd17a5e1

выключаем NV-CONTROL X extension (libxnvctrl, контроль за параметрами драйвера NVIDIA X) и NVIDIA Management Library (NVML)

    ./build.sh build -Dwith_xnvctrl=disabled -Dwith_nvml=disabled

установка в ОС (опционально)

    ./build.sh install

создание deb пакета при помощи checkinstall (опционально)

    checkinstall --type=debian --install=no --pkgname=mangohud --pkgversion=0.6.1 --nodoc --strip --stripso --gzman ./build.sh install


запуск OpenGL:

    MANGOHUD_DLSYM=1 MANGOHUD_CONFIG=core_load,font_size=32 mangohud ./game_bin
    MANGOHUD_DLSYM=1 MANGOHUD_CONFIG=core_load,gpu_load_change,`gpu_load_color=0000FF,00FFFF,FF00FF`,`gpu_load_value=50,90`,cpu_load_change,`cpu_load_color=0000FF,00FFFF,FF00FF`,`cpu_load_value=50,90`,font_size=32 mangohud ./game_bin

RBDOOM-3-BFG

Doom 3 BFG Edition with soft shadows, cleaned up source, Linux and 64 bit Support.

- GitHub

    git clone --recursive https://github.com/RobertBeckebans/RBDOOM-3-BFG.git
    cd RBDOOM-3-BFG && mkdir build && cd build

OpenGL (без Intel Intrinsics):

    cmake -DCMAKE_BUILD_TYPE=Release -DSDL2=ON -DONATIVE=ON -DUSE_INTRINSICS=OFF ../neo

или

    /neo/cmake-linux-release-nosimd.sh

OpenGL (с Intel Intrinsics):

    cmake -DCMAKE_BUILD_TYPE=Release -DSDL2=ON -DONATIVE=ON -DFFMPEG=OFF -DBINKDEC=ON ../neo

или

    /neo/cmake-linux-release.sh


Vulkan (без Intel Intrinsics):

    cmake -DCMAKE_BUILD_TYPE=Release -DSDL2=ON -DONATIVE=ON -DUSE_INTRINSICS=OFF -DUSE_VULKAN=ON -DSPIRV_SHADERC=OFF ../neo

или

    /neo/cmake-linux-nvidia-jetson-vulkan-release.sh

Vulkan (с Intel Intrinsics):

    cmake -DCMAKE_BUILD_TYPE=Release -DSDL2=ON -DONATIVE=ON -DUSE_VULKAN=ON -DSPIRV_SHADERC=OFF ../neo

или

    /neo/cmake-linux-vulkan-release.sh

Компилирование

    make -j8

DOOM-BFA

DOOM: BFA (Big Freaking Anniversary) Edition (former Classic RBDoom 3 BFG) is a source port based on RBDOOM-3-BFG and enchance the experience of Ultimate DOOM, DOOM 2 and DOOM 3.

- GitHub

    git clone --recursive https://github.com/MadDeCoDeR/Classic-RBDOOM-3-BFG.git
    cd Classic-RBDOOM-3-BFG && mkdir build && cd build

без Intel Intrinsics

    cmake -DCMAKE_BUILD_TYPE=Release -DSDL2=ON -DONATIVE=ON -DUSE_INTRINSICS=OFF ../neo

или

    /neo/cmake-linux-release-nosimd.sh

с Intel Intrinsics

    cmake -DCMAKE_BUILD_TYPE=Release -DSDL2=ON -DONATIVE=ON ../neo

или

    /neo/cmake-linux-release.sh

Компилирование

    make -j8

SuperTuxKart

SuperTuxKart is a 3D open-source arcade racer with a variety characters, tracks, and modes to play.

- Сайт - GitHub


загружаем игровые данные (без них будет ошибка на этапе конфигурирования через CMake)

    svn co https://svn.code.sf.net/p/supertuxkart/code/stk-assets
    git clone --recursive https://github.com/supertuxkart/stk-code.git

переключение на стабильную версию 1.2 - 6e17f2ed6bc5134e6d9070c3321ff245739aa23a (опционально)

    cd stk-code && git checkout 6e17f2ed6bc5134e6d9070c3321ff245739aa23a
    cd stk-code && mkdir build && cd build
    cmake -DCMAKE_BUILD_TYPE=Release ..
    make -j8

Serious Engine

A port to the OpenPandora (and working fine on plain Linux) of the open source version of a game engine developed by Croteam for the classic Serious Sam games.

- GitHub

    git clone --recursive https://github.com/ptitSeb/Serious-Engine.git
    cd Serious-Engine

Serious Sam The Second Encounter:

    mkdir build_ssam && cd build_ssam
    cmake -DCMAKE_BUILD_TYPE=Release ../Sources/
    make -j8

Serious Sam The First Encounter:

    mkdir build_ssam-tfe && cd build_ssam-tfe
    cmake -DCMAKE_BUILD_TYPE=Release -DTFE=TRUE ../Sources/
    make -j8

OpenVR SDK

OpenVR is an API and runtime that allows access to VR hardware from multiple vendors without requiring that applications have specific knowledge of the hardware they are targeting.

- Сайт - GitHub

    git clone --recursive https://github.com/ValveSoftware/openvr.git
    cd openvr && mkdir build && cd build
    cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_SHARED=ON ..
    make -j8

Bullet Physics SDK

real-time collision detection and multi-physics simulation for VR, games, visual effects, robotics, machine learning etc (нужна для OpenMW)

- https://github.com/bulletphysics/bullet3

1) git clone --recursive https://github.com/bulletphysics/bullet3.git 2) cd bullet3 && mkdir build && cd build 3) cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DUSE_DOUBLE_PRECISION=ON -DBULLET2_MULTITHREADING=ON -DBULLET2_USE_OPEN_MP_MULTITHREADING=ON .. включаем двойную точность (по умолчанию идёт без неё) и многопоточность (по умолчанию она включается с использованием mutex ) с использованием OpenMP

если ранее не установить библиотеку OpenVR, то нужно дополнительно указать опции, которые выключат некоторые зависимые от неё компоненты -DBUILD_BULLET2_DEMOS=OFF -DBUILD_UNIT_TESTS=OFF

3) make -j8

Unshield

extract CAB files from an InstallShield installer archive (нужна для OpenMW)

- https://github.com/twogood/unshield

1) git clone --recursive https://github.com/twogood/unshield.git 2) cd unshield && mkdir build && cd build 3) cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release .. 4) make -j8

OpenSceneGraph

an open source high performance 3D graphics toolkit, used by application developers in fields such as visual simulation, games, virtual reality, scientific visualization and modelling (нужна для OpenMW)

- https://github.com/openscenegraph/OpenSceneGraph

1) git clone --recursive https://github.com/openscenegraph/OpenSceneGraph.git 2) cd OpenSceneGraph && mkdir build && cd build 3) cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release .. 4) make -j8

OSG on steroids

OpenMW fork оригинального OpenSceneGraph разработчики OpenMW рекомендуют использовать их fork оригинального движка OpenSceneGraph, поскольку с их слов это даст 10-15% прибавку к производительности

- https://github.com/OpenMW/osg

1) git clone --recursive https://github.com/OpenMW/osg.git 2) cd osg && mkdir build && cd build 3) cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DBUILD_OSG_PLUGINS_BY_DEFAULT=0 -DBUILD_OSG_PLUGIN_OSG=1 -DBUILD_OSG_PLUGIN_DDS=1 -DBUILD_OSG_PLUGIN_TGA=1 -DBUILD_OSG_PLUGIN_BMP=1 -DBUILD_OSG_PLUGIN_JPEG=1 -DBUILD_OSG_PLUGIN_PNG=1 -DBUILD_OSG_PLUGIN_FREETYPE=1 -DBUILD_OSG_DEPRECATED_SERIALIZERS=0 .. движок OSG по умолчанию собирает много плагинов, которые не нужны OpenMW, поэтому их можно отключить на этапе конфигурирования (доп.опции взяты из мануала разработчиков OpenMW по сборке) 4) make -j8

OGRE

a scene-oriented, flexible 3D engine (нужна для библиотеки MyGUI)

- https://github.com/OGRECave/ogre

1) git clone --recursive https://github.com/OGRECave/ogre.git 2) cd ogre && mkdir build && cd build 3) cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DOGRE_ENABLE_PRECOMPILED_HEADERS=FALSE -DOGRE_BUILD_PLUGIN_ASSIMP=FALSE -DOGRE_BUILD_COMPONENT_PYTHON=FALSE -DOGRE_BUILD_COMPONENT_JAVA=FALSE -DOGRE_BUILD_COMPONENT_CSHARP=FALSE .. пре-компилирование и плагин ASSIMP дают ошибку при компиляции, поэтому выключаем их пока не исправят (доп.компоненты тоже) 4) make -j8

MyGUI

a cross-platform library for creating graphical user interfaces (GUIs) for games and 3D applications (нужна для OpenMW)

- https://github.com/MyGUI/mygui

1) git clone --recursive https://github.com/MyGUI/mygui.git 2) cd mygui && mkdir build && cd build 3) cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DMYGUI_RENDERSYSTEM=7 .. по умолчанию MyGUI требует установленный в ОС движок OGRE (MYGUI_RENDERSYSTEM=3), но можно собрать и без него, поэтому переключаемся на использование OpenGL (MYGUI_RENDERSYSTEM=4) или OpenGL 3.x (MYGUI_RENDERSYSTEM=7) или cmake -DCMAKE_INSTALL_PREFIX=/usr -DCMAKE_BUILD_TYPE=Release -DMYGUI_RENDERSYSTEM=1 -DMYGUI_BUILD_DEMOS=OFF -DMYGUI_BUILD_PLUGINS=OFF -DMYGUI_BUILD_TOOLS=OFF .. можно собрать без всего дополнительного (движок OGRE, демо, плагины и инструменты), доп.опции взяты из мануала разработчиков OpenMW по сборке OpenMW 4) make -j8

Sphinx

is a tool that makes it easy to create documentation for Python projects (or other documents consisting of multiple reStructuredText sources) нужна для OpenMW с доп.опцией -BUILD_DOCS=ON

- https://github.com/sphinx-doc/sphinx

1) pip install -U sphinx

OpenMW

открытая реализация игры TES 3 Morrowind (Tribunal и Bloodmoon)

- https://github.com/OpenMW/openmw

требуемые библиотеки (нужно предварительно собрать по инструкции выше): - Unshield - OpenSceneGraph 3.4 - OpenGL rendering toolkit - MyGUI 3.2.2 - GUI toolkit - Bullet 2.86 - the physics engine

1) git clone --recursive https://github.com/OpenMW/openmw.git 2) cd openmw && mkdir build && cd build 3) cmake -DCMAKE_BUILD_TYPE=Release .. или -DBUILD_DOCS=ON -DMYGUI_STATIC=ON -DBOOST_STATIC=ON -DSDL2_STATIC=ON -DOSG_STATIC=ON -DQT_STATIC=ON можно собрать с доп.опциями создания документации и статической линковки всего в один бинарник 4) make -j8

Xash3D FWGS Engine

fork Xash3D Engine, открытая реализация движка игры Half-Life 1

- https://github.com/FWGS/xash3d-fwgs

1) git clone --recursive https://github.com/FWGS/xash3d-fwgs.git 1) cd xash3d-fwgs && ./waf configure -T release автоматически определяет, что на е2к нужно собирать 64 битную версию движка, но можно указать вручную через -8/--64bits (опци нужна только для x86) на е2к автоматически соберёт с OpenGL 1.1 (максимальный реализованный в самом движке) 2) ./waf build автоматически определяет количество ядер для компиляции, но можно указать вручную через -j/--jobs 3) ./waf install --strip --destdir=./xash-fwgs_e2k получим файлы - /usr/local/lib/xash3d/libmenu.so - /usr/local/lib/xash3d/libref_gl.so - /usr/local/lib/xash3d/libref_soft.so - /usr/local/lib/xash3d/libxash.so - /usr/local/lib/xash3d/xash3d

Half-Life SDK for Xash3D

- https://github.com/FWGS/hlsdk-xash3d

1) git clone --recursive https://github.com/FWGS/hlsdk-xash3d.git 2) cd hlsdk-xash3d && ./waf configure -T release 3) ./waf build 4) ./waf install --strip --destdir=./hlsdk-xash3d_e2k получим файлы - /valve/cl_dlls/client_e2k.so - /valve/dlls/hl_e2k.so

полученная папка valve с библиотеками (client_e2k.so и hl_e2k.so) копируется прямо поверх папки valve в оригинальной игре (сохраняя иерархию). valve - это единственная необходимая папка из Half-Life 1. ранее полученные файлы xash3d (libmenu.so, libref_gl.so, libref_soft.so, libxash.so, xash3d) копируются также в корень папки с оригинальной игрой. запускать с LD_LIBRARY_PATH=.


Благодарность за текст Рамилю Саттарову =)

ScummVM

Современный движок для игр-квестов восьмидесятых и девяностых годов на движках SCUMM и подобных (Loom, Legend of Kyrandia 1, 2, 3 и т.п.)

Сайт

Проверена собираемость и работоспособность версии 2.2.0 на ОС Эльбрус 6.0-rc3.

    wget https://downloads.scummvm.org/frs/scummvm/2.2.0/scummvm-2.2.0.tar.gz
    tar xf scummvm-2.2.0.tar.gz
    cd scummvm-2.2.0
    ./configure --enable-release --prefix=/usr
    make -j16
    make install

ZMusic

Библиотека поддержки воспроизведения музыки для GZDoom современных версий.

Проверена собираемость и работоспособность снапшота git@9e950c1 на ОС Эльбрус 6.0-rc3.

    git clone https://github.com/coelckers/ZMusic
    cd ZMusic
    mkdir build; cd build
    cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr ..
    make -j16 
    make install

GZDoom

Современный движок для 3D-шутеров на движках id Tech 1 и подобных (Doom, Doom II, Heretic, Hexen, Strife) с дополнительными возможностями для моддинга. Основан на ZDoom.

Сайт

Проверена собираемость и работоспособность версии git@013078a на ОС Эльбрус 6.0-rc3.

Перед сборкой необходимо собрать и установить ZMusic.

    git clone https://github.com/coelckers/gzdoom
    cd gzdoom
    sed -i 's/goto \*ops/goto *(void*)ops/' src/common/scripting/vm/vmexec.cpp
    mkdir build; cd build
    cmake -DCMAKE_BUILD_TYPE=Release -DCMAKE_INSTALL_PREFIX=/usr ..
    make -j16 
    make install

Taisei Project

Кроссплатформенная FOSS-игра, аналогичная играм серии Touhou Project (по этому же сеттингу).

Сайт

Проверена собираемость и работоспособность снапшота git@6a44aa4 на ОС Эльбрус 6.0-rc3.

    git clone https://github.com/taisei-project/taisei
    cd taisei
    git submodule init
    git submodule update
    mkdir build; cd build
    meson --prefix=/usr ..
    ninja
    ninja install

DOSBox-X

Эмулятор машин на процессорах i8086-i386, аналогичный DOSBox, но более расширенный и с поддержкой эмуляции PC-98.

Сайт

Проверена собираемость и работоспособность версии 0.83.7 на ОС Эльбрус 6.0-rc3.

Нужен следующий патч:

   diff --git a/stb_vorbis.h b/stb_vorbis.h.0
   index 35422b2..7c70034 100644
   --- a/src/libs/decoders/stb_vorbis.h
   +++ b/src/libs/decoders/stb_vorbis.h
   @@ -5202,19 +5202,19 @@ stb_vorbis * stb_vorbis_open_memory(const unsigned char *data, int len, int *err
    #define PLAYBACK_LEFT     2
    #define PLAYBACK_RIGHT    4
    
   -#define L  (PLAYBACK_LEFT  | PLAYBACK_MONO)
   -#define C  (PLAYBACK_LEFT  | PLAYBACK_RIGHT | PLAYBACK_MONO)
   -#define R  (PLAYBACK_RIGHT | PLAYBACK_MONO)
   +#define CH_L  (PLAYBACK_LEFT  | PLAYBACK_MONO)
   +#define CH_C  (PLAYBACK_LEFT  | PLAYBACK_RIGHT | PLAYBACK_MONO)
   +#define CH_R  (PLAYBACK_RIGHT | PLAYBACK_MONO)
    
    static int8 channel_position[7][6] =
    {
       { 0 },
   -   { C },
   -   { L, R },
   -   { L, C, R },
   -   { L, R, L, R },
   -   { L, C, R, L, R },
   -   { L, C, R, L, R, C },
   +   { CH_C },
   +   { CH_L, CH_R },
   +   { CH_L, CH_C, CH_R },
   +   { CH_L, CH_R, CH_L, CH_R },
   +   { CH_L, CH_C, CH_R, CH_L, CH_R },
   +   { CH_L, CH_C, CH_R, CH_L, CH_R, CH_C },
    };
    
    

У версии 0.83.7 и выше надо отключать динамический эмулятор процессора параметром --disable-dynamic-core.

    wget https://github.com/joncampbell123/dosbox-x/archive/dosbox-x-v0.83.7.tar.gz
    tar xf dosbox-x-v0.83.7.tar.gz
    cd dosbox-x-dosbox-x-v0.83.7
    patch -p1 < ../vorbis.patch # Это патч, про который говорилось выше
    ./autogen.sh
    ./configure --prefix=/usr --enable-d3d9 --enable-d3d-shaders --enable-sdl --enable-sdl2 --disable-dynamic-core
    make -j16
    make install