Small (< 5MB) but playable game for Quake III Arena engines, based on Open Arena.
-
Install a Quake III Arena -based engine, such as ioquake3
Note that the engine must support Opus audio decoder (which is included in ioquake3,
USE_CODEC_OPUS), otherwise sounds will not work. The vanilla Quake III Arena engine does not support Opus. -
Download this project as a
.zipfile. On GitHub press "Code" -> "Download ZIP". -
Rename the
quake3-mini.zipfile intoquake3-mini.pk3. -
Alongside the
quake3.exefile, create a folder namedquake3-mini, and put thequake3-mini.pk3file inside of that, as such:Quake 3 Arena ├── baseq3 ├── missionpack ├── quake3-mini │ └── quake3-mini.pk3 └── quake3.exe -
Launch the game using the command line
quake3.exe +set fs_game quake3-mini +map wrackdm17 +addbot sarge +addbot sarge +addbot sarge
Note that the game will look differently
depending on whether you have baseq3 (original Quake III Arena game data).
First, unpack all .pk3s of
Open Arena 0.8.8 mod
into one directory.
Then do the following:
-
Remove all maps except one
-
Remove all models except one
-
Remove sounds except those that are actually used:
the
\s_listcommand will help. To get the result of running the command in text form, utilize\logfile 1. -
Compress the sounds with
set -e while read f; do # Create dir recursively mkdir -p out/$f; rm --dir out/$f; # https://ffmpeg.org/ffmpeg-codecs.html#toc-libopus-1 ffmpeg -i "openarena-0.8.8/$f.wav" -c:a libopus -compression_level:a 10 -b:a 32k -cutoff:a 20000 "out/$f.opus" done <s_list.txt wait
-
Install https://imagemagick.org, then from
\imagelistcommand, getimagelist.txt, thenset -e while read f; do # Create dir recursively mkdir -p out/$f; rm --dir out/$f; # Convert .tga files and re-compress .jpg files. # magick -quality 50 "openarena-0.8.8/$f" "out/${f%.(tga|jpg)}.jpg" magick "openarena-0.8.8/$f.tga" -resize 50% -quality 100 "out/$f.png" & magick "openarena-0.8.8/$f.jpg" -quality 50 "out/$f.jpg" & done <imagelist.txt wait
Note that some
.tgafiles utilize transparency, so.pngmust be used (because.jpgdoesn't support transparency). Some engines'\imagelistalso prints wherther RGB or RGBA (with transparency) is used.I personally hand-picked the ones that need transparency and converted those to
.png, whereas others to.jpg.Also some things, like the cursor, don't seem to like to be
.pngs either, so I kept them as.tgas. Though IIRC they can be resized, withmagick.Also note that some big
.tgas, such asgfx/2d/crosshaira.tga, will get ~95% smaller when zipped, so there is no need to convert them. -
Remove a bunch of other stuff
For some more info, see git commit history. The initial commit is the full Open Arena 0.8.8 mod.
TODO:
- Re-compress models, especially player models,
which are currently responsible for ~800 KB of the final
.pk3file. - Re-compress the map.
With NetRadiant Build -> Single: bsp (
w3map2 -meta "[MapFile]") - Remove shaders.
-
https://github.com/WofWca/quake3.xdc where it is packed, together with the Emscripten build of ioquake3, in a zip file that should fit in an email. That makes it a fully playable Quake III Arena -based game that's under 6 MB.
That project is also the original reason for making this project.
