Quake 4

Here you'll get instructions of how to install a linux dedicated Quake 4 server.

Getting the Quake 4 files

Download the Quake 4 Linux binary
quake4-linux-1.3-2.x86.run

You'll also need the Quake 4 DVD-Rom!

Setup a dedicated Quake 4 Server

Create a Quake 4 installation directory
$ mkdir /usr/local/games/quake4
$ cd /usr/local/games/quake4
Make the Quake 4 Linux binary executable
$ chmod o+x ./quake4-linux-1.3-2.x86.run
Run the Quake 4 Linux binary
$ ./quake4-linux-1.3-2.x86.run
Copy the *.pk4 files
$ cp /path/to/dvd/Setup/Data/q4base/*.pk4 ./q4base

If you don't copy the *.pk4 files, you won't be able to run your dedicated Quake 4 server!

Configuration of Quake 4

In the default installation package you will find several configuration (.cfg) files, that will help you configuring your Quake 4 server.

games@server:~/quake4> ls ./q4base/*.cfg
arena_ctf.cfg
dm.cfg
teamdm.cfg
ctf.cfg
tourney.cfg

In order to start a specific game, all you need to do is to add your specific game configuration to the command line.

$ ./quake4-dedicated +exec gameconfig.cfg

My example configfile ./q4base/server_dm.cfg

// Sample Quake 4 DM Server Configuration File

// ---------------------------
// si_name
// ---------------------------
// name advertised to server browsers

si_name "DragonBe's Quake 4 DM Server"

// ---------------------------
// si_gametype
// ---------------------------
// gametype can be "DM", "Team DM", "Tourney", "CTF", "Arena CTF"

si_gameType "DM"

// ---------------------------
// net_serverDedicated
// ---------------------------
// type of server, dedicated or listen.  Dedicated server
// recommended for anything other than small pick up games

net_serverDedicated 1

// ---------------------------
// si_maxPlayers
// ---------------------------
// maxPlayers, set appropriate to your upstream

si_maxPlayers 12

// ---------------------------
// si_minPlayers
// ---------------------------
// minPlayers, game will stay in warmup until at least this many
// players connect.  Only valid if si_warmup 1

si_minPlayers 2

// ---------------------------
// si_warmup
// ---------------------------
// perform a match warmup

si_warmup 1

// ---------------------------
// si_countdown
// ---------------------------
// how many seconds the warmup->game countdown lasts

si_countdown 10

// ---------------------------
// net_serverMaxClientRate
// ---------------------------
// serverMaxClientRate - maximum data rate out to each client.  Divide
// your out bandwidth by this value to figure out how many clients you
// can support

// net_serverMaxClientRate 16000

// ---------------------------
// si_mapCycle
// ---------------------------
// simple mapcycle, semicolon delimited list of maps to cycle through
// for more advanced map cycling that sets minplayers/gametype/etc see
// g_mapCycle

si_mapCycle "mp/q4dm1;mp/q4dm2;mp/q4dm3;mp/q4dm4;mp/q4dm5;mp/q4dm6;mp/q4dm7;mp/q4dm8;mp/q4dm9"

// ---------------------------
// g_mapCycle
// ---------------------------
// advanced mapcycle, set this to the name of the .scriptcfg in
// q4base/ you want to use

// defaults to "mapcycle" to use q4base/mapcycle.scriptcfg

g_mapCycle ""

// ---------------------------
// si_fragLimit
// ---------------------------
// fraglimit, in DM and Team DM number of frags required to win the
// game, in tourney the number of frags to win an individual round

si_fragLimit 30

// ---------------------------
// si_timeLimit
// ---------------------------
// timelimit, in DM, Team DM, CTF, Arena CTF how long the match will
// last before ending. in tourney how long an individual round will
// last before ending.

si_timeLimit 30

// NOTE:
// if both timelimit and fraglimit is set, the game will end when
// either one is hit

// ---------------------------
// si_map
// ---------------------------
// map, the map to start on

si_map mp/q4dm1

// start the server

spawnServer

Download server_dm.cfg.

Running the Quake 4 server

Running a arena ctf game
$ ./quake4-dedicated +exec arena_ctf.cfg
Running a team deathmatch game
$ ./quake4-dedicated +exec teamdm.cfg
Running a deathmatch server on a specific ip and port
$ ./quake4-dedicated +set net_ip 192.168.123.456 +set net+port 28004 +exec dm.cfg

Links for Quake 4

Quake 4 Port Settings

  • UDP 28004: default quake 4 server port
  • UDP 27950: master comm q4master.idsoftware.com