Next Previous Contents

3. Game Engines

3.1 TyrQuake

TyrQuake is a fairly complete project including OpenGL, Software Quake and QuakeWorld clients, and other tools including the popular TyrLite. Tyrann's focus is on a fully featured but minimalist cross-platform engine.

The latest version is 0.60, which now supports the Power PC platform, FreeBSD and per-user configuration files. Other newish features include sophisticated command line completion, and a cool console effect (gl_constretch).

Typing make will build all the clients. To compile only the single player client, after unpacking the source code type: make prepare tyr-glquake . Tyrann has a nice clean build system, but if you wish to see compilation feedback, add V=1 to the command line.

A patched TyrQuake binary is available here.

http://disenchant.net/engine.html

3.2 FitzQuake

This engine has long been the defacto standard for the Quake mapping community, and has recently been ported to Linux and Macs utilizing SDL.

As well as graphical features such as skyboxes, fog, and coloured light, it includes a rewritten lighting model and enhanced console commands. Fitz is also possibly the only Quake I engine that will not over-utilize your cpu. This enables modern cpus, such as the Athlon 64, to run more coolly at a reduced speed.

Visit the FitzQuake homepage for documentation and windows binaries.

http://www.kristianduske.com/fitzquake

3.3 Darkplaces

Darkplaces is an amazing Quake engine with a great range of visual enhancements and options for colour, effects and sound. It uses the same Doom3 lighting features as Tenebrae and thus requires a more powerful computer than GLQuake and QuakeForge.

It also supports many otherwise incompatible mods including Nehahra and Nexuiz, and has improved support for the official mission packs. Recent changes include improvements to the menuing system, and speed increases, though there also appears to be some mod compatability issues creeping in.

Havoc's file archive can be a little confusing. The large "darkplacesengine" tarballs include precompiled binaries and the game's source code in a second tarball. To compile your own program uncompress the second tarball , type make to see a list of possible targets (programs), and select one. For example - to build the OpenGL engine with ALSA sound type make cl-release, or to build with OSS sound, make cl-release DP_SOUND_API=OSS.

Thanks to LordHavoc for this great project.

http://www.icculus.org/twilight/darkplaces

3.4 QuDos Quake Ports

QuDos has done much work with Quake engines for BSD and Linux. In the past he has ported Nehahra , JoeQuake and others, but currently has only a couple available at his website.

His excellent NehQuake port is still available at LinuxQuake.Org , but those after the source code may try contacting him.

http://qudos.quakedev.com/linux/quake1

3.5 MFCN's GLQuake

Here you'll find some relevant documentation and trouble shooting tips, and a basic version of OpenGL Quake for Linux. Fairly pain free by Linux standards, it supports most Quake mods, but gamma (brightness) support is broken.

http://mfcn.ilo.de/glxquake

3.6 Tenebrae

A Quake engine using lighting techniques similar to those in Doom III. Tenebrae requires a fast computer and may not be compatible with all hardware (the documentation is a little unclear, and ATI cards may not work). This game only ran at 10 to 50 fps on my Celeron 2400 / FX5600. Interestingly, Tenebrae has an "easter egg". To see this, in the quit game dialog press "d". Also check out the "bumptest" and "zoo" maps.

The Tenebrae installer will install the shareware Quake levels, and all fancy Tenebrae models and textures, but is a 100 meg download. (Make sure to run the game in 32 bpp mode - see below). Tenebrae binaries may be available here.

Compilation of the source code may not be straight forward. Firstly:

cd linux ; ln -s Makefile.i386linux Makefile ; make
If compilation fails with "../glquake.h:1137: conflicting types for ....", lines 1137 and 1138 need removing. You may also have to change the gethostname declaration in net_udp.c thus:
- extern int gethostname (char *, int);
+ extern int gethostname (char *, size_t);

After compilation, copy the binary "debugi386.glibc/bin/tenebrae.run" and the Tenebrae data files to your Quake folder. Finally, the game only runs in 32 bpp colours (X11 colour depth 24), so restart X in this mode if you have to, and execute the game with: tenebrae.run -basedir $PWD. Alternatively you can start a new X session with the command:

startx $PWD/tenebrae.run -basedir $PWD -- :1 -depth 24

http://tenebrae.sourceforge.net/

3.7 QuakeForge

QF is a comprehensive Linux Quake project. It has elegant graphical enhancements, numerous single player and QuakeWorld clients and Quake C tools. Amongst it's features are: an overhauled menuing system, a new "heads up display", and in-game help.

Possibly because of it's size, QuakeForge hasn't been updated in years and it's documentation was never quite finished. The usual "configure && make && make install" will build the whole project, but it does not appear to support a minimal single player build option. QuakeForge's default directory is "/usr/local/share/games/quakeforge", so ensure to link to your "id1" directory from here. (For example ln -s /usr/local/games/quake/id1 /usr/local/share/games/quakeforge/id1).

For information about building QuakeForge on the BSD Unices, see the FreeBSD section.

Kudos to the QuakeForge team for a huge project which has provided much inspiration for other open source games.

http://www.quakeforge.net
http://sourceforge.net/projects/quake/

3.8 NPRQuake

Another Quake engine which has been ported to Linux but, as far as I know, hasn't been touched in a few years is NPRQuake. Notably, it has the ability to load different renderers on the fly, which is pretty cool. The Linux port includes support for the cartoon renderer ainpr, and works really well for me.

The SDL version has rewritten mouse and video code, but the sound APIs have not been ported to SDL, and it is not a fully portable engine.

http://www.cs.wisc.edu/graphics/Gallery/NPRQuake/

3.9 Twilight Project

The Twilight Project "is a set of rather minimalist NQ and QW engines that focus on insane rendering speed, it is however a bit unstable at the moment."

This game is ~quick~, with a plain looking, but useful menu system, so users with a slow computer should definitely give this a go. It also has some unique graphical effects and an unusual user interface.

To compile version 0.2.2 of this project, you'll need the python scripting language installed, and perhaps to make this change to src/nq/pr_edict.c , line 1108:

-               if (progs->ofs_strings + pr_stringssize >= com_filesize)
+               if (progs->ofs_strings + pr_stringssize >= (uint)com_filesize)
Executing scons.py will now (hopefully) build the binaries, and after copying the single player client (twilight-nq) to your quake directory, type twilight-nq -basedir $PWD to start the game.

If you're having trouble with compilation, version 0.2.01 uses the traditional "configure && make && make install" method, so you may want to try it.

Game saves are an issue with this engine. There are no game save or load menus, and this can only be done using the "F6" and "F9" keys to quicksave and load. Additionally, this feature often won't work if you started with the "map MAPNAME" command, so make sure you begin games in a normal fashion, through the "Start Game" menu.

http://icculus.org/twilight

3.10 SDL Quake

This basic version of Quake is not really of interest to Linux users as it uses a very old code base, and has few features. It's main feature is the use of the SDL programming API for sound, video and mouse handling, and should run on all SDL supported operating systems without major changes.

SDL Quake does have a bug relating to music: running the game with an audio CD in the drive will limit the game's speed. To avoid this simply remove the CD, or use the -nocdaudio option.

The game runs at a fixed resolution; the width and height can't be changed. To play in fullscreen mode, use the -fullscreen option.

http://www.libsdl.org/projects/quake

3.11 wmQuake

WindowMaker is a window manager for X11, and this tiny version of Quake fits in an 64x64 pixel, dockable applet! You can test it out even if you don't have WindowMaker, but the game will crash if it gets keyboard focus.

For the curious, this game can be benchmarked with timedemo demo1 after removing the "usleep" commands from sys_linux.c.

http://freshmeat.net/projects/wmquake/

3.12 Software Quake

For a more in-depth treatment of Software Quake, see the previous version of this how-to.

The original WinQuake source also came with two pixelated versions of the game:

but compiling them is no longer straight forward. It involves copying Makefile.linux to Makefile, editing this file to remove the extra targets , replacing /usr/X11/lib with /usr/X11R6/lib and typing make build_release.

There are easier options though. TyrQuake and QuakeForge have software clients, and there is also an old SDLQuake written by SDL's author, Sam Lantinga, which should work on all modern platforms.


Next Previous Contents