Linux Quake HOWTO
Peter
Jay
Salzman
p@dirac.org
Took over maintenance of the Quake HOWTO in February 2002
Bob
Zimbinski
bobz@mr.net
Released v1.0.1.14, 30 August 1998
2002-08-11 v 2.0.0
Quake I, Quake II and Quake III are tremendously popular 3 dimensional "first person shooter" (FPS) action games
developed by id Software. If you're not familiar with the Quake games,
there are much better places than this HOWTO to learn about the basics. This document focuses on all aspects of playing
Quake on Linux.
Administrata
Feedback, Comments, Corrections
This document certainly does not contain everything there is to know about Linux Quake. With your help, though, we
can bring it closer to that ideal. I want this HOWTO to be as complete and accurate as possible, so if you notice
mistakes or omissions, please bring them to my attention. Feel free to comment on any aspect of this HOWTO. If I'm not
totally snowed under with work, I'll respond to each email personally. Comments, questions and corrections should be
sent to me, Peter Jay Salzman p@dirac.org.
Acknowledgments
This HOWTO was originally written by Brett A. Thomas quark@baz.com and Mike Hallock
mikeh@medina.net. Bob Zimbinski bobz@mr.net rewrote and expanded the original
document.
Special thanks to the following people for bringing us Quake for Linux:
John Carmack and the rest of id Software for these great games.
Dave 'Zoid' Kirsch for the Linux ports of Quake 1 and Quake 2.
Dave Taylor for starting this whole wacky Linux port business.
Daryll Strauss daryll@harlot.rb.ca.usfor the Linux Glide 2 ports.
Brian Paul brianp@elastic.avid.com for the Mesa graphics library.
David Bucciarelli tech.hmw@plus.it for the Mesa/glide driver.
Latest Versions and Translations
The latest version of this HOWTO can be obtained at my website, http://wwww.dirac.org/linux/writing. The version that's currently at the Linux Documentation Project is currently so outdated that it's not doing anyone much good.
Authorship and Copyright
Much care and feeding has gone into this HOWTO. Its authors are Brett A. Thomas, Mike Hallock, Bob Zimbinski,
and Peter Jay Salzman.
This document is copyright (c) 2001 Peter Jay Salzman, dirac.org. Permission is granted to copy,
distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.1, except for the
provisions I list in the next paragraph. I hate HOWTO's that include the license; it's a tree killer. You can read the
GNU FDL at http://www.gnu.org/copyleft/fdl.html.
If you want to create a derivative work or publish this HOWTO for commercial purposes, contact me first. This will
give me a chance to give you the most recent version. I'd also appreciate either a copy of whatever it is you're doing
or a spinach, garlic, mushroom, feta cheese and artichoke heart pizza.
About Quake
These are topics that are relevent and of interest to people playing any of the Quake games.
Modifications (mods)
Like Doom, id Software allows people to modify Quake in many different ways. With some programming, graphics and
sound skill, you can make Quake do pretty much whatever you want. A modification, also called "mod", is usually a file
or set of files that are used to modify the Quake engine to do something different from what the stock id Software engine
intended. Some mods make small changes, like making weapons more powerful or using different sounds for various actions.
Other mods are more complex and will create a total conversion.
Total Conversion (tc)
A total conversion is a mod which is so extensive and changes so much of the stock Quake engine, that it basically
amounts to creating a completely new game. An example of a total conversion is Metroid for Quake II or Urban Assault for
Quake III
Quake I
History
Quake I is a tremendously popular game written by John Carmack and released by id Software in 1996. The next year,
id released two Quake I mission packs: Scourge of Armagon and Dissolution of Eternity. While id's previous series, Doom,
is the most important game to the first person shooter genre, Quake I took FPS from cartoon to realism, from simulated 3D
to real 3D. Deathmatch, popular in Doom, flourished with Quake I.
In December 1996, an employee of id Software and early Linux enthusiast, Dave Taylor, ported Quake I to Linux. This
was nothing short of astounding since this was way before Linux was a household term. Just as amazing was the fact that
John Carmack and id Software supported Dave in his Linux porting efforts. While id Software didn't officially support
Linux Quake, it gave Dave the permission to release his ports for free (you still had to purchase the map files) and
allowed him to work on company time. The ports were a very good effort at the time, and 4 sets of binaries were released:
an X11 version, an SVGAlib version, an OpenGL version and Quake World. At the time, only 3dfx's Voodoo cards were
available to Linux users for accelerated 3D graphics, so the OpenGL version was only available linked against the 3dfx
Mesa library.
Dave eventually left id Software to form a gaming company Crack.com so they began looking for someone to maintain
the Quake I Linux port. A 26 year old programmer and Quake fan named Dave "Zoid" Kirsch, who wrote a wildly popular CTF
mod for Quake I (the first CTF anyone wrote for any game), volunteered for the job. He became the Linux Quake maintainer
and later that year became an official contractor at id Software.
December 1999, the Linux community received one of the biggest gifts it has ever gotten from a commercial entity: id
Software released the source code for Quake under the GPL. Almost immediately, a number of people took the code base and
started working on it. Since then, the codebase has forked almost as much as the Doom codebase. A group comprised of
representatives from nearly every known Quake source project formed the Quake
Standards Group (QSG). They aim to ensure that all the different clients and servers run with other clients and
servers as well as providing uniform and effective cheat prevention methods.
These days, John Carmack and id Software are stronger than ever with their recent releases of Quake III, Return To
Castle Wolfenstein and the upcoming release of Doom III. Zoid is still working at id Software but now that the open
source community is maintaining high quality Quake ports for Linux, he's no longer maintaining the original Quake
codebase. Currently, Dave Taylor is coding for Transmeta. If you're interested in the original source code, you can
still download it from id Software's ftp server.
QuakeWorld
The original version of Quake I could be played over the Internet, however, modem users (the majority of
players), had less than satisfactory play. Excessive lag (actions occuring much later than you did
them), packet loss (the game would freeze and resume several seconds later) and various other difficulties plagued
modem users. After realizing how many people played Quake I on the Internet, John Carmack of id Software decided to
create a version of Quake I that was optimized for the average modem Internet player. This Internet specific version
does only one 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 without connecting to a special server. So QuakeWorld is simply multiplayer Quake I
optimized for playing over the Internet.
The Game
Description of Quake I goes here.
There are 4 Linux ports of Quake I:
Quakeforge
NPR Quake
Project Twilight
Dark Places
Quakeforge
Quakeforge is easily the most mature, featureful and actively developed of the Quake ports. It tries to be as
portable and widely available as possible. For instance, it can use OSS or Alsa for sound drivers. You can play it in
X or in console. You can use accelerated OpenGL or not. You can play it on any platform that supports SDL, including
Linux, Win32 and MacOS.
Installation
Quakeforge has a long and fairly twisted history of release names. Fortunately, since we're not interested in
outdated information, I won't go into any of them. There is a version called "newtree" which claims to be the
stable version, but development on this tree has virtually ceased. I recommend you install the development version,
simply called "Quakeforge" and numbered 0.5.x. If you want to try bleeding edge, you can use the
CVS version of Quakeforge.
As of 7 August 2002, Quakeforge 0.5.0 requires autoconf 2.52, automake 1.6 and libtool
1.4.2. If you're running Debian, you'll need packages from unstable/Sid. In addition, it's recommended that you
have the development packages for vorbis and xmms; Debian users will want to install libvorbis-dev and
xmms-dev.
Download one of the tarballs for Quakeforge 0.5.x from http://www.quakeforge.net/files.php. Untar the package using one
of the following commands, depending on whether you downloaded the tar.gz,
tar.bz2 or .zip:
tar -zxvf quakeforge-current.tar.gz
tar -jxvf quakeforge-current.tar.bz2
unzip -L quakeforge-current.zip
Then change directory into quakeforge.
cd quakeforge
If you want to run the bleeding edge CVS version, perform the next steps. If you'd rather use the "stable"
development version, ignore the following steps. When it asks you for a password, just press <ENTER>.
cvs login
cvs update
You'll see a bunch of stuff whiz by. After it's finished (or if you decided not to use the CVS version),
perform the following steps:
$ cd quakeforge
$ ./bootstrap
$ ./configure
$ ./make
$ su
Password:
# make install
# ldconfig
The last two commands must be done as root. By default, Quakeforge will install some utility directories in
/usr/local/share/games/quakeforge and a bunch of binaries in /usr/local/bin. It installs quite a few FIXME
From here on in, if you ever want to update Quakeforge, just go to the directory where you made Quakeforge
from and type:
cvs login
cvs update
As before, just hit <ENTER> when it asks you for password.
NPR Quake
NPR, or non photo-realistic rendering is the art of taking a 3 dimensional scene and rendering it so that it looks
hand-drawn. NPRQuake is Quake I, but the rendering has been changed to NPR style rendering. To paraphrase their website,
http://www.cs.wisc.edu/graphics/Gallery/NPRQuake it's kind of like running around in a
painting or drawing.
NPRQuake began as a project for a computer animation course at University of Wisconsin, Madison by professor Michael
Gleicher. Basically, his class took the Win32 GLQuake I engine, ripped out the renderer and wrote 3 replacement
renderers:
Sketchy NPRQuake:
The sketchyNPR simulates a person rapidly sketching the Quake environment on a piece of white paper.
The walls are shaded with a hash-style sketching, and the water ripples with every stroke of the writing
utensil.
Blueprint NPRQuake:
The blueprintNPR simulates an architect's blueprint design for a building or a structure. The walls,
water, and everything else is left without shading, as blueprints are classically constructed for quick access to
dimensions - not three-dimensionality.
Brushstroke NPRQuake:
The brushStrokeNPR simulates a person drawing each line in space with a brush of your choice, like a
ballpoint pen or a scribbly charcoal pencil.
The source code, of course, is freely available and they even give you instructions on how to make your own NRPQuake
renderer. As mentioned, this project was done with Win32 GLQuake. So why mention it here? Jeremy Green
coolguywithgun@yahoo.com ported this work to SDL, and Ryan McDougal fixed some bugs and set up a page for
the Linux downloads at http://216.127.157.102/users/ryan/. You can download their SDL
source code or precompiled binaries.
The whole thing is just very cool, although it's hard to discern lava or poisonous liquid, so you need to be careful
about where you jump :).
On his website, Jeremy says the Linux NPRQuake is not being maintained (professor Gleicher's Windows version isn't
being maintained either). So this project is dead until someone takes it over.
NPR Quake
Compiling and installation is very straightforward, but a few notes of advice. You need to put their default
renderer, dr_default.so in a directory searched by
ld.so (see the Linux Gamers' Howto for a full discussion of this). In the NPRQuake
executable directory, you need to make a subdirectory named id1 that contains
your pak0.pak and pak1.pak files. When you start up the game, it uses the
default renderer dr_default, which renders Quake I in the standard familiar style.
To change the rendering engine to their three NPR renderers, open the console and issue r_load
<renderer> where <renderer> is one of sketch.so for Sketchy NPRQuake, bprint.so for Blueprint
NPRQuake, brush.so for Brushstroke NPRQuake or dr_default.so for the standard Quake I renderer.
Dark Places
Dark Places was conceived by Forest 'Lord Havoc'
Hale havoc@gamevisions.com, a former Quakeforge developer who had conflicts with the direction of
Quakeforge. This project is being moved to icculus.org from sourceforge.net. As of
In Forest's own words, Dark Places aims to help mod developers and satisfy his own desire to improve the Quake I
experience. There are two components to Dark Places. First, Forest has been working with the Quake I engine to improve
the quality and speed of the OpenGL renderer. Second, Dark Places is also a mod that delivers effects like flying shell
casings, alpha blended explosions and blood splattered on the walls.
Dark Places is undergoing constant development but infrequent releases. As of 2002-01-16, the last release of the
Dark Places mod is 2001-07-27 and the last release of the engine is 2002-01-21. It can be compiled by gcc under Linux,
Visual C++ 4.0, 6.0 and mingw.
Project Twilight
Project Twilight was conceived by Joseph Carter
knghtbrd@debian.org as a Quake effort that concentrated on keeping code clean and simple so talented
coders who wanted to help with the project wouldn't have as high of a learning curve in order to jump into the
project.
The port uses SDL, so it can compile and run on any platform that supports SDL. The current stable version as of 7
August 2002 is 0.1.0. You can download the source code in tarball format, but Win32 binaries and
source code via CVS is also available.
Project Twilight
Currently, you can get source code or Win32 binaries from http://twilight.sourceforge.net/releases/index.php, however, this project is in the process of moving to
icculus.org. Sooner or later, these tarballs will be moved to the new site. The version currently being offered is
0.1.0. After downloading the tarball, untar it and perform the following steps to build and
install the program:
$ cd twilight-0.1.0
$ ./configure
$ make
You can also get their source code via cvs. The login password is anonymous:
cvs -d ":pserver:anonymous@cvs.icculus.org:/cvs/cvsroot/twilight" login
cvs -d ":pserver:anonymous@cvs.icculus.org:/cvs/cvsroot/twilight" co twilight
It will create a directory named twilight. You can build and install
Project Twilight with:
cd twilight
./bootstrap
./configure
make
FIXME
As of 8 Aug 2002, cvs is broken.
Add-Ons And Mods
Capture the Flag
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, the maintainer of
the old id Software 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.
Other Software
Quake II
Quake II
Installation
Mods
Add Ons
Serving
Other Software
Quake III: Arena
History
Quake III was developed by id Software, ported to Linux by Loki Software and published by Activision. Loki
originally provided support and updates, but later id took these tasks over. Nobody really knows why; perhaps id knew
that Loki was headed for trouble. The development process of this game was more visible to the public than most games.
In March 1999, id released a beta version named q3test for free as a public test of the Quake III engine's networking and
graphics code. Q3test spread over the Internet like wildfire, accompanied by multitudes of .plan updates from id
employees, fan websites, illegal mods and rampant speculation about what the final game would look and play like.
The Quake III engine has been used by many other games, like Star Trek Voyager: Elite Force, Medal of Honor: Allied
Assault, Clive Barker's Undying, Soldier of Fortune II: Double Helix, Jedi Knight II, James Bond 007: Agent Under Fire,
and many others.
Quake III is the first game ever to come from id to be released simultaneously for more than
one platform. The Linux, Macintosh and Windows versions were released simultaneously in late
1999.
The Game
While Doom II is considered to be the canonical FPS, most people consider Quake III to be the canonical modern FPS.
Some prefer Half-Life, and some prefer the Unreal games, but Quake III is still the measuring stick by which all other
FPS games are measured. In fact, you'll see Quake III used as one of the standard ways to benchmark CPU's and video
cards. I even think that most of us take the Quake III benchmarks more seriously than we do, say, the Winstone
benchmarks.
The engine is still strictly commercial software, so no open source efforts have been started. Arguably, there's
not many engines that can top Quake III, so it's still commercially viable. If id Software's past history is any
indication, once it deems the engine as being less commercially important, the Quake III engine source code will be
released. And when that happens, you better believe that people are going to snatch up the code and start hacking on
it.
The latest release of Quake III is 1.31 as of January 2002.
You can purchase Quake III from a variety of places like tuxgames and the
Activision web-store. The Windows version and many games based on the
Quake III engine are known to work under wine/winex.
There are two modes of play: single player and multi-player.
In single player mode, the Vadrigar, the mysterious Arena Masters, built the "Arena Eternal" for their amusement,
many centuries ago. Nobody knows much about them, but the arena is stocked with the greatest warriors in the universe.
You are portrayed as "Sarge", a mighty warrior who has joined their ranks and must fight them to the death. When you are
"fragged", you're immediately re-spawned back into battle, to fight for the next kill. The gladiator with the most frags
at the end is hailed as the victor. The Vadrigar have set up the matches in tiers: there are 6 tiers of 4 arenas each,
with a seventh tier with a single arena for Xaero, the deadliest of all warriors. After being the victor in all the
arenas within a tier, you procede to the next tier to face new and tougher opponents, until you face Xaero, the Lord of
the Final Arena. After winning this battle, you win the game. However, don't let any of this fool you. The plot is
truly completely irrelevent to the game. The basic plot is nothing more than to kill or be killed. The instruction
booklet says it best in the introduction: The plot is to kill anything that's not you.
Many people agree that this game isn't even about single single player mode; it's about multi-player internet and
LAN deathmatch against human opponents. Here, all pretense of plot is dropped. It's all about pure and simple
deathmatch.
Game Modes
Single and multi player games have 4 modes of play:
Free For All (ffa)
This is the classic form of deathmatch; it's what everyone thinks of when they think of
"deathmatch".
Team Death Match (td)
This is deathmatch between two teams, and is also known as "cooperative deathmatch". You basically
want to kill members of the opposing team and not kill members of your own team.
Tournament (tourney)
Players fight each other one-on-one, while future foes watch as spectators. The watchers wait their
turn to be the challenger who takes control of the arena from the most recent victor.
Capture The Flag (ctf)
The ctf mod was so popular in the previous two games that it became one of the built in game types of
Quake III.
Installation
Serving
There are two types of servers: listen and dedicated. Listen is in-game and is the easiest to set up. The
dedicated is a separate binary called q3ded, and is strictly console mode. To join your own game, you need to run the
quake3 client.
The first step in setting up a server is to make sure you have the most recent versions of the dedicated server and
the quake3 client. The version as of March 2002 is 1.31.
Listen Method
Setting up a multi-player game via listen is fairly straight forward. Start quake3 and from the main menu,
click "multiplayer". Then click on "create". Choose which map you want to serve just as you would for a single
player game. From here you can change various things like the maximum number of people you want to join, any bots
that are to play also, fraglimit, etc. Once you click "fight", other people will be able to join your game.
Dedicated Method
Setting up the dedicated server is considerably more difficult.
First lets go over the command line options for q3ded. Command line options begin with a "+" and some of them
take an argument.
Command Line Options
com_hunkmegs [number]
Allocates a certain amount of memory for map and item loading. The default of 56 is required for
the client but is overkill for a dedicated server, and thus wasting precious server memory. For general use free
for all, tournament maps, and team deathmatch, a com_hunkmegs setting of 16 is sufficient. Using the included
tournament maps only, a com_hunkmegs setting of 12 may be used to conserve more memory. Capture The Flag requires
a minimum com_hunkmegs setting of 26 with the included maps.
User made or future map releases may require a higher setting. If you get ERROR: Hunk_Alloc
failed then try increasing the com_hunkmegs setting in increments of 2 until the map successfully loads.
dedicated [number]
Tells Quake 3 to start in dedicated server mode and which mode to use:
+set dedicated 1
Launches a LAN server that will not report to the master
server.
+set dedicated 2
Launches the server for internet play and announces its
presence to the master servers so it will show up in gamespy
net_ip [IP Address]
Sets which ip address for the Quake 3 server to bind to in case of
multihomed servers.
net_port [port]
Sets which port for the server to listen on. Useful for running
multiple servers on the same machine.
Add-Ons And Mods
Urban Assault
Description
The cold war has ended; the USA and Russia are now allies. However, there is a new threat to the
governments of the free world. Terrorism, abroad and domestic, threatens freedom as we know it. The democratic
governments are reluctant to do what is truly necessary to stamp out the evils of terrorism, since public opinion
is fickle. Protective strikes today may be viewed as unwarranted and even evil tomorrow. Instead, the
free governments have invested in the training of highly skilled counter-terrorist groups, to combat terrorism
wherever and whenever it may arise.
You are a soldier of the new counter-terrorism force, ready to battle and lay down your life, if need be,
to protect the government, people and freedoms you serve.
Urban assault is a total conversion for Quake III. Yadda yadda yadda.
Other Software
Mods & Addons
Quake Tools
Anybody care to contribute some info about qcc, bsp and all that?
Quake II
To install Quake II on your Linux system, you'll need some flavor of the
official Quake II distribution from id. This will be either the retail
Windows CD-ROM that you bought at your favorite software store, or the
demo version you downloaded from the net. See FIXME for details on acquiring the demo
version. Alternatively,
if you've already got Quake installed on a Windows machine, you can use
the relevant files from that installation.
Quake II
Installing Quake II
Download the Necessary Files**
All the necessary files for Linux Quake II 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:
ftp.cdrom.com/pub/idgames/idstuff (California, USA)
ftp.gamesnet.net/idsoftware (California, USA)
ftp.stomped.com/pub/mirror/idstuff (Minnesota, USA)
mirrors.telepac.pt/pub/idgames (Lisbon, Portugal)
download.netvision.net.il/pub/mirrors/idsoftware (Haifa, Israel)
The Quake II files mentioned in in this section are:
Quake II Linux Binaries
libc5 tar.gz package ftp.idsoftware.com/idstuff/quake2/unix/quake2-3.19a-i386-unknown-linux2.0.tar.gz
glibc tar.gz package ftp.idsoftware.com/idstuff/quake2/unix/quake2-3.19a-glibc-i386-unknown-linux2.0.tar.gz
libc5 rpm package ftp.idsoftware.com/idstuff/quake2/unix/quake2-3.19a-2.i386.rpm
glibc rpm package ftp.idsoftware.com/idstuff/quake2/unix/quake2-3.19a-glibc-2.i386.rpm
Quake II Demo Version for Windows
ftp://ftp.idsoftware.com/idstuff/quake2/q2-314-demo-x86.exe
Quake II Game Source ftp://ftp.idsoftware.com/idstuff/quake2/source/q2source-3.14.shar.Z
Quake II Capture the Flag ftp://ftp.idsoftware.com/idstuff/quake2/ctf/102.zip
Other software mentioned:
SVGAlib graphics library http://sunsite.unc.edu/pub/Linux/libs/graphics/svgalib-1.3.0.tar.gz
SVGAlib libc5 binaryhttp://sunsite.unc.edu/pub/Linux/libs/graphics/svgalib-1.3.0.libc5.bin.tar.gz
Glide runtime libraries http://glide.xxedgexx.com/3DfxRPMS.html
Mesa 3D graphics library http://www.ssec.wisc.edu/~brianp/Mesa.html
unzip archive utility http://sunsite.unc.edu/pub/Linux/utils/compress/unzip-5.31.tar.gz
Create the Installation Directory
The first thing you'll need to do is decide where you want to install
Quake II. 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 II goes in /usr/local/games/quake2. If you choose
to install somewhere else, please substitute the appropriate path wherever
/usr/local/games/quake2 is mentioned.
So go ahead and create the directory you'll install Quake II in, and cd
to it. The rest of these instructions will assume that this is your
current directory.
mkdir /usr/local/games/quake2
cd /usr/local/games/quake2
Installing from CD
Place your Quake II CD in your CD ROM drive, and mount it:
mount -t iso9660 /dev/cdrom /mnt/cdrom
If your CDROM is typically mounted elsewhere, substitute its location
for /mnt/cdrom. If you're not sure where your CDROM is
mounted, please see the documentation for your particular
distribution.
Full Install
The simplest install method is a "full" install, which involves
copying the entire contents of your CD to your hard drive. This
requires about 350 MB, and is accomplished by issuing the following
commands:
cd /usr/local/games/quake2
cp -r /mnt/cdrom/Install/Data/* .
There'll be a bunch of unnecessary Windows files hanging around that you
can safely delete:
rm -f /usr/local/quake2/*.dll
rm -f /usr/local/quake2/quake2.exe
rm -f /usr/local/quake2/baseq2/gamex386.dll
Medium Install
If 450 MB is too much space for you to devote to Quake II, you can skip
installing the movie cutscenes and link to them on the CD-ROM instead.
This will reduce the space requirements to about 200 MB:
cd /usr/local/games/quake2
mkdir baseq2
cp /mnt/cdrom/Install/Data/baseq2/pak0.pak baseq2
cp -r /mnt/cdrom/Install/Data/baseq2/players baseq2
ln -s /mnt/cdrom/Install/Data/baseq2/video baseq2/video
Note that this doesn't mean you have to mount your Quake II CD
every time to want to play Quake II. If the game can't load the
videos, it just won't display them.
Windows to Linux install
If you have Quake II installed under Windows on a different machine, you
can transfer the files in quake2\baseq2\ 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 II to find them, so you may
have to rename them after the transfer. Also note that it may be
necessary to delete your Windows 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 Windows and Linux systems are on the same machine, you have two
options: copy the files from your Windows partition to your Linux
partition, or link to the necessary files from Linux. Both options will
work equally well. You'll just save a lot of disk space when you link
instead of copy.
As usual, replace /win95/games/quake2 in the following examples
with the correct path to your Windows partition and Quake II installation.
If you want to copy the files from your Windows partition, do
something like this:
cd /usr/local/games/quake2
cp -r /win95/games/quake2/baseq2 .
To create links to your Windows Quake II files instead, do this:
cd /usr/local/games/quake2
ln -s /win95/games/quake2/baseq2 .
This second method requires that the Windows partition you're
linking to be writeable by users, which may not be
appropriate for all systems. By making your Windows partition
writeable, you are giving all users the opportunity to destroy
your entire Windows installation. If that's ok with you,
modify your /etc/fstab to mount the Windows
partition with the options umask=002,gid=XXX, where XXX
is the group id number of the "users" group. Look in
/etc/group for this information. When fstab is
updated, umount and re-mount the Windows partition and you're
done.
You're done installing the Quake II data files. Move ahead to "".
Installing the demo version **
id Software has a freely available demo version of Quake II at their
ftp site. It's a 40 megabyte download. The demo includes all
features of the full version, including multiplayer, but it only
comes with three levels, so it may be difficult to find a server
to play on.
See the section above for the location of the Quake II demo.
Download it and place it in your Quake II directory.
The demo distribution is a self-extracting zip file (it's self-extracting
in other OS's anyway). You can extract it with the unzip(1)
command, which should be included in most modern distributions. If you
don't have unzip, you can download it from the location listed in
the
section.
cd to your Quake II directory and extract the archive:
cd /usr/local/games/quake2
unzip q2-314-demo-x86.exe
Now we've got to delete some things and move some other things around:
rm -rf Splash Setup.exe
mv Install/Data/baseq2 .
mv Install/Data/DOCS docs
rm -rf Install
rm -f baseq2/gamex86.dll
The Quake II demo is now installed. You just need to add the Linux
binaries.
Adding the Linux Binaries **
There are four Linux Quake II packages available for download:
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 section
for the location of the Linux Quake II files.
Installing the RPM packages **
Installation of the rpm packages should be as simple as:
su root
rpm -Uvh quake2-xxxxx.i386.rpm
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 Quake II in GL mode. If you don't plan to use the GL
mode, you can override the glide dependency with the
--nodeps option:
su root
rpm -Uvh quake2-xxxxx.i386.rpm --nodeps
Installing the tar.gz packages **
To install, just untar the file in your Quake II 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
Setting Permissions **
If you ran rpm or tar as root when installing
the Quake II package on your system, the file permissions should
be properly set already. The quake2 executable was
installed setuid root so that it can access the graphics devices
on your system. For security, the ref_*.so rendering
libraries are owned by root and writeable only by him. If root
doesn't own the libraries, or they're world writeable,
quake2 will refuse to run.
Quake2.conf **
For security reasons, there is a quake2.conf file, which
tells Quake II where to find the rendering libraries it needs
(ref_*.so). It contains only one line, which should be
the path to your Quake II installation. Quake II looks for this
file in /etc. If you installed Quake II from an
.rpm file, this file was installed for you. If you
installed from a .tar package, you need to create it
like so:
su root
cd /usr/local/games/quake2
pwd > /etc/quake2.conf
chmod 644 /etc/quake2.conf
The X Renderer
Quake II should be ready to run under X now. Give it a try:
cd /usr/local/games/quake2
./quake2 +set vid_ref softx
If all is well, after a pretty significant pause, a small Quake II window
will 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 section for help.
The SVGAlib Renderer
You need SVGAlib installed and configured if you're going to use either
the ref_soft or ref_gl renderers. (Quake II uses SVGAlib to process
keyboard and mouse input, in case you're wondering why you'd need it for
the GL renderer). SVGAlib comes with most modern distributions, and
must be properly configured before Quake II will run correctly
outside of X.
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 FIXME above. If you have a RedHat 5.x or other glibc-based
Linux distribution, see in the Troubleshooting/FAQs section for
important information about compiling libraries for Quake II.
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 Quake II from a virtual console when using the ref_soft
or ref_gl renderers. It won't run from X unless you're root when you
start it, and that's not advisable. So if you're in X, do a CTRL+ALT+F1,
login and then:
cd /usr/local/games/quake2
./quake2
in the Tips & Tricks section below explains how to launch SVGA
and GL Quake II from X without manually switching to a virtual
console.
The OpenGL Renderer
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 Quake II in GL mode, 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 quake2 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
Quake II uses SVGAlib to get input from the mouse and keyboard, so you'll
need to configure it as outlined in section section.
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 Quake II binaries. All
you have to do is move it to the right place:
cd /usr/local/games/quake2
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
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 II 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 Quake II:
cd /usr/local/games/quake2
./quake2 +set vid_ref gl
lib3dfxgl.so **
With Quake II version 3.19, 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 Quake II packages come with a script,
quake2.3dfxgl for running Quake II with this
library on glibc systems. The next paragraph explains how to run
Quake II with lib3dfxgl.so on a libc5 system. On a
glibc system, 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, the non-root requirements mentioned above apply,
but you also need to create a symbolic link to lib3dfxgl.so
called libMesaGL.so.2 like so:
cd /usr/local/games/quake2
ln -sf lib3dfxgl.so libMesaGL.so.2
Then start Quake II from a script that tells
$LD_LIBRARY_PATH to look in the current directory:
#!/bin/sh
LD_LIBRARY_PATH=".:$LD_LIBRARY_PATH" ./quake2 +set vid_ref gl $*
You can tell which driver is being loaded by looking for output
like the following in your console as Quake II 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.
The GLX Renderer **
ref_glx.so is linked against standard OpenGL libraries
instead of Mesa. This allows Quake II 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 Quake II 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
./quake2 +set vid_ref glx +set _windowed_mouse 1
Why the +set _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, Quake II is
stil running in a window. This means that if you're not
very careful, you could move the mouse pointer outside
the Quake II window, and Quake II will suddenly stop responding
to mouse and keyboard input. +set _windowed_mouse 1
avoids this problem by telling quake2 to grab the mouse
and not let it move outside its window.
Linux-Specific Command Line Options
This section will cover command line options that are specific to the
Linux version of Quake II. There are plenty of other Quake II options,
but they're beyond the scope of this HOWTO. Check out some of the sites
listed in section for this kind of information.
These are actually cvars (client variables) that you can set in the Q2
console, but it makes the most sense to set them on the command line.
Set them with +set on the command line, like:
./quake2 +set cd_dev /dev/hdc
cd_dev device
Name of the CD-ROM device.
nocdaudio value
Disable CD audio if value is nonzero
sndbits num
Set sound bit sample size. Default is 16.
sndspeed num
Set sound sample speed. Usual values are 8000, 11025, 22051 and 44100.
If set to zero, causes the sound driver to attempt speeds in the following
order: 11025, 22051, 44100, 8000.
sndchannels num
Indicates stereo or mono sound. Defaults to 2 (stereo). Use 1 for mono.
nostdout value
Don't do any output to stdout. Use this if you don't want all the console
output dumped to your terminal.
Quake II Servers
Linux's strength as an internet server make it a perfect platform for
running an internet Quake II server. This section will touch on the
basics and Linux-specific aspects of starting up a Quake II server. More
detailed information about running Quake II servers is available elsewhere
(see section
earlier in this document.
Listen Servers
You can start a Quake II "Listen" server from within the game via the
Multiplayer menu. This allows you to host a game and participate
in it at the same time.
To start a Listen server, start Quake II, bring up the Quake II menu with
the ESC key, and select Multiplayer. It should be pretty
self-explanatory from there.
Dedicated Servers
For a permanent, stand-alone Quake II server that needs to run without
constant attention, using the Listen server is impractical. Quake II has
a Dedicated server mode that is better suited to this type of use. A
dedicated server is started from the command line and uses fewer system
resources than a Listen server because it doesn't start the graphical
client piece at all.
To start a dedicated server, use the command line option +set
dedicated 1. You can set additional server parameters either on the
command line or in a config file that you +exec on the command
line. Your config file should reside in the baseq2 directory.
A few common server options are listed below. To set options on the
command line, do +set fraglimit 30. Options are set the same way
in a config file, only you don't want the + before the
set. Invoke your config file like this: +exec
server.cfg.
fraglimit
Number of frags required before the map changes
timelimit
Time in minutes that must pass before the map changes
hostname
The name of your Quake II server. This is an arbitrary string and
has nothing to do with your DNS hostname.
maxclients
The maximum number of players that can connect to the server at once.
For enough Quake II console and command line information to choke a horse,
see Farenheit 176 (http://www.planetquake.com/f176).
Other Sources of Server Information
The Q2 Server FAQ has a basic step-by-step guide to set up a
Q2 Server under Linux: http://www.bluesnews.com/faqs/q2s-faq.html
Grant Cornelius Reticulus Copernicus Sperry (flubber@xmission.com) has some
basic Q2 server config files and startup scripts at http://www.atomicage.com:80/quake/server/server_cfg/.
Mods & Addons
Quake II modifications like Capture the Flag, Jailbreak, and Lithium
II are very popular extensions of the original Quake II game. Some
mods reside entirely on the server (Lithium), and some also require changes
to your client (CTF). For server only mods, you just connect normally
and play. Client-side mods require you to install additional files in
your quake2 directory before you can play.
Client Side Mods
Generally, installation of a client-side mod consists of just
downloading the client package and upacking it in your Quake II
directory, but you should refer to the mod's documentation for specific
details. It may be necessary to download a Linux-specific package
in addition to the main (Windows) client package. Also be aware that all mods
may not be available for Linux.
Client-side mod packages usually contain a new gamei386.so
file and one or more .pak files. Other new files may be
included as well. These new files will be installed in a subdirectory
below your Quake II directory. Use +set game mod-dir
on the command line to run the mod. Rocket Arena 2, for example, gets
installed in a directory called arena. To play RA2,
your would start your client like so:
./quake2 +set game arena
Capture the Flag
Since this is by far the most popular variation of multiplayer Quake II,
I've included specific instructions for installing this mod. Capture
the Flag for Quake II is available from id's ftp site. Download
it, then install like so:
cd /usr/local/games/quake2
mkdir ctf
cd ctf
unzip -L /wherever/you/put/it/q2ctf102.zip
Start Quake II with +set game ctf to play CTF.
Server Side Mods
Running a Quake II mod on a server isn't much different than running one
on the client side. Generally you'll need to install gamei386.so
and server.cfg files in a new subdirectory and then start your
server like
./quake2 +set game XXXX +set dedicated 1 +exec server.cfg
Where XXXX above is the name of the mod's new subdirectory. The exact
procedure will vary from mod to mod, of course. See the mod's documentation
for specific details.
Game Source
The entire game, with the exception of the engine itself, resides in a
shared library, gamei386.so. Quake II mods are created by
changing the contents of this file. The C source is freely available
(section above)
for anyone to download and modify.
After you've downloaded the source, here's how to get started with it:
cd /usr/local/games/quake2
mkdir mymod
cd mymod
gunzip /wherever/you/put/it/q2source-3.14.shar.Z
sh /wherever/you/put/it/q2source-3.14.shar
You'll be presented with a bunch of legalese that you must answer
yes to, then the game source will be extracted. Building a new
gamei386.so out of these sources is accomplished with a simple
make. You can run Quake II with the newly compiled library like
so:
cd /usr/local/games/quake2
./quake2 +set game mymod
Not too exciting yet, since what you just built is identical to the
"stock" gamei386.so, but this should be good information for
aspiring mod authors.
Mission Packs **
Mission Pack 1: The Reckoning
The Reckoning requires Quake II version 3.15 or later to run. You'll need at least
95 MB for a minimum installation. Another 90 MB are required if you want
to install the video sequences as well. Assuming your CD is mounted on
/mnt/cdrom and Quake II is installed in
/usr/local/games/quake2:
cd /usr/local/games/quake2
cp -r /mnt/cdrom/Data/all/* xatrix/
rm -f xatrix/gamex86.dll
If you want to install the video sequences:
cp -r /mnt/cdrom/Data/max/xatrix/video xatrix
Play The Reckoning like this:
cd /usr/local/games/quake2
./quake2 +set game xatrix
Mission Pack 2: Ground Zero
It requires Quake II version 3.17 or later to run. You'll need at least
120 MB for a minimum installation. Another 115 MB are required if you want
to install the video sequences as well. Assuming your CD is mounted on
/mnt/cdrom and Quake II is installed in
/usr/local/games/quake2:
cd /usr/local/games/quake2
cp -r /mnt/cdrom/Data/all/* rogue/
rm -f rogue/gamex86.dll
If you want to install the video sequences:
cp -r /mnt/cdrom/Data/max/rogue/video rogue
Play Ground Zero like this:
cd /usr/local/games/quake2
./quake2 +set game rogue
Related Software ++
QStat
Qstat is a command line based program that returns the status of internet
Quake, QuakeWorld, and Quake 2 servers created by Steve Jankowski mailto:steve@activesw.com.
Here's the feature summary from the QStat homepage:
Supports Windows 95, NT, and most Unixes
Comes with C source code and a binary for Windows
Supports old Quake (NetQuake), QuakeWorld, Hexen II, and Quake II
servers
Can display all available statistics, including player info and
server rules
Output templates for automatic HTML generation
Raw display mode for integration with HTML page generators
Built-in host name cache
Sort by ping time, game, or both
More options than you can wiggle a mouse at
Qstat is a must-have tool if you're planning on doing any net play. A
number of front-ends for qstat have been written as well. Some of them
are listed later in this section.
You can get the latest version of qstat from the QStat Homepage (http://www.activesw.com/people/steve/qstat.html.
XQF
XQF is a graphical front-end to QStat that uses the GTK toolkit. This is
the best QuakeWorld/Quake2 server browser that currently exists, and
Roman Pozlevich (roma@botik.ru), is still cranking out revisions at the rate of
about one per month.
If you're familiar with GameSpy for the Windows platform, this is the
closest thing to it for Linux.
The XQF homepage is at http://www.linuxgames.com/xqf.
QuickSpy
QuickSpy is a text-based QuakeWorld server browser. It's another
front-end to QStat and it works pretty well. If you don't run X and
you don't have Quake II, this is a decent option. Beware though, it's no
longer under development.
You can get QuickSpy at http://diana.ecs.soton.ac.uk/~rht96r/quake/quickspy/.
QPlug for Linux
Qplug is a Netscape plugin which retrieves and displays QuakeWorld and
Quake II server information embedded in a web page. A Windows Qplug has
been around for some time. The author, Olivier Debon (odebon@club-internet.fr)
wrote the Linux version from scratch without ever having seen the Windows
version.
QPlug for Linux can be got at http://www.geocities.com/TimesSquare/Labyrinth/5084/qplug.html.
qkHacklib
David Bucciarelli (tech.hmw@plus.it), author of the 3Dfx driver for Mesa, has
written a library called qkHack, which tries to emulate all the
SVGAlib/fxMesa functions used by Quake and Quake II. This would remove
the need for SVGAlib when running glquake or Quake II with ref_gl.
Other features from the qkHacklib README:
You can dynamically switch between fullscreen rendering and the in
window rendering just pressing the TAB key (you must start your X server
in 16 bpp mode in order to use this feature)
You can press Ctrl-C in the shell or kill the Quake process without
problems
you can enable/disable the mouse and keyboard 'grabbing' pressing
F11/F12
you can iconify and pause Quake pressing the F10 (it will not
eat more CPU cycles). You can restart everything with a double
click in the "****" icon
you can run Quake with any Mesa driver (for example with the
X11 driver but you must recompile the Mesa without the Voodoo
driver)
you can run Quake under any Linux box and get the hardware
acclerated output on a SGI box (OK, this is a bit exotic and
theoretical as feature but it is an example of how powerful can be an
GLX/OpenGL application)
I've tried qkHacklib and it works great for Quake on my system. In
Quake II, however, the mouse response becomes really slow.
Others report complete success, though, so give it a try it it sounds
like something you need.
David Bucciarelli's qkHacklib web page is at http://www-hmw.caribel.pisa.it/fxmesa/fxqkhack.html.
GiMd2Viewer
GiMd2Viewer is a Quake 2 model viewer written for Gtk and OpenGL by
Lionel Ulmer (bbrox@mygale.org). It loads models and textures from either plain
files or .PAK files. It will also animate the models (with frame
interpolation).
This program is still under developement and I haven't tried it yet, but
it sounds pretty nifty. Check it out at http://www.mygale.org/~bbrox/GiMd2Viewer/.
QIPX
QIPX is a set of programs that allow Linux Quake clients (using TCP/IP) to
connect with DOS Quake clients (using IPX). I guess this is useful if
you're playing netquake on a LAN. QIPX is available at
http://www.geocities.com/SiliconValley/Park/6083/qipx.html.
Ice
Ice is a Quake map editor for UN*X created by C.J. Beyer and John Watson.
I haven't used this program, nor do I know what its development status is.
The Ice homepage is at http://styx.phy.vanderbilt.edu/~ice/.
Q2getty
Q2getty is a hack of mingetty by Mike Gleason (mgleason@ncftp.com) that allows you to
automatically run and respawn a program (like a Quake server) on a
virtual console.
This program is available in the files section at http://www.ncftpd.com/unixstuff/q2getty.html.
rcon
Rcon is a pair of tools that allow remote administration of a Quake II
server using the RCON protocol. Michael Dwyer (michael_dwyer@mwiworks.com)
is the author. Rcon 1.1 is available at �.
qlog ++
Qlog is a GPL'ed QuakeWorld/Quake II server log parser that generates
comprehensive player statistics. Craig Knudsen (cknudsen@radix.net) is the author.
The qlog homepage is http://www.radix.net/~cknudsen/qlog/.
Cheapo **
Cheapo is a proxy that can be used to route QuakeWorld network
traffic. Additionally, the proxy can modify the data and has features
for enhancing gameplay. You can connect to cheapo as if it were a
Quakeworld server, and then give it commands that forward you to a
real server. The proxy can also be run on a firewall machine
incapable of handling Quake traffic, so that machines inside the
firewall can be used for playing.
The Cheapo homepage is at http://www.saunalahti.fi/~softech/.
qgraph **
QGraph (Quake Graph) is a utility to help people in managing Quake's
DeathMathes, turnments and Quakeworld games.
QGraph is a program who connects (via Lan or the Internet) to a Quake,
QuakeII, Quakeworld and Hexen2 Servers and shows you realtime data about
the game running on that server.
The QGraph homepage is at http://www.frag.com/qgraph.
Troubleshooting/FAQs
General
OS difference considerations
Case sensitivity - In DOS and Windows, case is not important.
BASE1.TXT is the same as base1.txt. Under Linux and other
unices, case IS significant. MOTD.TXT and motd.txt are
different files. This can cause problems with player models and skin files
if they're installed with upper- or mixed-case filenames.
players/male/santa.PCX needs to be renamed to santa.pcx in
order to work in Linux. The fixskins.sh script included with
quakeworld will convert all filenames in a directory to lowercase. It's
reproduced below for your convenience:
#!/bin/sh
for x in *; do
y=`echo $x | tr '[A-Z]' '[a-z]'`
if [ $x != $y ]; then
mv $x $y
fi
done
Path delimiters - DOS and Windows use the backslash "\"
character to separate file pathname elements. In Unix, the backslash is an escape
character. If you use file pathnames in your config files (or your mod code, or
anywhere else, for that matter), be sure you're using "/" and not "\".
End of line characters - Under DOS/Windows, each line of a text file
ends with a carriage return character (CR) and a linefeed character (LF). Unix
textfiles just have a linefeed at the end of each line. Using DOS/Win formatted
textfiles in Unix can cause all kinds of mysterious Quake problems. Using the
incorrectly formatted quake2.conf file from the Quake2 3.17 package, for
example, gives the error "LoadLibrary("ref_XXX.so") failed: No such file or
directory". LMCTF-TE reports a floating point exception.
If you've got an problem you can't explain, try removing the CRs from your text
files:
mv file.txt file.bak; tr -d '\r' < file.bak > file.txt
Glibc, RedHat 5.x, Debian 2 considerations **
The following applies the Quake I binaries (squake,
glquake, and quake.x11) only. As of versions
2.30 and 3.19 respectively, QuakeWorld and Quake II are available
in both libc5 and glibc versions.
The Quake executables were compiled with libc5. Newer Linux
distributions like RedHat 5.1 and Debian 2.0 use the incompatible
glibc as their default C library. If you're running Quake on a
glibc system, there are a few things to watch out for:
Both RedHat 5 and Debian 2 have libc5 compatibility packages that allow
you to run libc5-based applications. Make sure you have these packages installed.
Both distributions put the libc5-based libraries in /usr/i486-linux-libc5/lib.
Make sure Quake uses the correct libraries. Create a script like the one below
that points $LD_LIBRARY_PATH to your compatibility libraries directory before
it runs Quake.
#!/bin/sh
export LD_LIBRARY_PATH=/usr/i486-linux-libc5/lib
./quake2 +set vid_ref gl $*
If you are going to compile a library like SVGAlib or Mesa
for use with Quake, it must be compiled with libc5 and friends.
Simply building a new library according its installation
instructions will result in a library that is linked against your
default library, glibc. You must ensure your new library is
linked only with libc5 and libc5-based libraries so it will be
compatible with Quake. See your distribution's documentation for
information on linking to the non-default libraries.
My mouse doesn't work or seems to respond randomly.
Is gpm running? gpm is a program that enables you to cut and paste
with the mouse in virtual consoles. Many distributions enable it by
default. It may be interfering with Quake. Check if it's running with
the following command:
ps aux | grep gpm
If you get output like
root 6115 0.0 0.4 832 316 ? S 17:54 0:00 gpm -t PS/2
then gpm is running and interfering with Quake. gpm -k (as root)
ought to stop gpm. If it doesn't (gpm -k doesn't always work on
my system), kill gpm with the command killall gpm.
If you never use gpm, you may want to stop it from running at startup.
See the documentation for your distribution for information on how to do
this.
Is your mouse defined properly in libvga.config? This file
usually lives in /etc or /etc/vga. Open it up and look
for a line like
mouse Microsoft
On my system, this is the first option in the file. Make sure the mouse
type is appropriate for your hardware.
My Microsoft Intellimouse or Logitech MouseMan+ isn't working correctly.
SVGAlib, which handles mouse input for SVGA and GL Quake/QW/Q2,
didn't directly support the Intellimouse until version 1.3.0. If you have a
version of SVGAlib prior to 1.3.0, you should upgrade, then use mouse
type IntelliMouse (for serial mice) or IMPS2 (for
PS/2 mice) in your libvga.config file.
My mouse is "laggy" and seems much slower than under Windows.
For many people, just cranking up the value of
sensitivity in the game console cures the problem.
Setting sensitivity by hand in the console or in a
.cfg file allows you to increase the mouse sensitivity
more than the slider in the Options menu. sensitivity 15,
for example.
From Zoid's 1/7/98 .plan update:
If you are experience video 'lag' in the GL renderer (the frame
rate feels like it's lagging behind your mouse movement) type
"gl_finish 1" in the console. This forces update on a per frame
basis.
The latest version of SVGAlib (1.3.0) provides a slew of parameters
in libvga.config that you can use to customize the behavior of
your mouse. With the proper settings it should be possible to make your
mouse feel any way you want. On my system, just changing
mouse_accel_type to normal (default is power)
gave me the results I wanted. I haven't messed with the other settings,
and I don't pretend to have a clue about what they all do.
The little slider
squake/quake2 fails to start and says "svgalib: cannot get I/O permissions"
The Quake executables must run as root, so you must either run them as
root or make them setuid root. See the installation instructions in this
document for details.
Sometimes after playing one of the Quake games in X, key repeat doesn't work any more.
For some reason, the X11 versions of Quake disable key repeat while
they're running. If the program exits abnormally for some reason, key
repeat never get turned back on. Do
xset r on
to reenable it.
GL Quake/Quake II run slower in Linux than in Windows. **
The Windows 3Dfx GL miniport is heavily optimized for the things
Quake II does. Mesa on the other hand, is more general and less optimized
As a result, Linux Quake II runs slower than under Windows. This isn't a
limitation of Linux, but a limitation of the current drivers.
With the most recent releases of QuakeWorld and Quake II, the
3Dfx miniport mentioned above is available for Linux. While it
still doesn't bring Linux Quake performance to par with Windows
Quake, it's another step in that direction.
Quake/QuakeWorld
Quake dies at startup with a segmentation fault.
This usually means your network setup isn't right. Try starting quake
with the -noudp option and see if the error goes away. If that
fixes it, check your /etc/hosts file and verify there's an
entry for your machine in it. Use 127.0.0.1 for your IP address if you
have a dialup account that gives you a different address each time you
connect.
What's the difference between glqwcl, glqwcl.3dfxgl, and glqwcl.glx? ++
glqwcl is the standard GL Quakeworld client you've
seen in previous versions. It's linked against libMesaGL.so.2.
glqwcl.3dfxgl is a script that runs glqwcl
after preloading the 3Dfx GL miniport library, lib3dfxgl.so. Preloading
the minport library causes its GL functions to get used instead of Mesa's. Since
the GL minport is optimized for Quake, this is a good thing.
glqwcl.glx is linked against standard OpenGL libriaries
instead of Mesa. This will allow glquake to run on other 3D hardware that is
supported by some other OpenGL implementation. This is an X application and
so must be run from X.
When I run glqwcl.glx fullscreen from X, I can't use my mouse or keyboard. ++
Run glqwcl.glx with the +_windowed_mouse 1
option. GLX Quakeworld is running in a window, even though it
appears to take up your whole screen. If you move the mouse
while the WM is in focus-follows-mouse mode, you're likely to
move the pointer outside this window, and then Quake will stop
responding to mouse and keyboard input. +_windowed_mouse 1
makes Quakeworld grab the mouse exclusively.
Quake II
When I try to run Quake II with the GL renderer, it fails and says "LoadLibrary("ref_gl.so")
failed: Unable to resolve symbol"
If immediately prior to the "Unable to resolve symbol" line, you have messages like "can't
resolve symbol 'fxMesaCreateContext'", your Mesa library doesn't have glide support compiled in. See
section in the Quake II installation section for information on installing Mesa and glide.
Quake II fails with the message LoadLibrary("ref_XXX.so") failed: No such file
or directory
/etc/quake2.conf doesn't have the correct path to your Quake II directory in it.
This file should contain one line that is the directory Quake II lives in.
If /etc/quake2.conf does contain the correct path, try
removing the file and re-creating it by hand. Some versions of Quake II for Linux included an incorrectly formatted
quake2.conf file.
Do you have SVGAlib installed? Check /lib, /usr/lib and /usr/local/lib for a file called libvga.so.1.X.X, where the X's are some numbers. If nothing turns up, you need to get and
install SVGAlib to run Quake II outside of X.
If the renderer in question is ref_gl.so, Mesa may not be
properly installed. Did you copy libMesaGL.so.2.6 to a library directory like the
installation instruactions told you to?
If the renderer in question is ref_gl.so, did you install the glide
libraries?
When I update the brightness while using the GL renderer, and hit "apply," nothing happens!
Type vid_restart in the console to make the changes take affect.
Note about the 3.17 distribution
As of this writing, the most recent Quake II version is 3.19. If for some reason, you're running version 3.17
instead, the following information may be helpful to you.
Two text files (quake2.conf and fixperms.sh) in the
3.17 distribution were inadvertently saved in MS-DOS CR/LF text-file format instead of the unix LF format. This means
there's an extra carriage return character at the end of each line in these files and they're not going to behave
right until you fix them.
We'll run them through tr(1) to strip out the CR's.
for i in fixperms.sh quake2.conf
do
mv $i $i.bak
tr -d '\r' < $i.bak > $i
done
When I run Quake II with +set vid_ref glx fullscreen from X, I can't
use my mouse or keyboard. ++
Run GLX quake2 with the +set _windowed_mouse
1 option. GLX Quake2 is running in a window, even though it appears to take up your whole screen. If you
move the mouse while the WM is in focus-follows-mouse mode, you're likely to move the pointer outside this window, and
then Quake II will stop responding to mouse and keyboard input. +set
_windowed_mouse 1 makes Quake II grab the mouse exclusively.
Why can't I change to some of the SVGA modes that aree in the Quake II Video menu? **
SVGAlib probably doesn't know how to create the modes on your card. When Quake II starts up with the SVGA
renderer (ref_soft.so), it prints a list of all the modes that SVGAlib tells it
are available:
------- Loading ref_soft.so -------
Using RIVA 128 driver, 4096KB.
mode 320: 200 1075253220
mode 320: 240 1075253220
mode 320: 400 1075253220
mode 360: 480 1075253220
mode 640: 480 1075253220
mode 800: 600 1075253220
mode 1024: 768 1075253220
mode 1280: 1024 1075253220
These are the only modes you will be able to successfully switch to from the Video menu. If say, 512x384 isn't
on the list, selecting it from the Video menu won't work.
SVGAlib does let you define new video modes for some chipsets in libvga.config,
so you may be able create your own video mode this way. See the SVGAlib documentation for more detail on this
topic.
Tips & Tricks
Running SVGA and GL games from X **
The GLX Quakeworld and Quake II clients are native X applications, but since they use Mesa rather than the 3Dfx
mini-driver, they're slower than the lib3dfxgl.so versions. For this reason, you may still
favor this way of starting games from X over using the GLX clients.
This is based on a Linux Gazette Tip by Joey Hess joey@kite.ml.org. The original is at http://www.ssc.com/lg/issue20/lg_tips20.html#squake
Yes, it's possible to run the Quake games from X if you're root, but such behavior is naughty, and you still run
the risk of having Quake crash and leave the console unresponsive. With a little work you can make it possible for a
regular user to run SVGA and GL Quake from X AND automatically switch back to X when the program is
finished, regardless of whether it exited normally or not.
Note: when I say "Quake" in the text below, I really mean "quake, glquake squake, qwcl, glqwcl, qwcl.x11 or
quake2".
First, you'll need the open(1) package by Jon Tombs. This is a set of two very
small programs that allow you to switch between virtual consoles and start programs on them. Download open from http://sunsite.unc.edu/pub/Linux/utils/console/. You
shouldn't have to do much more than make;make install to compile and install it. Once it's
installed, you need to make the open and switchto executables
setuid root. So do this:
cd /usr/local/bin
chown root open switchto
chmod 4755 open switchto
Next, save the following code to a file called getvc.c:
Compile it and install it somewhere in your $PATH:
gcc getvc.c -o getvc
strip getvc
mv getvc /usr/local/bin
Now create a script called runvc: your $PATH:
#!/bin/sh
# Run something on a VC, from X, and switch back to X when done.
# GPL Joey Hess, Thu, 10 Jul 1997 23:27:08 -0400
exec open -s -- sh -c "$* ; chvt `getvc`"
Make it executable and put it somewhere in your $PATH:
chmod 755 runvc
mv runvc /usr/local/bin
Now you can use the runvc command to start Quake. Continue to use whatever command
line you usually use to start your game, but put runvc at the beginning:
runvc ./quake2 +set vid_ref gl +connect quake.foo.com
You'll automatically switch to a VC, run Quake and then switch back to X when it's done!
Keeping the mouse inside the window in X
From the Quake II readme.linux file:
By default, the mouse will not be 'tied' to the Quake2 window.
To cause Quake2 to grab the mouse, select 'Windowed Mouse' from the video
menu, or type '_windowed_mouse 0' at the console. Do the reverse to
release it. You can bind keys to grab and release the mouse in the
console, like so:
bind i "_windowed_mouse 1"
bind o "_windowed_mouse 0"
Then "i" will grab the mouse and "o" will release it.
3Dfx "tweak" settings work in Linux too
You may have seen or heard mention of ways to "tweak" Quake's OpenGL
performance by setting various environment variables. These variables
are equally valid under Linux. You just set them slightly differently.
If a Windows/DOS "tweak" guide tells you to:
SET SST_GRXCLK=59
Under Linux, do it like this:
export SST_GRXCLK=59
The Poor Man's Server Browser
Joe S. (jszabo@eden.rutgers.edu) suggests:
a trick I do with qstat:
I make a file of my favorite servers, then do
qstat -f /C/quake2/file.txt | less
hit control z to suspend, then copy the ip address or hostname I want
with gpm to a command line like:
./quake2 +connect expert.eqclans.com
Then I can use fg to go back to the list later...
Using lib3dfxgl.so for Quake I **
You can use the 3Dfx mini-driver (lib3dfxgl.so) from
Quakeworld or Quake II with glquake too. Simply copy
the glqwcl.3dfxgl or quake2.3dfxgl
scripts to a new file, say glquake.3dfxgl. Then edit the
glquake.3dfxgl script so it runs glquake instead of
glqwcl.
The same restrictions about running as root apply here, as do
the differences between running under glibc and libc5.
See the FIXME or FIXME sections for more information on
lib3dfxgl.so.
Other Sources of Information
Linux Meta Gaming Resources
The Linux Gamers' Howto
http://www.linuxdoc.org
Linux Meta Gaming Website
http://linuxgames.com
The Linux Game Tome
http://happypenguin.org
Linux Specific Quake Resources
Canonical Linux Quake Pages: http://www.linuxquake.com/
Planetquake's Linux Page is down. As of Feb 2002, the maintainer
said it'll be back up in a couple of months: http://www.planetquake.com/linux
Very outdated. Kept here for historical purposes. The last
update was 2 years ago.
http://www.quakeworld.net
General Quake Resources
id Softwarehttp://www.idsoftware.com
PlanetQuake http://www.planetquake.com
Farenheit 176 Console Command Listing http://www.planetquake.com/f176
rec.games.computer.quake.* newsgroups