- Use the Source, Luke
Home | Register | News | Forums | Guide | MyLinks | Bookmark

Sponsored Links

Latest News
  General News
  Press Releases
  Off Topic

Back to files

Linux Quake How-To
Author: Steven A
Version: 2.04
Last updated: 22 November, 2006

This document is a modern guide to id Software's Quake game, with some information about QuakeWorld , Quake II, III and IV.

Table of Contents

  1. Introduction 1.1 Preamble 1.2 About 1.3 Notation
  2. General Info 2.1 Getting Started 2.2 Command Line Options 2.3 Game Console Commands
  3. Game Engines 3.1 TyrQuake 3.2 Darkplaces 3.3 QuDos Quake Ports 3.4 MFCN's GLQuake 3.5 Tenebrae 3.6 QuakeForge 3.7 NPRQuake 3.8 Twilight Project 3.9 SDL Quake 3.10 wmQuake 3.11 Software Quake
  4. Mods 4.1 Mods 4.2 Commercial Mods 4.3 Mapping tools
  5. Multiplayer 5.1 QuakeWorld 5.2 FuhQuake 5.3 XQF and QStat 5.4 Nexuiz 5.5 Digital Paint 2 5.6 Argonium 5.7 ProQuake 5.8 Tremulous 5.9 Battle Mech
  6. Trouble-shooting 6.1 Bash won't start the program 6.2 Program dies at startup 6.3 Program dies loading level 6.4 Sound Problems 6.5 Compilation Issues

    6.5.1 GCC-4.x 6.5.2 Nvidia Drivers 6.6 Other Issues 6.7 Video Drivers 6.8 Sound Drivers

  7. Quake Sequels 7.1 Hexen II 7.2 Quake II 7.3 Quake III Arena 7.4 Quake IV
  8. Other 8.1 Transparent Water and Vispatch 8.2 Nvidia Tweaks 8.3 FreeBSD 8.4 QNX 8.5 Quake Inspired XTerms 8.6 Miscellaneous 8.7 Quotes 8.8 Links 8.9 Glossary 8.10 Credits 8.11 Todo 8.12 Changelog 8.13 License 8.14 Other Formats 8.15 Author

  1. Introduction

1.1. Preamble

Linux Quake sits at the crossroads of two computing revolutions - GNU/Linux, the popular free operating system, and GLQuake, the first "first person shooter" to use the 3D graphics library OpenGL. Quake has a loyal community still making games ten years after it's release by ID Software, and thanks to John Carmack releasing the software under the GPL, people are able to enjoy it on non-proprietary platforms.

Does all this mean our game is important ? No... It's just fun ;-)

1.2. About

This document is a guide to installing Quake and it's many related games and modifications. It includes compilation notes, tips and pointers to the best web resources, as well as some information about Quake II, III and IV.

1.3. Notation

In some places, a shorthand is used to represent changes to a program's source code. This is of the form:

  • code to be removed + code to be inserted in its place

and is similar to the output of the GNU "diff" program when generating unified patches.

Where the term "$PWD" is used, the user should already have executed the command cd {Linux Quake directory}, and have this as their current directory.

2. General Info

2.1. Getting Started

Installing Quake requires a few basic steps.

     Get the Game Data Files
        Getting the game data files is normally done by installing the
        game (or game demo
        <>) using
        Microsoft Windows, or an emulator such as Wine or Dosbox, and
        then copying the id1 directory of the installed game to your
        Linux Quake directory - making sure all files are in

        Alternatively, you can use the lha utility
        <> to extract the data
        files.  For early CDs, you must first

            cat /mnt/cdrom/quake101.1 /mnt/cdrom/quake101.2 > resource.1

     Once you have the resource.1 file, then type

         cd /usr/local/games/quake
         lha e {some directory}/resource.1

     Later versions of the game, including WinQuake, come with the data
     files in an uncompressed form and the id1 directory can be directly
     copied from the CD.

     Install a Quake Executable
        The program you execute to run Quake is known as the ``game
        engine''.  There are several to choose from, but the simplest
        choice is either the author's patched TyrQuake
        sa-0.54.tgz?download>, or Jörgen's ``GLQuake''.  After
        downloading or compiling a game engine, place this binary in
        your Quake directory alongside the id1 directory.

        Finally, you should have a directory structure similar to this,
        with all files being in ``lowercase'':

        /usr/local/games/quake +- glquake.glx (or another game engine)
                               +- id1 -+- config.cfg
                                       +- game.dat
                                       +- pak0.pak
                                       +- pak1.pak

     Now, from an xterm window, type (for example)

         ./glquake.glx -fullscreen -width 800 -height 600

     to start the game.

        This sounds simple, but if you are new to Linux and you are not
        familiar with the command line, try one of these links for more

        ·  ``Trouble-shooting'' section

        ·  The ``old version'' of this how-to

        ·  Linuxgamers Quake howto <http://www.linux-

        ·  Quake wiki <>

        ·  The Linux Game Tome <>

2.2. Command Line Options

Command Line Options are extra parameters that are typed on the Linux command line following the program's name. Quake has a large number of them, some of which vary from engine to engine. The most useful/common ones are:

        Run the game in windowed mode

        Run the game in fullscreen mode

     -game NAME
        Load the mod NAME.

     -mem N
        Reserve N megabytes of memory for the internal heap.  This
        generally defaults to 8 or 16 meg, but must be increased when
        playing larger mods.

     -width WIDTH
        window/fullscreen width

     -height HEIGHT
        window/fullscreen height

     -basedir DIRECTORY
        Use this directory by default

     -sndspeed MHz
        Set sound sampling rate (eg. 44100, 22050, 11025)

     -sndbits N
        Set sound bits to N = 8 or 16

        Disable sound. Necessary when sound is absent/unconfigured to
        stop the game from crashing.

        Disable GL multitextures.

     -listen N
        Allow a maximum of N players/bots to join multiplayer games.

     -cddev DEVICE
        Use DEVICE for playing the cd music

        Disable cd audio

You can also append Quake commands to the Linux command line by prefixing them with a plus sign. For example, to automatically start a new game at hard skill, use

glquake.glx +skill 2 +map e1m1

2.3. Game Console Commands

For more info see

The console is an in-game command line at which you can issue commands, change variables and cheat. It is toggled by pressing the tilde "~" key when in a game. The main commands include -


        Walk through walls

        Enemies won't attack player

     timedemo DEMO
        Play DEMO (eg. "demo1") at top speed and show frame rate

     impulse N
        Issue "impulse N"

        These are in-game commands which can be given special uses. The
        most common cheat is impulse  9 which gives all weapons.

     bind key
        Bind a key to perform a command

     map MAP
        Load MAP

     changelevel MAP
        Load MAP without resetting player settings

        Exit to system

     skill   VALUE
        value = 0 (easy) - 3 (impossible)

        Degree of difficulty. Level must be restarted to take effect

     r_wateralpha    VALUE
        value = 0.0 - 1.0

        Opacity of water in maps with transparent water support (See

     _snd_mixahead   VALUE
        value = 0.1 - 1.0

        Raising this value is a good way to speed up the game at the
        expense of some sound lag. I use 0.3 on my slower computers

     gl_texturemode  VALUE
        value = gl_nearest | gl_nearest_mipmap_nearest |
        gl_linear_mipmap_nearest | gl_linear_mipmap_linear

        Worst to best texture quality.

     r_shadows       FLAG
        flag = 0 | 1

        Display model shadows

     vid_wait        FLAG
        flag = 0 | 1

        Sync video output with screen refresh

     chase_active    FLAG
        flag = 0 | 1

        Show player from third person perspective

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 engine for Windows and Linux. A new feature is command line completion. Pressing the tab key at the console will automatically complete the current command or mapname - similar to the Linux shell, Bash.

Currently at version 0.54, TyrQuake now compiles out of the box on all systems I've tested :-)
Typing make will build all the clients, but to compile only the single player client, after unpacking the source code, type:

make prepare
make tyr-glquake

Alternatively, for a more verbose make process, use:

make tyr-glquake V=1

A patched TyrQuake binary is available here < -0.54.tgz?download>.


3.2. 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.

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.

Much thanks to Lord Havoc for this great project.


3.3. QuDos Quake Ports

"Here you'll find QuDos' `linuxified` src+bin tarballs for popular quake ports, including that of bjp for Nehahra."

This is great news for gamers. For the first time these engines including DemonQuake, JoeQuake, NehQuake, Qrack and Tremor - have been ported to Linux. NehQuake
< linux.tar.bz2> runs ``Nehahra'' much faster than Darkplaces, and JoeQuake < 0.15b1146-bin-src.linux.tar.bz2> has impressive eye candy.

The tarballs include source code, binaries and in most cases the data files necessary for the engine. To install these data files, find the simply named folders (such as "joequake" or "qrack") inside the tarballs and move them to your quake directory. If they are not present you will have to download them from the game's homepage.

For some of the engines, an additional sound library (which is included) has to be installed. To do this:

      cd /usr/lib
      mv {some directory}/ .
      ln -s

or visit the FMOD homepage <> and install the libraries manually.


3.4. MFCN's GLQuake

A great place for Linux noobs to go is Jörgen's no frills site. 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.


3.5. Tenebrae

A Quake engine using lighting techniques similar to those in Doom III. Tenebrae requires a very 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/" 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: -basedir $PWD. Alternatively you can start a new X session with the


startx $PWD/ -basedir $PWD -- :1 -depth 24


3.6. 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.

<> QuakeForge subversion repository <>

3.7. 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 and may work on otherwise troublesome systems. But the sound APIs have not been ported to SDL, so it is not a fully portable engine.


3.8. 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 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.


3.9. SDL Quake

This basic version of Quake is not of major interest to Linux users. It's main feature is that it uses 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 cdrom will limit the game's speed. To avoid this simply remove the CD from the drive, 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.


3.10. 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 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.


3.11. 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:

  • X Quake (quake.x11)
  • Svga Quake (squake)

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 ``SDL Quake'' written by SDL's author, Sam Lantinga, which should work on all modern platforms.

4. Mods

4.1. Mods

There are hundreds of user created levels - known variously as "mods", "total conversions" or simply "maps", all over the internet. When it comes to finding them though, many URLs are no longer valid, and it is easier to just google for a file name (perhaps adding "quake" as an extra search term) than to try and find the project's homepage - which is probably just dust in the ether now.

To run new maps, place the bsp file into the "quake/id1/maps" subdirectory, and start Quake with the +map MAPNAME option.

Installing mods is simply a matter of creating a subdirectory DIR and extracting the contents of the mod zipfile/tarball into this directory. It is then loaded by using the -game DIR command line option and, sometimes, +map MAPNAME where MAPNAME is the mod's start map.

For both maps and mods, all files should be in ``lowercase'' format.

Mod lists can be found at QuakeTerminus <> and UnderWorld (Hall of Fame <>, Recommended <>). At the DoomWadStation you'll find a comprehensive archive <> of Quake levels.

A few of the author's favourites are:

     Soul of Evil
        Gorgeous medieval themed mod with two single player episodes, a
        melee style arena mode and nice documentation.  Many thanks to
        Tronwyn, Fat Controller and their co-authors.  Link

        Epic. Ambitious. Otherwordly.  Nehahra is the definitive Quake
        mod, supported in Linux by LordHavoc's ``Darkplaces'', and
        ``QuDos''' port of the NehQuake engine. It has some great models
        and maps, uses fog effects well, and has an (optional) two hour
        movie/demo which ties-in well with the original Quake "story-
        line" but is also in desperate need of an edit.

        Nehahra also features improved enemy AI - the grunts strafe
        behind cover, and scrags in open space can be very hard to pin
        down. New gamers may wish to disable this feature by typing
        nomonsters 1 at the game console.

        Link <>

     Contract Revoked
        A modern mod which made my jaw drop. It also has ambitious
        sequels: The Lost Chapters and Quoth.  Link

        Dark and bloody, with Doom's paranoiac atmosphere - a classic.
        Zerstörer also has some good death match levels - zerstorer

     Neil Manke's mods
        Neil wrote the definitive Half-Life mod "They Hunger".  The
        quality and fun is in these maps too - alba01, alba02, sofsp1,
        sofsp2, starshp2, Link <>

     The Hunted Chronicles
        Another game requiring the Darkplaces engine, the Hunted
        Chronicles is a zombie shooter/survival mod in two parts. The
        second uses fog and lighting effects to spooky effect, and could
        almost be mistaken for a Half-Life mod.  Link

     Blood Mage
        ... is a dungeons and dragons themed mod with great monsters and
        music. It's a little dated now, and the numerous spells can be
        overwhelming - bmfull

     Operation: Urth Majik
        Oum is one of the few Quake 1 mods with a sci-fi feel. It's a
        well made five level mod with cut-scenes and many new weapons -
        oum <>, Link

     The Coagula Contest 2
        Coagula is a six level compendium of maps originating from a
        contest. The novelty is that all maps are floating in the ether,
        and it's a great set.  Link

     Scourge done Slick
        SdS is a speed run through Mission Pack 1, Scourge of Armagon.
        Hilarious and amazing.  Link

        Cracking game-play and rivers of blood - czg07

     Fantasy Quake
        FQ is a traditional medieval themed conversion. The game has
        some beautiful levels, but also plenty of raw edges as it was
        never quite finished.  (The project ended prematurely when the
        web hosting hit a snag).  Not all the player classes work
        perfectly. Use the "g" key twice to purchase items, the
        "<",">","/" keys for inventory, and the "w","e","r" keys for the
        grappling hook - fantasy

        Here you can get the long lost Fantasy Quake manual

     Gib Factory, Vigil, Museum
        Little mods with great game-play! - gibfact
        <> vigil
        <>, museum

4.2. Commercial Mods

     Mission Pack 1
        Scourge of Armagon by Ritual Entertainment (formerly known as
        Hipnotic Interactive).
        After playing Armagon, you should also check out the Death's
        Dominion <> Level Pack.

     Mission Pack 2
        Dissolution of Eternity by Rogue Entertainment.
        - Both official mission packs are generally acknowledged as
        better than the original game.

        Very original Quake total conversion, with the greatest (make
        believe) machine gun I've ever unleashed.  Worth paying for.

     Abyss of Pandemonium
        Commercial mod now freely available: Link

     Ravages of Apocalypse
        Xmen mod! Great models. Shame about the game-play.  ...When good
        mods turn bad.
        This mod has now been released free of charge, and can be found
        here <>.

        One of the first commercial mods. It has well modelled and
        totally new monsters, but the game-play doesn't cut it anymore.

4.3. Mapping tools

Another first for Quake was the implementation of it's own game language - Quake C. This enables mods to work seamlessly on any operating system. It is possible to install many of the editors which are used to make Quake maps, but creating full scale mods is real voodoo and beyond my knowledge.

GtkRadiant is the only currently maintained and Linux friendly world editor I know of. Link <>

The Quake Army Knife (QuArK) is a multi-purpose Quake editing tool which.. may or may not have Linux support %-(. Link <>

...You may be able to find out from the Func_Msgboard <> - an ongoing hub for Q1 development and new mapping projects.

Bengt Jardrup's homepage <> has lots of mod friendly stuff.

``QuakeForge'' include some Quake C tools with their tarball.

The Quake Wiki <> has some relevant links for the windows platforms.

5. Multiplayer

5.1. QuakeWorld

An enhanced Quake engine for on-line and network multiplayer action. It is incorporated into ``FuhQuake'', ``ProQuake'', ``QuakeForge'' and ``TyrQuake''.

5.2. FuhQuake

FuhQuake <> contains numerous game-play and eye candy enhancements over the original QuakeWorld game. It will still play the original Quake episodes, but the focus is on multiplayer and single player mods won't work. FuhQuake is actively maintained by Fuh and has a loyal following.

5.3. XQF and QStat

XQF <> is a feature rich game server browser and launcher for Quake and many other games. It is dependent on the separate program, QStat <> , which displays information about Internet game servers. You'll also need the Gnome Gtk and Gdk toolkits.

5.4. Nexuiz

Nexuiz is a stand-alone game using the Darkplaces engine. The recently released version 2 is a 200 meg download (!) and includes Linux and Windows binaries, source code, and a new campaign mode.

This engine makes use of many advanced lighting features, so users with less powerful video cards should try disabling these to run the game at a decent speed.


5.5. Digital Paint 2

Paintball comes to Linux !

Digital Paint 2 is an "original" multiplayer game based on the ``Quake II'' engine. It's colourful and fun nature is a departure from the usual dark tone of most Quake games. Being a totally remodeled game, it doesn't require you to have the original Quake II ;->.

Single player games are possible by playing against computer bots.


5.6. Argonium

This slick looking deathmatch mod is another freely distributable Quake II game.


5.7. ProQuake

From the ProQuake website: "...What you will find is a rock solid set of enhancements to unmodified netquake. Things that quake should have had from the get go.. like precise aim. Small, simple changes that improve the quality of netplay enormously. ProQuake is fully compatible with standard NetQuake. .... ProQuake is also fully compatible with the advanced features of Clanring CRMod++ version 6.0."

To make ProQuake's GL client, before typing make, edit "Makefile" to select the GL client:

  • TARGETS=$(BUILDDIR)/bin/squake + TARGETS=$(BUILDDIR)/bin/glquake.glx
  • GLLDFLAGS=-L/usr/X11/lib -L/usr/local/lib -lGL -lX11 -lXext -ldl -lXxf86dga -lXxf86vm -lm + GLLDFLAGS=-L/usr/X11R6/lib -L/usr/local/lib -lGL -lX11 -lXext -ldl -lXxf86dga -lXxf86vm -lm

Like the original GLQuake, brightness support is broken, and owners of new Nvidia cards may have to apply the ``Sys_Printf'' bug fix.


5.8. Tremulous

This Quake III mod is a team deathmatch between aliens and humans. Features include attractive sci-fi themed levels, species hierarchies, and the (aliens') ability to scale walls.


5.9. Battle Mech

Battle Mech is a top down Mechwarrior style mod. Make sure to use the 1.1
<> tarball.


6. Trouble-shooting

Other trouble-shooting resources can be found at: Jörgen's GLQuake Site <>, the ``old version'' of this howto, and Linux Gamers FAQ <>. Often, using an alternative game engine such as ``TyrQuake'', ``FuhQuake'' and ``Darkplaces'' will fix mouse and sound related problems.

6.1. Bash won't start the program

"bash: ./glquake.glx: Permission denied"

  • The binary may not have the executable bit set. Type chmod +x glquake.glx to fix this.
  • If the program is located on a windows partition, it is possible it has been mounted with the noexec option. Type (as root): mount -o remount,exec /mnt/windows

"bash: glquake.glx:command not found"

  • Bash may not be including the current directory in it's path. Type: "export PATH=$PATH:."

6.2. Program dies at startup

This is not good, but some simple options to try are:

  • - use -nosound to test if sound is the problem. Sound problems are covered in detail below.
  • - use -noudp if network is unconfigured.
  • - use -nocdaudio if cdrom is absent.
  • - use -height, -width and -fullscreen command line options to select a screen mode you know is properly configured. e.g. glquake.glx -width 800 -height 600 -fullscreen -nosound

Files not lowercased or Data files missing.

Linux Quake requires (most) filenames to be in lowercase. If you get an error similar to "Error: W_LoadWadFile: couldn't load gfx.wad" it means the game can't find the data files, possibly because they are not all lowercase.

"Memory overwrite in Sys_Printf"

  • This error means you need to edit file sys_linux.c, procedure Sys_Printf, and change text[1024] to text[4096] and recompile. Many versions of Quake have what appear to be two versions of this procedure, but one is always commented out. Obviously you'll need to change the value in the correct procedure.

Problems with GCC 4

  • If you're experiencing core dumps and are using version 4.x of the GNU compiler, see ``Compilation Issues'' below.

6.3. Program dies loading level

  • Many mods require extra memory. Use the -mem 48 option to allocate 48 meg of memory for the heap.
  • A few newer mods just won't work with standard GLQuake, and need an enhanced ``game engine'', though they will generally indicate this in their documentation.
  • In some cases, this problem can be sound related. Try some of the tips in the sound section.

6.4. Sound Problems

For more information see the ``drivers'' section.

An error such as: "/dev/dsp: Device or resource busy" indicates some program is already using your sound card, and you will have to halt this program to get Quake sound effects.

  • From the Linux command line, type killall artsd or killall esd to terminate either of these popular sound daemons.
  • Alternatively, to run Quake through the KDE sound daemon, type artsdsp glquake.glx ...

"Quake engine games exit, and I see an error about mmap!"

  • The Linux Gamers FAQ <> recommends "Your sound card/driver doesn't support this needed feature. However, if you use KDE/arts you may be able to bypass this with the -m switch to the artsdsp wrapper". Make sure the artsd program is running by typing ps -A | grep artsd and checking that this command returns at least one non-empty line. Then type artsdsp -m glquake.glx.
  • Try alternative sound drivers as outlined in the ``Sound Drivers'' section.

Sound stutters or is not very good.

  • See the sound note in ``Compilation Issues''.
  • Try using the -sndspeed or -sndbits option(s), or swapping sound drivers.

6.5. Compilation Issues

The dynamic nature of GNU/Linux means compiling old software is often hard work, and even small hurdles are impossible for people not experienced in C programming. Below are a few relevant issues.

6.5.1. GCC-4.x

     The GNU C compiler has recently had a major revision, and most
     modern distributions now include GCC-4.1. (To find out which
     version you are using, type gcc --version).  The author used
     GCC-3.2.2 to make this How-To, and people using  GCC-4.x may find
     extra problems when compiling programs:

        GCC-4.x issues many more compilation warnings than 3.x. These
        are small errors that can generally be ignored, but when the
        compiler is given the "-Werror" flag, warnings will bring
        everything to a halt. To fix this you can safely remove the
        "-Werror" from the program's Makefile.

     Slurred Sound
        Yet another sound issue. This common problem is fixed by
        altering snd_mix.c thus:

        -           snd_scaletable[i][j] = ((signed char)j) * i * 8;
        +           snd_scaletable[i][j] = ((j < 128) ? j : j - 0xff) * i * 8;

        GCC-4.0 in particular had a problem with "-O" flags breaking
        some variable type-casting. If you are able to compile the
        program , but it segfaults, try disabling these optimizations by
        removing the "-O" options from any makefiles.

If you are having troubles compiling with GCC-4 which weren't there previously, it's possible to install GCC-3.x alongside 4.x. Most people will want to look for precompiled packages from their Linux distribution.

Once GCC-3.x is installed, the program must then be told to compile with this version rather than the default 4.x. Projects that come with configuration scripts will often have options for defining which compiler to use (type ./configure --help and look for hints), and other times you be able to use export CC=gcc32 or edit the Makefile and replace occurrences of "gcc" with "gcc32" (or "gcc-3.2.2", etc) manually.

6.5.2. Nvidia Drivers

The latest Nvidia drivers can also cause headaches. Recently they have started installing their own OpenGL headers by default, which has lead to some conflicting variable declarations. This is fixed by removing them, or by uninstalling the drivers (with nvidia-installer --uninstall) and re-installing with the "--no-opengl-headers" option.

6.6. Other Issues

     Game is too dark
        If changing the brightness setting in the options menu doesn't
        work, you can use the xgamma program to brighten the whole

        ·  Type xgamma -gamma VALUE before running the game, where VALUE
           is a number larger than 1.  When you've finished, use xgamma
           -gamma 1 to restore the brightness.

        This tip will not work with poorly supported hardware. For
        Voodoo 1/2 users, visit here <
        play_doc.php?docid=28982&group_id=124987> for more information.

     Mouse look
        "This game won't let me look around properly. %$!$@"

        ·  Bring down the game console with the "~" key and enter

     Mouse doesn't work properly
        Try the following -

        ·  Start the game in fullscreen mode by using the -fullscreen

        ·  From the game console, type _windowed_mouse 1

        ·  If you're using fluxbox, try another window manager.  Fluxbox
           has issues with some games in fullscreen mode.

        ·  If still without success, try the ``NPRQuake'' or
           ``Darkplaces'' SDL clients.  Typing export
           SDL_VIDEO_X11_DGAMOUSE=0 before starting the game will
           disable hardware dga mouse.

     Game saves fail / Options not remembered
        If you are running Quake as a normal user and experiencing these
        problems it's probably due to having insufficient privileges to
        write to the game directories. Solutions include:

        ·  Run the game as super user: Type su and enter root's password
           before typing glquake.glx ... to start the game.

        ·  Change the game file permissions. Unix operating systems have
           strong security preventing unauthorized or accidental file
           changes.  The simplest way to overcome this in a single user
           environment is to become super user and change ownership of
           the quake directory with (as root): chown -R USERNAME
           /usr/local/games/quake. However it is recommended users read
           the chmod and chown man and info pages to better understand
           Unix file permissions.

        ·  In full multi-user environments it is recommended using the
           ``Darkplaces'' or ``QuakeForge'' game engines, which
           correctly place per-user data in their home directory.

        Quake uses a confusing method of saving and restoring game
        options, especially when playing add-ons, and game options
        sometimes have to be reinitialized even though file permissions
        are not an issue.  In such cases, the author can offer no simple
        advice %-/.

     Crazy polygons
        Some mission-packs/mods for Quake can cause existing
        player/monster models to be drawn with lines all over the place.
        To fix this, delete the directory "quake/id1/glquake".  When you
        next run the game, it will remake this directory and everything
        should be fine.

     Lines on screen
        A common problem with 3dfx cards is a shower of flickering lines
        on the screen.

        ·  From the game console, type gl_ztrick 0.

     Other graphical anomalies
        Some Quake engines use an OpenGL speed-up known as
        multitexturing.  This normally works fine, but if you are
        experiencing glitches you can disable this feature with the
        -nomtex option.

        Older video cards may occasionally draw models in all white.
        See the PlanetQuake command list
        <> for in-
        game GL variables to fine tune performance.
     Glibc Problems
        Some Linux software come as a Loki Installer shell archive with
        a ".run" suffix. The following tip is from the Icculus Gamers

        Q: I'm using {random loki_setup based installer}, and it's telling me the "installation doesn't support glibc-2.1" or something

        A: Just type the following before running [or the installer]: export SETUP_LIBC=glibc-2.1.

6.7. Video Drivers

Setting up hardware GL acceleration under Linux used to be a big deal, but modern distros should now handle this automatically. Of course there are exceptions...

Nvidia's drivers for all of their modern video cards are not open source. Because of this many distributions do not include them. If your Nvidia card is running slowly this is probably the cause and you should visit <> to download the Linux installer. In the author's experience these drivers are great, but not all versions work 100% with all cards and kernels. If you have a misbehaving Nvidia video card, try a different driver.

While new versions of XFree and Xorg have great support for Voodoo 3, 4 and 5, early 3dfx hardware such as Voodoo1, Voodoo2 and Rush are no longer hardware accelerated. To get OpenGL working for these cards, you'll need to download, install and/or compile the software libraries called Glide and Mesa. Here
<> is a detailed README on old 3dfx cards.


        Linux Gamers ATI How-To <http://www.linux->

        Linux Gamers Nvidia How-To <http://www.linux->

6.8. Sound Drivers

There are two major Linux sound systems - Open Sound System and ALSA. If you are experiencing sound problems and the trouble-shooting section hasn't helped, you may consider changing the sound driver. This can be hard work, and is only for experienced users.

To ascertain which driver you are currently using, type lsmod to list currently loaded kernel modules. The ALSA sound modules have verbose names starting with "snd_", while the OSS modules have more terse names. For example, the ALSA Sound Blaster Live module is "snd_emu10k1", while the OSS module is "emu10k1". Since Linux kernel 2.6, ALSA has been the standard sound system, while 2.4 and earlier were more likely to come with OSS sound.

Information about ALSA can be found at the Alsa Homepage <> and Linux Journal's Guide to ALSA <>.

For those already with ALSA wishing to try the OSS modules, a kernel recompile <> is probably necessary.

7. Quake Sequels

7.1. Hexen II

Hexen II is a colourful adaption of the Quake engine, and in terms of source code and theme is much closer than Quake II to the original game. Unfortunately, Raven Software <> released the game with many rough edges... So beautiful, yet so cruel.

Hammer of Thyrion <> is the main Linux Hexen II port , and has had much work done towards squishing bugs and enhancing the OpenGL graphics. While it is not as widely distributed as Quake, the HoT demo includes some of the game's best levels and is available from the Sourceforge project page <>.

7.2. Quake II

Quake II is the sci-fi themed sequel to Quake. Early Linux releases weren't very solid, especially the mouse handling, but there is now a few related projects to choose from.

QuDos' Quake II <> is the most notable. It is based on Icculus Quake II <>, and includes some beautiful graphical enhancements - including cell shading - and support for FreeBSD and XMMS plugins. Another project still in development is Quetoo <> which has speed and security enhancements, but also a very stripped back interface and a few bugs.

Older projects include Michael Olson's source <> and binary <> rpms (which appear to be based on an old Icculus release) and the QuakeForge Quake II
<> project with support for multiple operating systems. On a slightly different note - the Jake2 <> project is a version of Quake II written in Java.

The multiplayer mods ``Digital Paint 2'' and ``Argonium'' are also based on Quake II.

See the ``old version'' of this how-to for Quake II troubleshooting tips.

7.3. Quake III Arena

The third Quake installment was a landmark multiplayer game, with some of the most beautiful and well balanced fragging ever. It was one of the first games to receive a full Linux commercial release.

Most mods should work. The Linux Gamers FAQ reports:

      Yes, ... modifications work in Linux as long as they are compiled to the
      Quake III ... VM bytecode as advised by id software.  ...  modifications
      compiled to Windows library files will not work.

The retail add-on Quake III Team Arena is supported and, despite never getting rave reviews, is a great game.

     Open Source Projects
        Icculus Quake III Project <>

        Sourceforge Quake III - Cell Shading

        The Dark Conjunction <> is an
        atmospheric Q3 single player conversion.

        Or try the alien themed Tremulous <> for an
        original multiplayer mod.

        The Zerowing installation
        <> and known
        issues <> guides hosted
        by ID Software.

        Linuxgamer's Quake III Howto <http://www.linux->.

        Linux Questions' Quake III forums for Sound
        <> and
        Mouse <>

        All things Quake III at Planet Quake

7.4. Quake IV

Quake IV is an epic FPS from the awesome Raven Software <>. It is based on the Doom-III engine and has high hardware specs: A 2GHz P4 (or AMD equivalent) and 512meg ram are the official minimum requirements. It's a beautiful game which should really be played with the graphical settings set to "medium" or "high". For this reason the author recommends against using entry level cards such as the FX5200.

The game runs well under Linux, but still has a couple of issues:

  • Quake IV only runs in 32 bpp colours (X11 colour depth 24), so restart X in this mode if you have to. Attempting to run in 16 bpp colours will give you an error message like:
      Couldn't find matching GLX visual ..... Sys_Error: Unable to
     initialize OpenGL.

     Alternatively you can start a new X session with the command:

     startx `which quake4` -- :1 -depth 24
  • The Alsa sound libraries are used by default. To start with OSS sound , type:

    quake4 +set s_driver oss

  • The Quake IV DVD Edition comes with several promotional movies. Although the movies appear to be Windows executables, they are in fact Bink videos, and can be viewed with the Linux Bink Player <>.
  • Apart from demanding a quality video card and CPU, the author found 512meg ram to be slightly insufficient and performance wasn't great.

    The game ran better after placing the kernel's swap file on a different hard-drive from the game. To do this, once you have the second disk installed and partitioned, type (for example)

    swapoff -a mkswap /dev/hdb2 swapon /dev/hdb2

if hdb2 is the new swap partition.

        The Official Linux Faq

        Linux Questions Quake IV bug forums

        Quake IV demo

8. Other

8.1. Transparent Water and Vispatch

The game variable "r_wateralpha" allows for water transparency - but most maps don't have the necessary "vis" information. There are two ways to get this. After setting r_wateralpha < 1.0, issuing the console command r_novis 1 enables the game to calculate it's own vis information at the penalty of cpu cycles. Alternatively, vispatch is a utility that patches your Quake/QuakeWorld levels to support transparent water.

To do this you'll need the vispatch utility < 132.tgz?download>, as well as the vispatch data files <> for the game you are patching.

Vispatch was originally written by Andy Bay but has not had much support since and is finicky to use. Old Linux binaries on the web won't work, and the utility itself has a rigid structure. To patch the main data files in "id1" - from your Quake directory - type vispatch -dir id1 -data id1.vis

Vispatch Homepage <> (outdated)

8.2. Nvidia Tweaks

These tweaks are for users with a GeForce video card (or better) and Nvidia's proprietary drivers. They are accessed using the bash command export {variable}={value} and then starting the Quake engine from the same command line. Alternatively, recent drivers have a nvidia-settings command which starts up a user-friendly control panel.

Full details of these tweaks are in the Nvidia README, normally installed at "/usr/share/doc/NVIDIA_GLX-1.0/README"

     Full Screen Antialiasing
        export  __GL_FSAA_MODE={value}

video card effect value

all disable 0 ----------------------------------------------------- GeForce, GeForce2 1.5x1.5 Supersampling 3 2x2 Supersampling 4 ----------------------------------------------------- GeForce4 2x Bilinear 1 2x2 Supersampling 4 ----------------------------------------------------- GeForce3, GeForce4 Ti, 2x Bilinear 1 GeForce FX 4x Bilinear 4 ----------------------------------------------------- Synchronize Picture Redraw export __GL_SYNC_TO_VBLANK=1 Synchronizes GL output with your monitor's vertical refresh, giving a more stable image especially on slower video cards.

8.3. FreeBSD

The author has limited experience with this OS and currently uses FreeBSD 5.3 with Nvidia's proprietary drivers. ``Darkplaces'' and ``Hammer of Thyrion'' work well with this system.

``QuDos'' has recently ported several engines <> to Linux and has recently started work on FreeBSD compatibility. His great Quake II project <> is also now BSD friendly.

For basic GLQuake support, you can find a hacked FreeBSD binary and source tarball here
< -1.0.tgz?download>.

``QuakeForge'' is a comprehensive Quake project, but may have installation issues with newer FreeBSD releases. The memory allocator routine "alloca" is not correctly detected on FreeBSD 5.3. The fix is, after running "configure", to add "#define C_ALLOCA 1" to "include/config.h" and undefine other ALLOCA variables. Another issue is the opening of plugins. If the project builds, but you can't get the console or menus, you may have to enable static plugins using configure LDFLAGS=-lpthread --with-static-plugins.

8.4. QNX

QNX is a commercial real-time operating system, probably most notable to hobbyists as being a successful microkernel OS. ``SDL Quake''-1.0.9 compiles and runs on QNX-NC-6.2.1 after running configure --host=QNX and then making these changes:

Makefile: -LIBS = -L/usr/local/lib -lSDL -lm -lph -lasound

             +LIBS =  -L/usr/local/lib -lSDL -lm -lph -lasound -lsocket
  net.h:     -extern unsigned long htonl (unsigned long hostlong);
             -extern unsigned long ntohl (unsigned long netlong);
  sys_sdl.c: -#include <sys/shm.h>
             -int psize = getpagesize();
             +int psize = _SC_PAGESIZE;

8.5. Quake Inspired XTerms

Quake's in-game console is a great feature and has been adopted by many other games. Now you can also use the 'tilda' key to access X terminal windows. Both Yakuake <> and Tilda <> are projects inspired by this idea.

Unfortunately neither are easy to install from source. Yakuake is a KDE application and needs the KDE development packages, and compiling Tilda is more complicated. It requires a couple of unusual libraries, and gave this author compilation errors, so perhaps looking for a RPM package is a better choice. The author can recommend Yakuake as a very handy X terminal.

8.6. Miscellaneous

  • Because of the way the original game renders the sky, any map with numerous outdoor enemies suffers a big performance hit.
  • You can jump further when strafing than when going forward or back 8-)
  • The timedemo demo1 command is a great way to benchmark your system.
  • Rocket-jumping is the technique of using a rocket or grenade explosion to jump further than normal. For a demonstration see the Scourge done Slick speed run.
  • Popular games derived from the Quake engine include - Return to Castle Wolfenstein, Half-Life, Star Trek Voyager - Elite Force, Soldier of Fortune, American McGee's Alice, and - distantly - Doom III.


  • John Carmack - "At this time (march '97), the only standard opengl hardware that can play glquake reasonably is an intergraph realizm, which is a VERY expensive card"
  • From the original Quake How-To - "Hardware-accelerated OpenGL Quake is Quake the way God intended it to be. There is no substitute, and once you've experienced it there's no going back."
  • Func Message Board - "... This Will Produce A Fully Functional Bouncing, Exploding Zombie." Sounds like fun :)
  • Quake Wikipedia - "Quake and its three follow up games, Quake II,Quake III Arena and Quake 4 (which many do not regard as true sequels), have sold over 4 million copies combined. In 2005, a version of Quake was produced for mobile phones."
  • Moby Games (by Pathogen) "... Quake was the first FPS to introduce realistic lighting and shadows. Of course, this came at a price. Quake has taken a lot of flak because it's all dull brown and grey. This was necessary because it was the only way to get the lighting to work properly. Since each surface needs a wide variety of reserved colors for displaying darkened/brightened portions of the surface, the game was limited to just a few colors and all their respective shades." (by Ashley Pomeroy) "Almost incidentally, Quake introduced the now-standard concept of a FPS control interface. Although the specifications required a Pentium, Quake ran acceptably well on a 486 DX4/100"
  • Slashdot Tenebrae Forum -

    ... this ... now officially labels this guy as a badass graphics programmer. I can hear it now:

    MR. BURNS: "I need a programmer! Get John Carmack on the line!" SMITHERS: "He's unavailable sir." MR. BURNS: "Then get me his non-union Belgian equivalent!"

8.8. Links

     ID Software

     The Linux Game Tome


     Icculus Gamers FAQ

     Linux Gamers


     Quake Terminus

     Retro Quake

     Quake Basics

     Quake Wikipedias

     Jörgen's GLQuake Site

     Quake Forge

     Darkplaces Game Engine

     Linux Hexen II project

     SDL - Cross platform hardware API

     ALSA - Linux sound project

     Lowercase utility

     Func_Msgboard - message board from hell, I mean it

8.9. Glossary

        Advanced Linux Sound Architecture <>.

        Application Program Interface. The computer libraries which are
        used when programming, and link the game to the hardware.

        A computer generated player with artificial intelligence
        (cough), in a multiplayer game. Used to play multiplayer when
        no-one's around or not connected to a network.

        This word is used in two subtly different ways. In single
        player, the Quake game is known as a client, with different
        clients using their own graphics libraries (for example, the GL
        client "quake.glx" or the X11 client "quake.x11"). The usage is
        similar in multiplayer games, but also means the per-user
        program which connects to a single "server" program which lets
        all the players exist in the same world.

        First Person Shooter. A shooting game viewed from the "first
        person" perspective.

        Modification to the original Quake game varying from a complete
        game overhaul (total conversion) to simple map/model reworks.
        Quake was designed to allow for ease of platform portability
        with it's own computer language "Quake C" giving mappers control
        over most every aspect of their Quake world.

        Newbie. Someone new to a computer related topic.

        A software patch (or diff) is a single file used to alter a
        source code tree before compilation. It is often used to fix
        bugs or add new features that the original author didn't

        Usage of the GNU patch utility is of the form patch [--dry-run]
        -pNUM <FILE  where NUM is the number (usually 0 or 1) of
        directories to strip from the patch file. This number is not
        obvious except to unix gurus, but using the "--dry-run" option
        will let you test run patch so you can find the correct NUM.
        ...Using the wrong number will make patch output all sorts of
        cryptic messages which can be terminated with a control-C

        Of course you could always type man patch and learn for yourself
        how to use this powerful unix command. ;-/

        Simple DirectMedia Layer <> cross platform
        hardware API widely used in Linux games.

        A broad term indicating a program is faulty and terminated
        abruptly.  Depending on the bash shell's ulimit -c setting, a
        dump of the program's image (coredump) may be left behind for
        examination with the GNU debugger (GDB).

        A program central to multiplayer games to which every player

        An archive file such as somefile.tar created by the "tar"
        program.  It is often compressed using the programs "gzip" or
        "bzip2", in which case it will normally end in the letters .gz
        or .bz2. The extension .tar.gz is often shortened to .tgz.

8.10. Credits

Thanks to:

  • The Linux Documentation Project <>.
  • Linus Torvalds for hacking together his free operating system kernel.
  • ID Software <>.
  • O. Sezer for pointers to some of the many things I'm clueless about.
  • Quake modders great and small.

This webpage was constructed using Linuxdoc-Tools-0.9.20 (currently unmaintained), Vim <> and Bash <>.

8.11. Todo

impulses, ezquake.

8.12. Changelog

     2.04 (November 2006)
        Added some troubleshooting hints for Quake IV.

        A new section for (gcc-4.1) compilation issues.

        Links to the Quake III Cell Shading project.

     2.03 (July 2006)
        Changed order of game engines, added extra compilation notes,
        and expanded the Tenebrae, SDLQuake and wmQuake sections.

        New multiplayer entries for ProQuake, XQF and Tremulous.
        Reorganised several categories in the "Other" section, including
        new Nvidia Tweaks, License, Changelog and Vispatch sections.

        Updated the author's patched Tyr-Quake binary, with a few new
        hacks added to TyrQuake-0.54.

        Some small changes to the featured mods.

     2.02 (February 2006)

8.13. License

This document is released under the GPL.

8.14. Other Formats

The Quake How-To is also available as a text file <> and a single html file <>.

The latest version should be available here <>.

Version v1.0.1.14 (30 August 1998) of the Quake How-To is located at the original author's site <>.

8.15. Author

Steven A.

Sourceforge user page <>

Email <mailto:yahoo - dot - com - username - stevenaaus>

Sponsored Links

Discussion Groups
  Networking / Security

About | FAQ | Privacy | Awards | Contact
Comments to the webmaster are welcome.
Copyright 2006 All rights reserved.