Here's a quickguide to running a Q3A dedicated server on a debian system.
I assume you have running Quake3Arena for linux running on your client computer already. We'll use this installation as base.
#> useradd -u 666 -g games -d /opt/games/quake3 quake3 #> mkdir -p /opt/games/quake3 #> chown games:games /opt/games #> chown quake3:games /opt/games/quake3
#> su - quake3 $> scp -r you@workstation:games/quake3 .
$> ln -s /opt/games/quake3 .q3a
baseq3/autoexec.cfg
with the following basic valuesset vm_game 2 set vm_cgame 2 set vm_ui 2 set dedicated 1 //dedicated but no announce set com_hunkmegs 32 //How much RAM for your server set net_port 32000 //The network port
base3/server.cfg
file with additonal parametersseta sv_hostname "My Q3A Server" seta sv_maxclients 8 seta g_motd "=== Happy fragging ===" seta g_quadfactor 4 //### team deathmatch ### //seta g_gametype 3 //seta g_teamAutoJoin 1 //seta g_teamForceBalance 1 //seta timelimit 15 //seta fraglimit 25 //### free for all ### seta g_gametype 0 seta timelimit 10 seta fraglimit 15 seta bot_nochat 1 seta g_weaponrespawn 2 seta g_inactivity 3000 seta g_forcerespawn 0 seta g_log server.log seta logfile 3 seta rconpassword "secret" seta rate "12400" seta snaps "40" seta cl_maxpackets "40" seta cl_packetdup "1"
baseq3/levels.cfg
file which contains all maps you want to use in rotationset dm1 "map q3dm1; set nextmap vstr dm2" set dm2 "map q3dm2; set nextmap vstr dm3" set dm3 "map q3dm3; set nextmap vstr dm1" vstr dm1
baseq3/bots.cfg
seta bot_enable 1 seta bot_minplayers 4 addbot doom 3 blue 10 addbot orbb 3 red 10 addbot bones 3 blue 10 addbot major 3 red 10
Okay thats it. Now you can run your server with
$> ./quake3.x86 +exec server.cfg +exec levels.cfg +exec bots.cfg
To automate this have a look at the init script below. Oh and be sure to open your firewall or your buddies can't connect.
This script starts and stops the dedicated server. Installed to /etc/init.d/q3a_server
and optionally linked to the default runlevel.
#! /bin/sh set -e BASEPATH="/opt/games/quake3" BINARY="quake3.x86" DAEMON="$BASEPATH/$BINARY" OPTIONS="+exec server.cfg +exec levels.cfg +exec bots.cfg" RUNAS="quake3:games" PIDFILE="$BASEPATH/$BINARY.pid" test -x $DAEMON || exit 0 export HOME=$BASEPATH case "$1" in start) echo -n "Starting Q3A" cd $BASEPATH start-stop-daemon --start --quiet -c $RUNAS --pidfile $PIDFILE \ -N -10 -m -b -d $BASEPATH --exec $DAEMON -- $OPTIONS echo "." ;; stop) echo -n "Stopping Q3A" start-stop-daemon --stop --quiet --pidfile $PIDFILE \ --exec $DAEMON echo "." ;; restart|force-reload) $0 stop sleep 3 $0 start ;; *) echo "Usage: $SCRIPTNAME {start|stop|restart|force-reload}" >&2 exit 1 ;; esac exit 0