4. Quake II

Quake II is the sequel to Quake, featuring great multiplayer capabilities just like its prequel.

4.1. System requirements

The minimum system requirements can vary, depending on the number of players you want on your server.

4.2. Installing

To start a Q2 server you need the pak files from the Q2 CD and the Q2 client package, download the one that suits you (most likely glibc, but you might have libc5 if you have an old distribution):

Make a directory for Q2 and extract the Q2 client package to that directory.

bash$ mkdir /usr/local/games/quake2
bash$ tar zxvf quake2-3.20-glibc-i386-unknown-linux2.0.tar.gz -C /usr/local/games/quake2

Now create a baseq2 directory inside the Quake2 directory and copy the pak files from the Q2 CD-ROM.

bash$ mkdir /usr/local/games/quake2/baseq2
bash$ cp /mnt/cdrom/baseq2/*.pak /usr/local/games/quake2/baseq2

Cd to the Quake2 directory and start the server.

bash$ cd /usr/local/games/quake2
bash$ ./quake2 +set dedicated 1 +set deathmatch 1

It should work fine now and people can connect to your server.

4.3. Configuring

Of course, you will want to create a server config (cfg) file. Put the following in a file called server.cfg in the baseq2 directory, modify it as you like:

set hostname "Q2 testserver"
set deathmatch "1"
set rcon_password "xxxx"
set timelimit "30"
set fraglimit "100"
set maxclients "16"
set allow_download "1"
set allow_download_players "0"
set allow_download_models "1"
set allow_download_sounds "1"
set allow_download_maps "1"

Settings:

Now start the server with ./quake2 +set dedicated 1 +exec server.cfg. Your config file will be read and the variables in it will be used. You can have different config files for different game types, for example ffa.cfg, ctf.cfg, etc. with customized settings. They should all be in the baseq2 directory.

To have your server listed on the master servers (so people using GameSpy, XQF and similar programs can see your server), type set public 1 in the server console or in the config file. With the command set setmaster 'master server' you can change master server (default is id Software's master server).

4.4. Q2CTF (Capture The Flag)

Download one of the following, the one that suits your system (most likely glibc for 'modern' distributions).

It only contains the file gamei386.so. Make a ctf directory in your Q2 directory and extract the q2ctf archive.

bash$ mkdir /usr/local/games/quake2/ctf
bash$ tar -zxvf q2ctf150-glibc-i386-unknown-linux.tar.gz -C /usr/local/games/quake2/ctf

You'll also want the Q2CTF package with the CTF maps, http://ftp.sunet.se/pub/pc/games/idgames2/idstuff/quake2/ctf/q2ctf150.zip (9,1MB). Unzip it to the ctf directory. To start a CTF server, type ./quake2 +set dedicated 1 +set game ctf +exec server.cfg, where server.cfg is a file you should create in the ctf directory and contain something like this:

deathmatch 3
maxclients 12
rcon_password password
fraglimit 0
timelimit 30
set hostname "Q2CTF Testserver"
set admin "admin@xyz.com"
map q2ctf1

4.5. LMCTF (Loki's Minions CTF)

LMCTF, Loki's Minions CTF, is a popular CTF modification for Q2. You need all the following files:

Create a lmctf directory in your Q2 directory and unzip all the files there. Cd to the Q2 root directory and start with the following command:

bash$ ./quake2 +set dedicated 1 +set deathmatch 1 +set game lmctf +exec server.cfg

There are some files in the lmctf you probably want to edit: server.cfg is the cfg file containing many standard server options, edit it to your liking. The file maplist.txt contains the list of maps the server cycles through. To alter the map list, create a file called maplist.txt with the names of the maps you want in your root Q2 directory and add +map <mapname> to the command line when you start the server, where <mapname> is the name of the first map in your maplist.txt you just created. The motd.txt file contains your message of the day.

For more information on LMCTF, see its homepage at http://www.planetquake.com/lmctf.

4.6. Rocket Arena 2

To run a Rocket Arena 2 server you need the following files:

Create a directory called arena in your quake3 directory and extract the above files:

bash$ cd /usr/local/games/quake2
bash$ mkdir arena
bash$ unzip ~/ra2250sv.zip -d arena
bash$ unzip ~/ra2250cl.exe -d arena

Edit server.cfg to your liking. Another file that you may want to edit is arena.cfg used to customize settings on a per arena basic as well as map rotation information. Start the server:

bash$ /quake2 +set dedicated 1 +set game arena +exec server.cfg

4.7. Lithium II

Lithium II is a very popular, configurable server-side deathmatch mod, adding things like the grappling hook and letting you configure pretty much everything; see its readme.txt file for more information. Download the following file:

Extract the file in your Quake2 directory. All the files will be placed in a lithium directory.

bash$ cd /usr/local/games/quake2
bash$ tar zxvf ~/lithium2_1.24-i386-unknown-linux2.0.tar.gz

Lithium II comes with four different config files, copy one of them to server.cfg and modify it as you like:

Start a deathmatch server with this command:

bash$ ./quake2 +set dedicated 1 +set game lithium +exec server.cfg

To start a CTF server, you must have Q2CTF installed. Extract the lithium archive into your ctf directory and start with the following command:

bash$ ./quake2 +set dedicated 1 +set game ctf +set ctf 1 +exec server.cfg

4.8. L-Fire DM

L-Fire DM is a server-side mod that adds many features to Q2, such as organized match support, anti-spam, highscore lists for each level, profanity filtering, etc. What you need:

You can run L-Fire DM either from the baseq2 directory, in that case it will show up as a standard DM mod in GameSpy and similar tools, or you can give it its own directory (lfiredm or whatever you prefer). Extract the archive (actually, it only contains two files, gamei386.so and readme.txt), or in other words place gamei386.so in your directory of choice.

bash$ cd /usr/local/games/quake2
bash$ mkdir lfiredm
bash$ tar zxvf ~/LFireDM_v1_11_Linux.tar.gz -C lfiredm

LFireDM_v1_11_Config.tar.gz contains many config files which you'll want to edit. Extract it to the directory where you put gamei386.so:

bash$ tar zxvf ~/LFireDM_v1_11_Config.tar.gz -C lfiredm

Start the server:

bash$ ./quake2 +set dedicated 1 +game lfiredm

4.9. L-Fire CTF

L-Fire CTF is also, like L-Fire DM, a server-side mod that adds many features to Q2CTF, such as match support, anti-spam, highscore lists for each level, rocket arena/sudden death overtime, etc. What you need:

Extract the archive to your Q2CTF directory:

bash$ cd /usr/local/games/quake2
bash$ tar zxvf ~/LFireCTF_v1_20_Linux.tar.gz -C ctf

LFireCTF_v1_20_Config.tar.gz contains a bunch of configuration files which you'll probably want to edit. Extract it to the Q2CTF directory:

bash$ tar zxvf ~/LFireCTF_v1_20_Config.tar.gz -C ctf

Start the server just as you normally would:

bash$ ./quake2 +set dedicated 1 +game ctf

4.10. Q2Admin

Q2Admin is a very good transparent proxy modificatiom that adds many admin functions, and the most important, ZBot/Ratbot (among other things) detection to prevent people from cheating. Q2ADmin works with all Q2 mods transparently by filtering communication between the server and the mod it's running on top of. I recommend that you install Q2Admin. Download this file:

Now extract the archive somewhere and compile it:

bash$ cd /usr/local/games/quake2
bash$ mkdir q2admin
bash$ tar zxvf q2admin18src.tar.gz -C q2admin
bash$ cd q2admin; make
bash$ tar zxvf q2admin18src.tar.gz -C /usr/local/games/quake2

Now you should have a file called q2admin.so in the q2admin directory. For each mod you want to protect with Q2Admin, copy the install and q2admin.so files to each mod directory and optionally the *.txt files if you want to customize the Q2Admin settings for different mods. Run install, ./install (chmod +x install if it's not executable) and start the server as usual. The install script moves gamei386.so to gamei386.real.so and q2admin.so to gamei386.so. Run install again to move the files back to their original names. There's a huge number of commands; See the readme.txt file included in the q2admin package for everything you need to know.