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. The game still has a community making new maps ten years after it's release by id Software. And thanks to John Carmack releasing the software under the GPL, we are able to enjoy it on non-proprietary platforms.
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. You'll also find many issues relevant to Linux gaming in general.
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 placeand 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.
Installing Quake requires a few basic steps.
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 lowercase.
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
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.
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 TyrQuake, or the more enhanced FitzQuake. 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 +- tyr-glquake (or another game engine) | +- id1 -+- config.cfg | +- game.dat | +- pak0.pak | +- pak1.pakNow, from an xterm window, type (for example)
./tyr-glquake -fullscreen -width 800 -height 600
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 information:
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
Load the mod NAME.
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.
window/fullscreen width
window/fullscreen height
Use this directory by default
Set sound sampling rate (eg. 44100, 22050, 11025)
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.
Allow a maximum of N players/bots to join multiplayer games.
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
tyr-glquake +skill 2 +map e1m1
For more info see http://www.planetquake.com/console/commands/quake.html
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 -
Invulnerability
Walk through walls
Enemies won't attack player
Play DEMO (eg. "demo1") at top speed and show frame rate
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 a key to perform a command
Load MAP
Load MAP without resetting player settings
Exit to system
value = 0 (easy) - 3 (impossible)
Degree of difficulty. Level must be restarted to take effect
value = 0.0 - 1.0
Opacity of water in maps with transparent water support (See Watervis)
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
value = gl_nearest | gl_nearest_mipmap_nearest | gl_linear_mipmap_nearest | gl_linear_mipmap_linear
Worst to best texture quality.
flag = 0 | 1
Display model shadows
flag = 0 | 1
Sync video output with screen refresh
flag = 0 | 1
Show player from third person perspective
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
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
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
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
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.
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 ; makeIf 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/
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/
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/
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.
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
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/
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.
Quake has hundreds of user created levels - known variously as "mods", "total conversions" or simply "maps". 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.
There has recently been an effort to archive many Quake maps: Quaddicted maps, mods.
Some of the more notable mods:
This recently released mod is a must have. It includes 15 single player levels, stunning bosses, and a couple of twisting spider infested caverns. Distrans has also contributed a professional quality soundtrack, composed of moody and interesting electronic vibes. Link
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
Quoth began life as a sequel to the (draw-dropping) mod, Contract Revoked, but has recently gained much support from mappers, as is becoming the defacto extension of Quake I.
It's new features include numerous crazy enemies (with better AI), destructable environments, and other items including ladders and flashlights. 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
Dark and bloody, with Doom's paranoiac atmosphere. A classic. Zerstörer also has some good death match levels - Link
Neil wrote the definitive Half-Life mod "They Hunger". The quality and fun is in these maps too - alba01, alba02, sofsp1, sofsp2, starshp2, Link
Oum is one of the few Quake 1 mods with a sci-fi feel. It has five well made levels, with cut-scenes and many new weapons - Download, Link
SdS is a speed run through Mission Pack 1, Scourge of Armagon. Hilarious and amazing. Link
Cracking game-play and rivers of blood - Link
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 - Manual, Link
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.
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.
Commercial mod now freely available: Link
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.
Nexuiz is a stand-alone game using the Darkplaces engine. The recently released second version 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.
This project now works for me, and is looking very nice.
As well and as GL, X11 and SVGA clients, it has serious graphical and game-play enhancements and some nice documentation. It is definately a project to keep up with.
Sound may be an issue. It defaults to ALSA but to start with OSS try: "ezquake-gl.glx +set s_device /dev/dsp". To compile the GL client, type "make glx". You may have to change the Makefile thus:
- LDFLAGS = -lm -lpthread + LDFLAGS = -lm -lpthread -L/usr/X11R6/lib
http://ezquake.sourceforge.net
http://ezquake.sourceforge.net/forum/
An ambitious project, FTE Quakeworld aims to offer support for multiplayer Quake as well as similar projects such as Hexen II. GB reports: "The FTE engine also runs NQ stuff and even Nehahra... even in software"!
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 -lmLike the original GLQuake, brightness support is broken, and owners of new Nvidia cards may have to apply the Sys_Printf bug fix.
ftp://ftp.runequake.com/quake/engines/proquake
Popular deathmatch mod including new weapons.
SoE in arena mode has some great melee action.
Battle Mech is a top down Mechwarrior style mod. Make sure to use the 1.1 tarball.
Bots are computer generated players with artificial intelligence. Some require "waypoints" to successfully navigate.
Popular bot designed for easy integration into mods.
Highly regarded as one of the best, hundreds of maps supported.
Venerable mod by Mr. Elusive, who went on to create Gladiator bot for Q2 and the Q3:Arena bots. Needs no waypoints.
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.
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.
Mappers should note the Quest world editor, and HexenC compiler FTEQCC.
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.
Qfusion appears an interesting project... that's slipped under my radar till now. An advanced multipurpose engine based on Quake II.
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.
A common command line option is:
+set vid_ref glx +set gl_driver /usr/lib/libGL.so.1
which tells the game to start in OpenGL mode.
See the old version of this how-to for other Quake II troubleshooting tips.
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 ;->.
Argonium is a slick looking deathmatch mod which is also freely distributable.
Quake III was one of the first games to receive a full Linux commercial release. It's a great game which more than survives. Mods are numerous, and of better visual quality than Quake I or II. For more info about installing the game, try idsoftware's Faq, or Linuxgamer's Quake III How-To.
The retail add-on Quake III Team Arena is supported and, despite getting ordinary reviews, is a great game. Most user mods should work with Linux. 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 Icculus Quake III Project which has recently moved to IOQuake. They are adding extra features, including support for Star Trek Voyager: Elite Force Holomatch (multiplayer).
Sourceforge Quake III - Cell Shading
Warsow is a cell-shaded cartoon style total conversion using a heavily modified engine. It's interface is very slick, graphics to die for, and gameplay is ok.
World of Padman is a high quality stand-alone conversion. It's set in a miniature suburban world with a bizarre cartoon theme, and is currently multiplayer only but with full bot support.
In Alien Arena you're matched against pin headed martians in unbelievable OpenGL environments.
The Dark Conjunction is an atmospheric Q3 single player conversion.
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 How-To.
Linux Questions' Quake III forums for Sound and Mouse problems.
All things Quake III at Planet Quake
Quake IV is an epic FPS from 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:
startx `which quake4` -- :1 -depth 24
quake4 +set s_driver oss
Linux Questions Quake IV bug forums
Creating mods is done with map editors and compilers, but also involves .... texture creation, making pak files, modeling, skinning, editing sound and graphics files, and writing your own progs.dat with Quake C. Linux support is available, but is not comprehensive.
Quake C is Quake's own game language (it was the first game such), and it allows mods to work seamlessly on all operating systems.
The main map editor for Quake. It is based on id Software's own editor, and requires OpenGL.
A multi-game world editor. It has a stiff learning curve, but is very efficient after you master it.
Linux port of the most used map compilers.
Tyrann's popular map compilers, including qbsp, vis and tyrlite. Supports rotating entities and coloured lights.
LordHavoc's compiler. It can compile leaky or incomplete maps (use only for testing!) and does a ton of other stuff, including coloured lighting.
Command line tools to handle pak and wad files (source code only).
Comprehensive, advanced QuakeC compiler with gui and command line versions. If this one can't compile it, nothing will!
QuakeC compiler
Wine is a project that allows many Windows programs to work with Linux.
Multipurpose texture editing tool. Can batch convert BMP files to Quake textures, etc. Also provides several paint functions, and macros such as rivets and decals.
QuArK is a multipurpose Quake editing tool. It loads, edits and exports multiple file formats, and has matured into a multi-game, multi-format tool. Some functions are broken though, and it may not work with all versions of Wine.
Light tool that does radiosity-based lighting, like Quake II.
Other trouble-shooting resources can be found at: The Linux Gamers FAQ, Jörgen's GLQuake Site, and the old version of this how-to.
Often, using an alternative game engine such as TyrQuake, FitzQuake or Darkplaces will fix mouse and sound related problems.
"bash: ./glquake.glx: Permission denied"
"bash: glquake.glx: command not found"
This is not good, but some simple options to try are:
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.
Missing libraries: "error while loading shared libraries: libGL.so.1: cannot open shared object file"
A message like this means the program cannot run because it can't find a system file it needs. Perhaps:
Dynamic libraries (or DLLs as they are known to Windows users) can be quite complex. For more information try the ldd and ldconfig man pages.
"Memory overwrite in Sys_Printf"
Problems with GCC 4
Most Quake games rely on OpenGL (libGL.so) for their graphical features. Setting up OpenGL is beyond the scope of this document. Very slow performance means you're probably using Mesa GL instead of proper hardware GL acceleration.
Performance gains can also be made by disabling fancy effects such as light bloom, and by slowing sound mixing with the console command "_snd_mixahead .4"
Minor game slowdown's with Nvidia hardware can also be attributed to the use of conflicting AGP drivers. For more info about this see Nvidia AGP Issues
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.
"Quake engine games exit, and I see an error about mmap!"
Sound stutters or is not very good.
SDL provides a simple way of changing the sound driver using the
SDL_AUDIODRIVER environment variable. Run the game using a command line like:
SDL_AUDIODRIVER=xxx darkplaces-sdl
Valid values on linux are: dsp (uses OSS), alsa (uses
ALSA), esd (uses the ESD daemon), and maybe arts (uses
the aRTs daemon)
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.
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 generally uses GCC-3.2.2 , 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.
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.
Most of these legacy programs will probably not work as 64 bit binaries.
It is still possible to compile 32 bit binaries on a 64 bit operating system however. To do so, edit Makefiles and add "-m32" to the load and compile flags (LDFLAGS, CFLAGS). This tells GCC to build and link a 32 bit program (if the 32 bit SDL and OpenGL libraries are also installed). You may also have to disable the use of x86 assembly.
If you are having trouble running 32 bit apps, try using the linux32 command. For example: linux32 tyr-glquake.
If changing the brightness setting in the options menu doesn't work, you can use the xgamma program to brighten the whole display.
"This game won't let me look around properly. %$!$@"
Try the following -
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:
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 %-/.
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.
A common problem with 3Dfx cards is a shower of flickering lines on the screen.
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 single models in white. See the PlanetQuake command list for in-game GL variables to fine tune performance.
Some Linux software come as a Loki Installer shell archive with a ".run" suffix. The following tip is from the Icculus Gamers Faq:
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 setup.sh [or the installer]: export SETUP_LIBC=glibc-2.1.
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.
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 http://www.nvidia.com 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.
With Nvidia's proprietry drivers installed, Linux can use either AGPGART or Nvidia's AGP drivers for AGP access. This option is set by "NvAGP" in your /etc/X11/xorg.conf file.
From Nvidia's README:
Option "NvAGP" "integer" Configure AGP support. Integer argument can be one of: Value Behavior -------------- --------------------------------------------------- 0 disable AGP 1 use NVIDIA's internal AGP support, if possible 2 use AGPGART, if possible 3 use any AGP support (try AGPGART, then NVIDIA's Please note that NVIDIA's internal AGP support cannot work if AGPGART is either statically compiled into your kernel or is built as a module and loaded into your kernel.
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"
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 -----------------------------------------------------
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.
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, though this is not trivial. The author does have precompiled libGL for the Voodoo2, and his patched TyrQuake includes proper 3Dfx brightness control. Here is a README for old 3Dfx cards.
The author has limited experience with this OS and has tested projects on FreeBSD 5.3 with Nvidia's proprietary drivers. Darkplaces, TyrQuake 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.
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.
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;
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, as well as the vispatch data files for the game you are patching.
To patch the main data files in "id1" - from your Quake directory - type vispatch -dir id1 -data id1.vis
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.
... 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!"
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 include.
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 character.
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 connects.
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.
http://wiki.quakesrc.org/index.php/HomePage, http://en.wikipedia.org/wiki/Quake
Thanks to:
This webpage was constructed using Linuxdoc-Tools-0.9.20 (currently unmaintained), Vim and Bash.
Added detailed mapping section, with much input from GB.
Quite reordered document
Added notes for other game types such as CTF and Rocket Arena, and removed FuhQuake.
Added a few links to the id store.
Added sections about performance issues, and NvAGP.
Rewrote Q3 section..
Restructured multiplayer mods sections of the document, especially the Quake II section.
Added FitzQuake(!), Alien Arena, FTE QuakeWorld.
Updated VisPatch links.
Added note about SDL_AUDIODRIVER.
Consolidated links in mods section to Quaddicted.
Removed note about old versions of fluxbox.
Included Travail mod, removing a few others.
Added EzQuake, World of Padman, IOQuake.
Updated TyrQuake (and binary), Darkplaces, FuhQuake and QuDos.
Re-wrote document abstracts, and the NVidia and 3Dfx sections.
Added to trouble-shooting section a note about (missing) libraries.
Miscellaneous link updates.
Miscellaneous link updates.
A small section for 64 bit cpus.
Moved "Links" to it's own section.
Added some troubleshooting hints for Quake IV.
A new section for (gcc-4.1) compilation issues.
Links to the Quake III Cell Shading project.
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.
This document is released under GPLv2.
The Quake How-To is also available as a text file, a single html file. and in Turkish.
The latest version should be available here or here.
Version v1.0.1.14 (30 August 1998) of the Quake How-To is located at the original author's site.
Stevenaaus lives and works in rural australia.