3. QuakeWorld

QuakeWorld is a multiplayer-only version of Quake with optimized network code. id Software released the source code for Quake/QuakeWorld in 1999, spawning a number of projects set out to improve, optimize and add more features to the code and make it more secure. QuakeForge is quite well-developed on the client side, but mvdsv (part of the qwextended project) seems to be the most popular server in the QW community. It's famous for its ability to record demos from each player's POV (Point of View) and store them for retrieval by the players.

3.1. System requirements

Here are the minimum system requirements for the QW (QuakeWorld) server. Remember that the requirements vary depending on the number of clients.

3.2. Installing

id Software's old qwsv is quite dated and should not be used (nor can it be used in most cases, since it's built for the ancient libc5). So, use either mvdsv or QuakeForge.

Note: Both mvdsv QuakeForge are actively being developed (more or less), and it's highly possible that newer versions than the ones linked below have been released, so check http://qwex.does.it/ or http://quakeforge.net/files.php before you proceed further.

Create a directory for the QW server in your home directory:

$ mkdir quake

If you downloaded the mvdsv source:

$ tar zxvf qwex_src-0.165b.tar.gz
$ cd mvdsrc
$ make build_sv
$ cp releasei386-glibc/mvdsv ../quake 

If you downloaded the mvdsv binary:

$ gunzip mvdsv.0.165b.linux.glibc2.1.3.gz
$ mv mvdsv.0.165b.linux.glibc2.1.3 mvdsv
$ chmod +x mvdsv
$ mv mvdsv quake/ 

If you downloaded the QuakeForge source:

$ tar zxvf quakeforge-0.2.99beta6.tar.gz
$ cd quakeforge-0.2.99beta6
$ ./configure --prefix=$HOME/quake --bindir=$HOME/quake; make; make install

This will at least build qf-server, nq-server (RealQuake) and some client binaries. We don't need the latter; you can choose not to compile them, or simply remove them later. Anyway, if the compilation went fine you should now have a binary called qf-server in $HOME/quake, where $HOME is your home directory (usually /home/user).

You might want to rename mdsv or qw-server to qwsv, since that's what I'll call it in the rest of this document. Now create the directory id1 in the quake directory and copy the pak0.pak and pak1.pak files from your Quake CD or wherever you have them into that directory:

$ cd ~/quake
$ mkdir id1
$ cp /some/where/id1/pak*.pak id1

You also need the qw files:

Unzip it in your quake directory:

$ cd ~/quake
$ unzip qwsv230.zip

Now you're ready to run qwsv. Start it by running ./qwsv in the quake directory. It should work fine (if not, make sure all the filenames are in lower-case). Try connecting to your server with a client.

3.3. Configuring

Now it's time to configure your QW server. Make a server.cfg file in the id1 directory containing the following:

sv_gamedir qw
deathmatch 1
hostname                "QW testserver"
serverinfo admin        "webmaster@xyz.com"
serverinfo url          "http://url.net"
rcon_password xxxx
timelimit 35
fraglimit 150
noexit 1
pausable 0
samelevel 2
maxclients 16
map dm3
floodprot 4 8 30
floodprotmsg "You have activated the flood protection and will be silenced for 30 seconds"
maxspectators 2
allow_dowload 1
allow_download_skins 1
allow_download_models 1
allow_download_sounds 1
allow_download_maps 1

As you can see the server.cfg file contains all kinds of variables the server uses.

$ ./qwsv > /dev/null &

The above command runs the qwsv server in the background and sends the output to /dev/null (if you want to log the output, just replace /dev/null with /blah/qw.log or whatever). -port specifies the port the server will use; QW's default is 27500. For a complete list of commands and the official QW manual, see QuakeWorld.net. For a list of special commands that can be used with mvdsv, see the qwex readme.

3.4. Threewave CTF (Capture The Flag)

Capture The Flag, or CTF for short, is - or was, at least - the most popular Quake modification. There are many different CTF variants. Threewave CTF is the original and most popular CTF modification for QW. You need the following files:

Create a ctf directory and extract all the files you downloaded to it:

$ cd ~/quake
$ mkdir ctf
$ unzip 3wave42.zip -d ctf
$ unzip 3wave421.zip -d ctf
$ unzip 3wctfc.zip -d ctf

Now try to start the server (if you don't specify a map it'll default to an interesting modified version of Quake's start level):

$ ./qwsv +gamedir ctf +map ctf1

For more information, read ctf/server.txt.

3.5. Kombat Teams Pro

Kombat Teams is a very popular mod that's been around for a long time. Most QW servers run it. KTeams greatly simplifies all forms of DM games by supplying commands to set teams, timer, readiness and much more.

Download the following:

Extract it in your quake directory:

$ tar zxvf ktpro.1.57.tar.gz

Start the server:

$ ./qwsv +gamedir ktprosrv

Default is a 1on1 server. To start a 2on2 server you'd add +exec 2on2.cfg, or +exec 4on4.cfg for a 4on4 server, or +exec free.cfg for a free for all server. KTPro comes with a bunch of scripts which do this; ktpro1on1, ktpron2on2, etc. in the quake directory. Check out all the configuration examples in ktprosrv/ and the documentation in ktpro.doc/.

3.6. Rocket Arena

Rocket Arena is a very exciting modification. It's one-on-one games with the simple rule "winner stays, loser goes". Each player waits for his/her turn to fight in the arena. Every player gets full armor (200), 100 health and all weapons when they enter the arena. The winner stays to fight again, the loser goes back to the line. Simple? Yes. Boring? Not at all!

Now, on to installing this modification. Get the following files:

Create a directory called arena in your quake directory and unzip the above files to it:

$ cd quake
$ mkdir arena
$ unzip ~/fasrv12.zip -d arena
$ unzip ~/farena12.zip -d arena

Start the server:

$ ./qwsv +gamedir arena +setmaster 204.182.161.2 +exec rotate.cfg +maxclients 6 +timelimit 20 +fraglimit 15

For the map rotation you can choose one of the following (of course you can edit these or make your own, remember that the last map must loop to the first):