Things to test mobile GPU stacks
Gaming
OpenGL (ES)
Dune Legacy: need original Dune game data. Relies on SDL2
the Doom engine: GZDoom; Castlevania 3D
SuperTux 2. SuperTuxKart
RBDOOM-3-BFG: https://github.com/RobertBeckebans/RBDOOM-3-BFG/blob/master/README.md#plan2
Modernized. Open source. Need original game data to play.
quake3
installation
baseq3/pak[0-7].pk3
pak0 is the main gamedata. has a demo version (free) and a full version (non free)
pak1-7 includes add-ons. (also free?)
-
only pak0 (demo version) -- game can run
-
pak0 demo + pak[1-7]: game wont run (??)
-
full pak0 + pak[1-7]: game will run
timedemo: a built-in is called "four". the timedemo is included in pak6 and can be extracted. yet, it requires a map that does not exist in pak0 (demo). so can only run on pak0 (full)?
ioquake3
runs out of box on stock rpi4.
https://github.com/ioquake/ioq3
NB: already uses its GL2 renderer
Installation (Debian based aarch64)
Just directly do
sudo apt install innoextract game-data-packager
game-data-packager quake3 -i --gain-root-command sudo
The commands will grab the gamedata as well as install ioquake3
Installation Ref:
https://pimylifeup.com/raspberry-pi-quake-3/
https://askubuntu.com/questions/948106/how-to-install-quake-3
https://pimylifeup.com/raspberry-pi-quake-3/
quak3's Debian package page
https://packages.debian.org/stable/games/quake3
"PAK0.PK3 from the full version of Quake III Arena. This file is 457 MB (479,493,658 bytes) in size and can be found in the Quake3\baseq3 directory on the original game disc, or in the Quake 3 Arena\baseq3 directory in the Steam installation. PAK1.PK3 to PAK8.PK3 from the official Quake III Point Update 1.32, and also available from the Steam installation"
File data
/usr/share/games/quake3-demo-data/demoq3
Good video showing how it works
https://www.youtube.com/watch?v=YzBS08DLYJg
debian installation paths
actual data:
/usr/share/games/quake3-demo-data/demoq3/
demo data:
~~/usr/lib/quake3/demo/demoq3/~~
game engine (ioquake3)
/usr/lib/ioquake3
/usr/lib/ioquake3/ioquake3 # executable. failed to run this directly. complain no gamedata found
game-data-packager launcher
/usr/games/quake3. a symlink to a generic gdp launcher. read the config file
/usr/share/games/game-data-packager-runtime/launch-quake3.json
will launch ioquake3 with the following
/usr/lib/ioquake3 ioquake3 +set com_homepath .q3ademo +set com_basegame demoq3 +set sv_pure 0 +set vm_ui 0 +set vm_cgame 0 +set vm_game 0 +set fs_basepath /usr/lib/quake3/demo
q3 filesystem doc
https://github.com/raspberrypi/quake3/blob/master/code/qcommon/files.c~
"QUAKE3 FILESYSTEM"
com_homepath: the per-user setting. ~/.q3ademo -- includes recorded timedemos, etc.
crash log ~/.q3ademo/demoq3/crashlog.txt
fs_basepath
"The "base path" is the path to the directory holding all the game directories and usually the executable. It defaults to ".", but can be overridden with a "+set fs_basepath c:\quake3" command line to allow code debugging in a different directory"
The "home path" is the path used for all write access. On win32 systems we have "base path" == "home path", but on *nix systems the base installation is usually readonly, and "home path" points to ~/.q3a or similar
The "base game" is the directory under the paths where data comes from by default, and can be either "baseq3" or "demoq3".
The "current game" may be the same as the base game, or it may be the name of another directory under the paths that should be searched for files before looking in the base game. This is the basis for addons.
solution:
in com_basegame (/usr/lib/quake3/demo)
must create a separate dir called "baseq3". put all pak* of the full gamedata (there is where timedemo "four" resides).
then launch the game WITHOUT "+set com_basegame". this falls back to the default game name "baseq3".
the game will output separate gamedata: ~/.q3ademo/baseq3
/usr/lib/quake3/demo/
├── baseq3
│ ├── botfiles -> ../../../../share/games/quake3-demo-data/demoq3/botfiles
│ ├── cgameaarch64.so -> ../../../ioquake3/baseq3/cgameaarch64.so
│ ├── gfx -> ../../../../share/games/quake3-demo-data/demoq3/gfx
│ ├── pak0.pk3 -> /home/pi/q3-game-data/pak0.pk3
│ ├── pak1.pk3 -> /home/pi/q3-game-data/pak1.pk3
│ ├── pak2.pk3 -> /home/pi/q3-game-data/pak2.pk3
│ ├── pak3.pk3 -> /home/pi/q3-game-data/pak3.pk3
│ ├── pak4.pk3 -> /home/pi/q3-game-data/pak4.pk3
│ ├── pak5.pk3 -> /home/pi/q3-game-data/pak5.pk3
│ ├── pak6.pk3 -> /home/pi/q3-game-data/pak6.pk3
│ ├── pak7.pk3 -> /home/pi/q3-game-data/pak7.pk3
│ ├── pak8.pk3 -> /home/pi/q3-game-data/pak8.pk3
│ ├── qagameaarch64.so -> ../../../ioquake3/baseq3/qagameaarch64.so
│ ├── scripts -> ../../../../share/games/quake3-demo-data/demoq3/scripts
│ ├── uiaarch64.so -> ../../../ioquake3/baseq3/uiaarch64.so
│ └── vm -> ../../../../share/games/quake3-demo-data/demoq3/vm
└── demoq3
...
Launch with
startx /usr/lib/ioquake3/ioquake3 "+set com_homepath .q3ademo +set sv_pure 0 +set vm_ui 0 +set vm_cgame 0 +set vm_game 0 +set fs_basepath /usr/lib/quake3/demo"
configuration file
~/.q3demo/[baseq3|demoq3]/q3config.cfg
q3lite
forked from ioquake
https://github.com/cdev-tux/q3lite
has some nice customization/optimizations (and installation convenience) for Rpi.
Feb 2021: does not support Rpi4 yet. not fully compatible with v3d driver (why?)
https://github.com/cdev-tux/q3lite/wiki/Compiling-Install-Guide
build on Mali
https://github.com/cdev-tux/q3lite/issues/6
Timedemo
record & replay demo
https://www.quake3world.com/q3guide/demos.html
console (~)
/record [demoname]
/stoprecord # or exit
Replay
/demo [demoname]
Timedemo
/timedemo 1 # turn on timedemo mode
/demo [demo name]
Tools for parsing timedemo files
http://www.elho.net/games/q3/q3dspecs.htm
https://github.com/mightycow/uberdemotools
vkQuake3
said to build & run on Rpi4.
https://github.com/suijingfeng/vkQuake3
https://ioquake3.org/
A list:
https://magazine.odroid.com/article/linux-gaming-on-odroid-gaming-on-odroid-n2-desktop-and-gl4es/
Compute
Vulkan: NCNN
OpenCL: Arm Compute Library, Arm NN