Skip to content

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