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.
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 ;-)
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.
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.
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
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
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,
or Jörgen's
GLQuake. After downloading or compiling
a game engine, place this binary in your Quake directory alongside the
id1 directory.
- Summary
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.
- Help
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:
- -window
Run the game in windowed mode
- -fullscreen
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
- -nosound
Disable sound. Necessary when sound is
absent/unconfigured to stop the game from crashing.
- -nomtex
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
- -nocdaudio
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
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 -
- god
Invulnerability
- noclip
Walk through walls
- notarget
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 "COMMAND"
Bind a key to perform a command
- map MAP
Load MAP
- changelevel MAP
Load MAP without resetting player settings
- quit
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
Watervis)
- _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
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.
http://disenchant.net/engine.html
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.
http://www.icculus.org/twilight/darkplaces
"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 runs
Nehahra much faster than
Darkplaces, and
JoeQuake 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:
su
cd /usr/lib
mv {some directory}/libfmod-3.74.1.so .
ln -s libfmod-3.74.1.so libfmod.so
ldconfig
or visit the
FMOD homepage and install the
libraries manually.
http://qudos.quakedev.com/linux/quake1
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.
http://mfcn.ilo.de/glxquake
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/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/
QuakeForge subversion repository
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.
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.
http://icculus.org/twilight
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.
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 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:
- 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.
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
- Nehahra
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
- Zerstörer
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
- Insomnia
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
- 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.
- Malice
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.
- Shrak
One of the first commercial mods. It has well modelled and totally
new monsters, but the game-play doesn't cut it anymore.
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.
An enhanced Quake engine for on-line and network multiplayer action. It is
incorporated into
FuhQuake,
ProQuake,
QuakeForge and
TyrQuake.
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.
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.
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.
http://www.nexuiz.com
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.
http://www.planetquake.com/digitalpaint/
This slick looking deathmatch mod is another freely distributable Quake II game.
http://www.planetquake.com/td/argonium/
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.
ftp://ftp.runequake.com/quake/engines/proquake
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.
http://tremulous.net
Battle Mech is a top down Mechwarrior style mod. Make sure to use the
1.1 tarball.
http://static.condemned.com/index.shtml
Other trouble-shooting resources can be found at:
Jörgen's GLQuake Site,
the
old version of this how-to, and
Linux Gamers FAQ.
Often, using an alternative game engine such as
TyrQuake,
FuhQuake and
Darkplaces will fix mouse and sound related problems.
"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:."
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.
- 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.
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.
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.
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:
- Warnings
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;
- Optimizations
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.
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.
- 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 display.
- 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 for more information.
- Mouse look
"This game won't let me look around properly. %$!$@"
- Bring down the game console with the "~" key and enter +mlook.
- Mouse doesn't work properly
Try the following -
- Start the game in fullscreen mode by using the -fullscreen option.
- 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 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.
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
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.
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.
- Links
http://www.x.org
Linux Gamers ATI How-To
Linux Gamers Nvidia How-To
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.
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.
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.
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
- Mods
The Dark Conjunction
is an atmospheric Q3 single player conversion.
Or try the alien themed
Tremulous
for an original multiplayer mod.
- Links
The Zerowing
installation
and
known issues
guides hosted by ID Software.
Linuxgamer's
Quake III Howto.
Linux Questions' Quake III forums for
Sound
and
Mouse
problems.
All things Quake III at
Planet Quake
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:
- Links
The
Official Linux Faq
Linux Questions
Quake IV bug forums
Quake IV demo
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.
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)
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.
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.
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;
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.
- 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.
- ID Software
http://www.idsoftware.com
- The Linux Game Tome
http://www.happypenguin.org
- Icculus
http://www.icculus.org
- Icculus Gamers FAQ
http://www.icculus.org/lgfaq
- Linux Gamers
http://www.linux-gamers.net
- Planetquake
http://www.planetquake.com/quake1
- Quake Terminus
http://www.quaketerminus.com
- Retro Quake
http://www.planetquake.com/retroquake/quake/index.html
- Quake Basics
http://www.quaketerminus.com/quakebible/index.htm
- Quake Wikipedias
http://wiki.quakesrc.org/index.php/HomePage,
http://en.wikipedia.org/wiki/Quake
- Jörgen's GLQuake Site
http://mfcn.ilo.de/glxquake
- Quake Forge
http://www.quakeforge.net
- Darkplaces Game Engine
http://www.icculus.org/twilight/darkplaces
- Linux Hexen II project
http://uhexen2.sourceforge.net
- SDL - Cross platform hardware API
http://www.libsdl.org/
- ALSA - Linux sound project
http://www.alsa-project.org
- Lowercase utility
http://filerenameutils.sourceforge.net
- Func_Msgboard - message board from hell ...no, I mean it
http://www.celephais.net/board/forum.php
- ALSA
Advanced Linux Sound Architecture.
- API
Application Program Interface. The computer libraries
which are used when programming, and link the game to the hardware.
- Bot
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.
- Client
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.
- FPS
First Person Shooter. A shooting game viewed from the "first person" perspective.
- Mod
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.
- Noob
Newbie. Someone new to a computer related topic.
- Patch
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. ;-/
- SDL
Simple DirectMedia Layer
cross platform hardware API widely used in Linux games.
- Segfault
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).
- Server
A program central to multiplayer games to which every player connects.
- Tarball
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.
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.
impulses, ezquake.
- 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)
-
This document is released under the GPL.
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.
Steven A.
Sourceforge user page
Email
|