To install Quake on your Linux system, you'll need some flavor of the
official Quake distribution from id. This will be either the retail
DOS/Windows CD-ROM that you bought at your favorite software store, or the
shareware version you downloaded from the net (see
below for details on acquiring the shareware
version). Alternatively, if you've already got Quake installed on a
DOS/Windows machine, you can use the relevant files from that installation.
You will need, as a bare minimum, the following:
- A Pentium 90 or better (133 recommended) computer
- 16 MB RAM (24 recommended)
- The Quake CD-ROM or the shareware version (quake106.zip)
- Linux kernel version 2.0.24 or later
- libc 5.2.18 or later
- One of the following:
- X11R5 or later (for xquake)
- SVGAlib 1.2.0 or later (for squake and glquake)
- 30-80 megabytes free disk space (depends on how you install)
- Access to the root account of the machine you're installing on
Optional:
- A supported soundcard
- A 3Dfx VooDoo Graphics or VooDoo2 3D graphics accelerator card.
- Mesa 2.6 or later (for glquake)
Download the Necessary Files **
All the necessary files for Linux Quake are available at id Software's
ftp site,
ftp.idsoftware.com. This site can be quite busy at times,so you
may want to use one of these mirror sites instead:
The Quake files mentioned in in this section are:
Other software mentioned:
Create the Installation Directory ++
The first thing you'll need to do is decide where you want to install
Quake. Lots of folks like to put it in /usr/games/quake
. Anal
system administrator that I am, I choose to install anything that's not
part of my Linux distribution under /usr/local
. So
for me, Quake goes in /usr/local/games/quake
. If you choose to
install somewhere else, please substitute the appropriate path wherever
/usr/local/games/quake
is mentioned.
Note to Redhat users: If you plan on installing QuakeWorld from the
rpm
packages, you should probably install Quake in
/usr/local/games/quake
, since the rpm
s install to this
directory by default.
So go ahead and create the directory you'll install Quake in, and cd
to it. The rest of these instructions will assume that this is your
current directory.
mkdir /usr/local/games/quake
cd /usr/local/games/quake
Installing From a Quake CD ++
If you're installing from a Quake CD-ROM, read on. Otherwise you have
permission to skip this section.
There are at least two versions of the Quake CD in circulation. I've got
one from the early days that has Quake version 1.01 on it. Iv'e seen
other CDs that contain version 1.06. You have 1.01 if you see files on
your CD called quake101.1
and quake101.2
. If instead
you see a file called resource.1
, you have a newer CD.
Mount your Quake CD now and determine which version you've
got. In the example below, replace /dev/cdrom
and
/mnt/cdrom
with the device file and mount point appropriate for
your sysem:
mount -t iso9660 /dev/cdrom /mnt/cdrom
ls /mnt/cdrom
- If you have a
resource.1
file on your CD, you can skip
ahead to the next bullet. For a version 1.01 CD, you'll need to download
the Quake shareware package to update the .pak
files after the
installation. The last bullet in this section explains this.
- Concatenate the two resource files from your CD to a single file
on your hard disk:
cat /mnt/cdrom/quake101.1 /mnt/cdrom/quake101.2 > resource.1
- Now continue on to the next paragraph, but when I refer to
/mnt/cdrom/resource.1
, you should use
/usr/local/games/quake/resource.1
instead.
- Now it's time to extract the Quake
files. The
resource.1
file on your CD is really an lha archive
(lha is a file compression and archiving format like zip or tar). We'll
use the lha(1)
command to extract it. If lha is not already
installed on your system, you can get it from
ftp://sunsite.unc.edu/pub/Linux/utils/compress/lha-1.00.tar.Z.
lha e /mnt/cdrom/resource.1
When lha is done, your Quake directory will contain a bunch of new files.
A directory called id1/
will also be created. The files in this
directory are the only ones that are important for Linux Quake, so you can
safely remove everything else. If you're totally new to Quake, or even if
you're not, you may want to hang on to the *.txt
files. On
my system, I throw all the readmes that accumulate into a doc/
directory. So:
cd /usr/local/games/quake
mkdir doc
mv *.txt doc
rm -f *
- If you installed from a version 1.01 CD, now you need to overwrite
your
id1/pak0.pak
file with the one from the Quake shareware
version. Install the shareware version as described in
Shareware Version Install, only
install it in some temporary directory so you don't overwrite your real
Quake files. When you've extracted all the shareware files, copy
the id1/pak0.pak
file from the temporary shareware directory
to your /usr/local/games/quake/id1
directory. After that, you
can erase the temporary shareware files.
That's it for installing from the CD. You can jump ahead to section
"
Installing the Linux Binaries" now.
DOS/Windows to Linux Install
If you have Quake installed under Windows or DOS on a different machine, you
can transfer the files in quake\id1\
to your Linux system via
FTP or some other mechanism. Keep in mind that the filenames on your
Linux system must be in lower case for Quake to find them, so you may have
to rename them after the transfer. Also note that it may be necessary to
delete your DOS/Win installation after you do this to remain in compliance
with the terms of id's software license. It's not my fault if you do
something illegal.
If your DOS/Win and Linux systems are on the same machine, you have two
options: copy the files from your DOS/Windows partition to your Linux
partition, or link to the necessary files from Linux. Both options will
work equally well. You just save around 50 megabytes of disk space when
you link instead of copy.
Whatever you choose to do, start by cd'ing to your Quake directory and
creating a new directory below it called id1
:
cd /usr/local/games/quake
mkdir id1
- If you want to copy the files from your DOS/Windows partition, do
something like this:
cp /win95/games/quake/id1/*.pak id1
- To create links to your DOS/Windows Quake files instead, do this:
cd id1
ln -s /win95/games/quake/id1/*.pak .
Replace /win95/games/quake
with the correct path to
your DOS/Windows partition and Quake installation directory.
The Quake data files are now installed. Move ahead to "
Installing the Linux Binaries".
Shareware Version Install
The single-episode shareware version of Quake is freely available for
download from id's ftp site. It has all the features of the full version,
with a couple of major limitations: You can't play QuakeWorld with it,
and you can't play custom or modified levels.
Installing the shareware version of Quake isn't really much different than
installing from the CD.
See section
Download the Necessary Files for
the location of the shareware distribution.
Download it and extract it to your Quake directory:
cd /usr/local/games/quake
unzip -L /wherever/you/put/it/quake106.zip
Now you've got (among others) a file called resource.1
that's
really an lha archive (lha is a file compression and archiving format like
zip or tar). We'll use the lha(1) command to extract it. If lha
is not already installed on your system, you can get it from
ftp://sunsite.unc.edu/pub/Linux/utils/compress/lha-1.00.tar.Z.
lha e resource.1
When lha is done, your Quake directory will contain a bunch of new files.
A directory called id1/
will also be created. The files in this
directory are the only ones that are important for Linux Quake, so you can
safely remove everything else. If you're totally new to Quake, or even if
you're not, you may want to hang on to the *.txt
files. On
my system, I throw all the readmes that accumulate into a doc/
subdirectory. So:
cd /usr/local/games/quake
mkdir doc
mv *.txt doc
rm -f *
Now you're ready to install the Linux binaries.
Decide which of the three flavors of Quake you'd like to install:
- X11 Quake allows you to run
Quake in a window on your X desktop. It's the least exciting client, but
it's a great, safe way to test your installation.
- Squake is the SVGAlib Quake client. It runs full screen on your
console.
- GLQuake is the OpenGL Quake client, the One True Way to play Quake
if you have a 3Dfx accellerator card.
Download the packages you want (see section
Download the Necessary Files) and extract them to your Quake
directory like so:
cd /usr/local/games/quake
tar -xzf XXXX-i386-unknown-linux2.0.tar.gz
Quake and QuakeWorld servers can be run by any user. The Quake clients,
however, need access to your sound and graphics cards, which
requires privileges that normal users don't have. One (bad) way to deal
with this is to always run Quake as root. Responsible system
administrators will cringe at this filthy suggestion. Making the Quake
binaries setuid root is a more acceptable solution. Quake can then be run
by regular users and still have the privileges it needs to access the
sound and graphics devices. Setuid presents a security risk, though. A
clever user could exploit a bug or security hole in Quake to gain root
access to your system. Of course, if you don't run a multi-user system,
this is may not be a big concern.
squake
is the only Quake client that must be run with root
permissions. With a little work, you can run the X and GL clients without
setuid.
Running X and GL games without setuid
in the Tips and Tricks section tells how to make this work.
If you plan to run squake
, make it setuid root with the following
commands:
chown root squake
chmod 4755 squake
If you've decided it's ok to run quake.x11
and glquake
setuid root on your system, you can repeat the above commands for these
binaries as well.
If you installed the X11 client, now's a good time to try it out. You
may need to do further configuration for glquake
and
squake
, but at this point quake.x11
should be ready to
go.
cd /usr/local/games/quake
./quake.x11
If all is well, a small Quake window should appear with the first demo
running in it. You should hear sound effects and possibly music, if the
CD is mounted. If any of this fails to occur, please see the
Troubleshooting section for help.
Both squake and glquake require SVGAlib to run (glquake uses SVGAlib to
process keyboard and mouse input, in case you're wondering). SVGAlib
comes with most modern Linux distributions, and must be properly
configured before squake or glquake will run correctly.
libvga.config
is SVGAlib's configuration file. On
most systems you'll find it in either /etc
or /etc/vga
.
Make sure the mouse, monitor, and video card settings in this file are
correct for your system. See the SVGAlib documentation for more details.
If you don't already have SVGAlib on your system, download it from the
location mentioned in
the files section
above.
If you have a RedHat 5.x or other glibc-based Linux distribution, see
Glibc, RedHat 5.x, Debian 2 considerations in the
Troubleshooting/FAQs section for important information about compiling
libraries for use with Quake. A precompiled libc5 SVGAlib binary is available
at
http://sunsite.unc.edu/pub/Linux/libs/graphics/svgalib-1.3.0.libc5.bin.tar.gz
for those who don't want to deal with the hassle of compiling for libc5.
You should run squake from a virtual console. It won't run from X
unless you're root when you start it. And running a game as the root user
is something that should be avoided. So if you're in X, do a CTRL+ALT+F1,
login and then:
cd /usr/local/games/quake
./squake
Running SVGA and GL games from X in the
Tips & Tricks section below explains how to launch SVGA and GL Quake from
X without manually switching to a virtual console.
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.
To run glquake
, you need a 3D card with the Voodoo, Voodoo2 or Voodoo Rush
graphics chipset on it. There are specific issues to be dealt with if
you have a Voodoo Rush card, and I won't go into them now because frankly,
I wouldn't know what I was talking about. A future version of this HOWTO
will cover Rush issues (If somebody wants to write about Voodoo Rush
issues, I'll gladly include it here).
The SVGAlib, Glide, and Mesa libraries must all be installed and
configured properly on your system for glquake
to work. The
following sections will very briefly cover what you need to do to get
them going.
Bernd Kreimeier's (
bk@gamers.org) Linux 3Dfx HOWTO (
http://www.gamers.org/dEngine/xf3D/howto/3Dfx-HOWTO.html) is good
source for further information.
The
3dfx.glide.linux newsgroup on the 3dfx news server
(news.3dfx.com) is another good source of information about the
intersection of Linux, glide, Mesa and Quake.
SVGAlib
glquake uses SVGAlib to get input from the mouse and keyboard, so you'll
need to configure it as outlined in section
SVGAlib Quake.
Glide
Glide is a library that provides an API for programming 3Dfx based cards.
If you want the Mesa graphics library to use your 3Dfx card, you've gotta
have it.
The latest version of glide can always be found at
http://glide.xxedgexx.com/3DfxRPMS.html. Select the package(s)
appropriate for your system, and install according to the instructions on
the web page.
Note that unless you download the 3Dfx device driver package in addition
to the Glide library, you will only be able to run Glide applications
(like GLQuake) as root. Install the /dev/3dfx
module and you
can play GLQuake as a regular user.
Once you have glide installed, try out the test program that comes with
it. Remember this program: it's a good way to reset your display if you
ever have a glide application (like GLQuake) crash and leave your screen
switched off. NOTE: run this test from a VC, not X! It's
possible for the test app to lose mouse and keyboard focus in X, and then
you'll have no way of shutting it down.
/usr/local/glide/bin/test3Dfx
Your screen should turn blue and prompt you to hit any key. After you
press a key you should be returned to the prompt.
3dfx.glide.linux on 3dfx's news server (news.3dfx.com) is a great
source of information for Linux glide-specific problems.
Mesa
Once glide's installed, you need to install Mesa, a free OpenGL
implementation by Brian Paul
(brianp@elastic.avid.com). Luckily, you won't have to
look far, because Mesa 2.6 is included with the QLQuake & QuakeWorld
binaries. All you have to do is move it to the right place:
cd /usr/local/games/quake
cp libMesaGL.so.2.6 /usr/local/lib
ldconfig
If you want to upgrade Mesa to a more recent version (Mesa 3.0 is
the most recent version as of this writing),
you can download the latest from
ftp://iris.ssec.wisc.edu/pub/Mesa
If you have a RedHat 5.x or other glibc-based Linux distribution, see
Glibc, RedHat 5.x, Debian 2 considerations in the
Troubleshooting/FAQs section for important information about compiling
libraries for Quake.
After you've built it according to the instructions, you will have to do
two things:
- Remove your old Mesa installation. If you previously installed a
libMesaGL.so.2.6
as described above, you must remove it or
Quake may not use the new version.
cd /usr/local/lib/
rm -f libMesaGL.so.2*
- If the new Mesa has a major version number that's greater than 2,
you need to create a link to it with the name
libMesaGL.so.2
:
cd /usr/local/lib/
ln -s /wherever/you/installed/it/libMesaGL.so.3.0 libMesaGL.so.2
ldconfig
Now switch to a VC (CTRL+ALT+F1) and start glquake.
cd /usr/local/games/quake
./glquake
This section covers command line options that are specific to the
Linux versions of Quake. There are plenty of other Quake options, but
they're beyond the scope of this HOWTO. Check out some of the sites
listed in section
General Quake Information for this kind of information.
- -mem num
Specify memory in megabytes to allocate (default is 8MB, which should be
fine for most needs).
- -nostdout
Don't do any output to stdout. Use this if you don't want all the console
output dumped to your terminal.
- -mdev device
Mouse device, default is /dev/mouse
- -mrate speed
Mouse baud rate, default is 1200
- -cddev device
CD device, default is /dev/cdrom
- -mode num
Use indicated video mode (squake only)
- -nokdb
Don't initialize keyboard
- -sndbits 8 or 16
Set sound bit sample size. Default is 16 if supported.
- -sndspeed speed
Set sound speed. Usual values are 8000, 11025, 22051 and 44100.
Default is 11025.
- -sndmono
Set mono sound
- -sndstereo
Set stereo sound (default if supported)
http://www.quakeworld.net says it better than I could:
QuakeWorld is an Internet multi-player specific version of Quake.
While the original version of Quake can be played over the Internet,
modem users - the majority of players, had less than
satisfactory play. Symptoms like excessive lag - actions actually
happening much later than you did them; packet loss - the game would
freeze and resume several seconds later; and various other difficulties
plagued users. After realizing how many people played Quake on the
internet, and how many wanted to, but couldn't due to the play being
unsatisfactory, John Carmack of id Software decided to create a version of
Quake that was optimized for the average modem Internet player. This
Internet specific version does only 1 thing, play deathmatch games over a
TCP/IP network such as the Internet. It has no support for solo play, and
you can't do anything with out connecting to a special server.
You need the full, registered or retail version of Quake to play
QuakeWorld, and a Linux QuakeWorld client. QuakeWorld clients come in
the same flavors (X11, SVGAlib and Mesa) as normal Quake, but they're
all bundled together in one package, so you only need to download one
file. However, you've got four packages to choose from:
- a libc5 tar.gz package
- a glibc tar.gz package
- a libc5 rpm package
- a glibc rpm package
Install just one of these packages. Each contains the same files, they're
just linked against different libraries.
Redhat 5.x users should choose the the glibc rpm package. Users of glibc
based systems without rpm support should use the glibc tar package. The
libc5 rpm is for Redhat distributions prior to 5.0 and other distributions
that use the rpm package format. The libc5 tar.gz package is for
Slackware and everyone else.
See the
Download the Necessary Files section
for the location of the Linux Quakeworld files.
The prerequisites and configuration for these binaries are the same as for
Quake, so refer to the previous sections for help on setting up SVGAlib or
glide/Mesa.
Installing the RPM packages ++
Installation of the rpm packages should be as simple as:
su root
rpm -Uvh qwcl-xxxxx.i386.rpm
qwcl
, glqwcl
and glqwcl.glx
will be installed
setuid root so that they can access the graphics devices on your system.
The X and GL clients can be run without root privileges if you follow the
instructions in
Running X and GL games without setuid below.
Rpm may complain that it can't find libglide2x.so
. The
Glide library is only necessary if you have a 3Dfx card and want
to run QuakeWorld in GL mode (glqwcl
). If you don't
plan to use the GL mode, you can override the glide dependency
with the --nodeps
option:
su root
rpm -Uvh qwcl-xxxxx.i386.rpm --nodeps
Installing the tar.gz packages ++
To install, just untar the file in your Quake directory. Do it as root
so the proper file permissions get set:
cd /usr/local/games/quake
su root
tar -xzf qwcl2.21-i386-unknown-linux2.0.tar.gz
qwcl
, glqwcl
and glqwcl.glx
will be installed
setuid root so that they can access the graphics devices on your system.
The GL and X clients can be run without root privileges if you follow the
instructions in
Running X and GL games without setuid below.
Running QuakeWorld ++
Once QuakeWorld is installed alongside your Quake files, you can start it
up like:
./qwcl +connect some.server.address
See section
Related Software for
info about some nifty front ends for QuakeWorld that make finding servers
easy.
- lib3dfxgl.so
**
With Quakeworld version 2.30, an alternative to the Mesa library is
available. lib3dfxgl.so
is a mini-GL driver optimized
for Quake that provides slightly better framerates than Mesa.
This is a port of a driver that 3Dfx developed for Quake
under Windows, and apparently not all of its features work
properly yet. So hopefully we can expect its performance to
improve with time.
Like Mesa, lib3dfxgl.so
requires Glide in order to
access your 3Dfx card. The Quakeworld packages come with a script,
glqwcl.3dfxgl
for running Quakeworld with this
library on glibc systems. The next paragraph explains how to run
Quakeworld with lib3dfxgl.so
on a libc5 system. On a
glibc system in order for this script to work,the glqwcl
executable must not be setuid, nor should you run it as
root. glqwcl
will silently load Mesa rather than
lib3dfxgl.so
if it runs with root permissions. This
non-root requirement implies that you have the /dev/3dfx
driver installed.
On a libc5 system, you need to create a symbolic link to lib3dfxgl.so
called libMesaGL.so.2
like so:
cd /usr/local/games/quake
ln -sf lib3dfxgl.so libMesaGL.so.2
Then start Quakeworld from a script that tells
$LD_LIBRARY_PATH
to look in the current directory:
#!/bin/sh
LD_LIBRARY_PATH=".:$LD_LIBRARY_PATH" ./glqwcl $*
You can tell which driver is being loaded by looking for output
like the following in your console as Quakeworld starts:
GL_VENDOR: 3Dfx Interactive Inc.
GL_RENDERER: 3Dfx Interactive Voodoo^2(tm)
GL_VERSION: 1.1
GL_EXTENSIONS: 3DFX_set_global_palette WGL_EXT_swap_control GL_EXT_paletted_texture GL_EXT_shared_texture_palette GL_SGIS_multitexture
If GL_VENDOR
says Brian Paul
rather than
3Dfx Interactive Inc.
, that means Mesa is still being
used rather than the miniport dirver.
- glqwcl.glx **
glqwcl.glx
is linked against standard OpenGL libraries
instead of Mesa. This allows Quakeworld to run on other 3D
hardware that is supported by other OpenGL implementations. At
this time, I dont' know of any OpenGL implementations that
support hardware other than 3Dfx, but this renderer ensures that
when they appear, we'll be able to play Quakeworld with them.
This is a GLX application, and as such, must be run from X.
You can use this client with Mesa/3Dfx if you install Mesa and
Glide as explained in the previous section, then set the
$MESA_GLX_FX
environment variable to "fullscreen" before
you run quake2
:
export MESA_GLX_FX=fullscreen
./glqwcl.glx +_windowed_mouse 1
Why the +_windowed_mouse 1
option? Remember that
this is an X application which happens to use your 3Dfx card.
Even though the display takes up your entire screen, Quakeworld is
stil running in a window. This means that if you're not
very careful, you could move the mouse pointer outside
the Quakeworld window, and Quakeworld will suddenly stop responding
to mouse and keyboard input. +_windowed_mouse 1
avoids this problem by telling glqwcl.glx
to grab the mouse
and not let it move outside its window.
Most, if not all, existing information about
running a DOS/Windows QW server is equally applicable to running a Linux
server.
To start a QuakeWorld server, simply do:
./qwsv
The official QuakeWorld server manual lives at
http://qwcentral.stomped.com.
One of the very cool things about the Quake games is that the authors
made them easily extensible. End users can create their own levels, add
new weapons or monsters, or even completely change the rules of the game.
Capture the Flag
This is my favorite variation of both Quake and Quake 2. Instead of just
running around and killing everyone you meet (which definitely has its
merits, don't get me wrong!), CTF is team-based and more strategic.
Dave 'Zoid' Kirsch, also the maintainer of the Linux Quake ports, created
this mod.
Everything you need to know about CTF can be found at
http://captured.com/threewave/ You need
ftp://ftp.cdrom.com/pub/quake/planetquake/threewave/ctf/client/3wctfc.zip to play.
To install the client piece of CTF, simply create a directory called
ctf
in your Quake directory and unzip the 3wctfc.zip
file there. The accompanying readme.txt
file is chock full of
good information.
cd /usr/local/games/quake
mkdir ctf
cd ctf
unzip -L /wherever/you/put/it/3wctfc.zip
For information on running a CTF server, see the web pages mentioned
above.
Mission Packs **
Activision released two add-on packs of extra levels for Quake,
Scourge of Armagon and Dissolution of Eternity.
- Mission Pack 1: The Scourge of Armagon
Assuming your CD is mounted on
/mnt/cdrom
and Quake is installed
in /usr/local/games/quake
:
cd /usr/local/games/quake
mkdir hipnotic
cp /mnt/cdrom/hipnotic/pak0.pak hipnotic
cp /mnt/cdrom/hipnotic/config.cfg hipnotic
Play the mission pack like this:
cd /usr/local/games/quake
./quake.x11 -game hipnotic
- Mission Pack 2: Dissolution of Eternity Installing
the second mission pack is pretty much the same procedure as
installing the first. Follow the directions for Mission Pack 1,
but replace the word hipnotic with the word
rogue, and skip the
config.cfg
step, as this
file isn't included on the Mission Pack 2 CD.
Quake Tools
Anybody care to contribute some info about qcc, bsp and all that?