Time2Die's Quake3Arena Server Setup Guide. (Updated: 06-22-00)

This page is for setting up a dedicated Quake3Arena server. This page isn't perfect. It is designed to give a server admin, that's you btw, a quick resource to ramp up your knowledge of setting up and administrating dedicated servers without wasting time searching and scanning the web for answers to simple questions. This is how you do it...so read and enjoy.

Updated:

- [ Sept. 21st, 2011 ] Updated the .config files with a .txt at the end so that the webserver will stop blocking them from being downloaded. Just remember when you save these off to remove the .TXT extension from the end of the file name.

- [ June 22nd, 2000 ] Here are some tips to setting up an OSP server (a checklist if you will).

  • Download the latest beta here: OSP Download
  • Read over the Install.txt located in the OSP directory and Install. Refer to the OSP\Docs\server-settings-q3.txt for the server/mod commands.
  • Download latest Teamplay CPL maps here: 

    For servers: http://www.teamabuse.com/files/tmpmaps.zip
    For clients to play bots: http://www.teamabuse.com/files/tmppk3.zip

    If you want a local server with bots I believe the client pak is the one to get. Unzip into the directory OSP\Maps. If the directory doesn't exist, make it.

  • Download LAN Master for a local Gamespy master server (a must for all LAN parties with more than 2 Q3 servers).
  • Files to edit

- Game config's in the OSP directory ending in .cfg (clanarena.cfg, rail.cfg, etc)
- In the OSP\cfg-maps directory edit the corresponding file that is called from the parent .cfg. Example, the ctf.cfg calls the ctfmaps.txt for the list of maps to rotate between. You also can over-ride the server config's fraglimit/capture limit and timelimit as well as specify how many players are needed to switch to a map. ook for the command "map_file".
- Create a .bat file in the root of your Quake3 directory (like C:\Quake3) that starts your dedicated server.

start quake3 com_hunkMegs 24 +set dedicated 1 seta +set fs_game osp +exec clanarena.cfg

If you want to play OSP locally as a listen server, change the "+set dedicated 1" to 0. Also, take the "start" out if running on a Win9x box.

Settings to look for/change:
(0 == off / 1 == on)

  • set sv_hostname "Clan Arena - OSP Tourney CA" - Duh...don't use a generic name when your l33t name will do.
  • set bot_enable 0 - Set this to 1 to play bots locally
  • set sv_master1 "localserver-ip" - set this to the ip of your local server if you are running "LAN Master" and make sure you have the dedicated cvar set to 2.
  • set fraglimit 0/set capturelimit 8 - If this is a tourney...make sure that a fraglimit isn't set unless needed.
  • set ref_password "none"/set rconpassword "none" - set this for remote admin
  • set g_doWarmup 1/set g_warmup 60 - The first is set to one so that the game won't start will everyone's "ready" and the second is the delay until game automatically starts. I would set the 60 to 600, which is 10 minutes
  • set match_latejoin 1 - For tourney's I'd set this to 0 so that someone joining won't "by accident" join a team and start playing when a tourney game is going. "lockteam" will toggle between teams being locked or not.
  • set match_readypercent 51 - I'd set this to 100. This is how many people need to be "ready" before the match will start
  • set g_teamAutoJoin 0 / set g_teamForceBalance 0 - Autojoin and forcebalance. For tourney play I'd leave this to 0.
  • set map_rotate 0 - If set to 1 will cause the server to use the "set map_file maps.txt" variable and rotate using the maps listed.
  • set map_once 1 / set map_random 1 - As you would think.
  • The last thing that should be in your config file is the "map XYZ" where XYZ is the map you want the server to start on.

- [ March 15th, 2000 ] Here is the command line that I use to start my OSP Clan arena servers.

**I don't recommend the "cvar_restart" anymore because it doesn't allow the com_hunkmegs command to work right...still tries to take 72megs of virtual memory even the the physical is set to the right number (6/22/00)**
start quake3 +cvar_restart +set dedicated 1 seta com_hunkMegs 24 +set fs_game osp +exec clanarena.cfg

Majorly cool port. Here's a link to the beta site. It's being updated currently atleast once a week.

- [ Feb. 22nd 2000 ] Going to add some mod specific info as I use them. The Q2 tourney mod OSP has a Q3 version out...here's a admin tip for the command line from the readme.

****************************************************************
- NOTE: I *seriously* recommend that server operators put:
+cvar_restart
on the command line when invoking a server. Q3 likes to save defined variables in q3config.cfg regardless if it is a server or a client. Therefore, if you start playing around with settings on one server, and load another server expecting defaults, dont be surprised if you see settings that were defined on one server but not defined in the other server. To safegaurd, add the above-mentioned +cvar_restart command during server launch. You CANNOT add this to the config file for dedicated servers.
****************************************************************

- [ Jan. 28th 2000 ] The day after I published this doc I realized that I had +dedicated and not +set dedicated...which makes a huge difference. Well I didn't get all of the references out...Fixed.

- [ Jan. 27th 2000 ] Added used submitted tips and the command g_inactivity.

- [ Jan. 23th 2000 ] Added a second set of example server config files. These are basically copies of the ones we use for the clan servers.

Use this table of contents as a quick reference. If this is your first time creating a server config then I highly recommend reading over the entire document.

    Time2Die's Handy Dandy Server Setup Guide.

I. Intro - Server tips and considerations

II. Server Command Line/Batch File

III. Server Config File

1. Here are the id example config's from the pak file

2. Example server config templates

IV. Server Quick Tips

1. WindowsNT Start Command
2. Setting an alternate server port
3. Setting server passwords
4. Private server clients
5. Changing Maps without losing the map rotation
6. Changing the server from DM to CTF

7.
Change the number of Maxclients/Privateclients
8.
Kicking a player
9.
Banning players/ip's (adding, listing, and removing ips)
10.
Keeping a CTF server balanced
11.
Starting a match

V. Server Command Reference

VI. User Submitted Tips

1. Using "sets" to set serverinfo information

VII. Copyright and Contacting


Intro: Server Tips and Considerations

Some tips on creating and administering a quake3 server. When creating your server config, you will need to draw from your own previous playing experiences and determine what you have in the past liked and not liked in terms of timelimit, fraglimit, capturelimit, maxclients, maps played, and so on. Pull from those past experiences so that you can create the gaming experience your clients will experience and hopefully enjoy when connected to your server. Deciding on which game mode is played (DM/CTF) and how long or short levels last and on what maps players will play on will make or break your server. Balancing these variables is important in creating a popular and enjoyable server. With tweaking, testing, and gathering feedback you can create a reputable server where people will join knowing that they have come to the right place for a good game. 

You need two files when running a Quake3 dedicated server. The server config file, that sets all of the variables and cvars for the server like timelimit and fraglimit, and a batch file (referred to as a bat file for the duration of this web page) that calls the quake3 executable and sets server variables that can't be called from the server config file like game modes and ports.


Server Bat File


Let's create the file that will call and start the server. You can create a shortcut or a bat file to start the server, but I recommend using a bat file as it's more portable (aka less complicated) to copy from one machine to another. Here's an example command line

quake3 +set dedicated 2 +set bot_enable 0 +exec server.cfg

Let's break this command line down piece by piece and show you what each variable does and how it impacts your server.

quake3 - This is of course the program executable name

+set dedicated 2 - will set the server in "public mode" broadcasting it's presence to the id master server every 5 minutes. +set dedicated 1 would be used for a private or LAN game server.

+set bot_enable 0 - diables the bot support allowing you to run the dedicated server without the Quake3 CD in the server.

+exec server.cfg - this now transfers control to the server.cfg where we will load the rest of our preferences


IMPORTANT: Always start your quake3 list of variables with the dedicated command and end it with the "exec config file" command. The ordering inside those two commands doesn't matter. An Example would be:

quake3 +set dedicated 2 +set net_port 27961 +set bot_enable 0 +exec server.cfg 

and 

quake3 +set dedicated 2 +set bot_enable 0 +set net_port 27961 +exec server.cfg 

which do exactly the same thing.


Server Config


Now that we have our bat file lets move onto the config.

If you look in your q3 pak file you will find:

By looking at those you can get a quick idea as to which variables are important and need to be set and how they differ from one mode of game play to another. 

Here are some example scripts. While looking at this config, refer to the command list definitions to understand what's doing what. Also be sure to change the rcon, g_client,  and privateclient passwords if you decide to use these scripts.


Some quick tips


WindowsNT
Start Command. In Windows NT (any version), add a "start" to the beginning of the bat file. This will cut down on the extra open window left by the bat file and also allows you to start the server at a higher or lower priority than the default normal. Here are two examples:

start quake3 +set dedicated 2 +set bot_enable 0 +exec server.cfg

start /high quake3 +set dedicated 2 +set bot_enable 0 +exec server.cfg

Either work...the second starts the server at a "high" priority instead of the default "normal" priority.

Setting an alternate server port. You can set the port for the server by adding a +net_port and the port number. A feature that id created with dedicated q3 servers is that when the server comes up and notices that the default port or the port it was trying for is taken, it will increment the port number by one and bind itself to that one. So if you had a dm and ctf server bat without specifically setting the port in the bat file, the first server to come up would take 27960 and the second server would take 27961. Not the most static way of doing things...but ok for the newbie which is what id was hoping to help. Here's an example server line.

quake3 +set dedicated 2 +bot_enable 0 +net_port 27961 +exec server.cfg

To check the port you can either do a clientinfo on the client PC (don't ask why this isn't in serverinfo) or a net_port at the console (or a /rcon net_port from the client).

Setting server passwords. When you set a password, you can clear it by setting it to the word none. This works with rconpassword, g_password, and sv_privatepassword. Check the "Server Commands" for which command effects what.

Private Server Clients. To setup private client slots on your server, you need to set 3 things.

  • sv_privateclients - set this to the number of private clients you want available for connections.
  • sv_privatepassword - set this to the password you want clients to supply when connecting to a private client slot.
  • sv_maxclients - increment this up by the number of sv_privateclients you added.

When you have sv_privateclients set higher than 0, the total amount of public slots is sv_maxclients - sv_privateclients == total available public client slots. Example: sv_maxclients at 16 and sv_privateclients at 4 leaves 12 spots open for public clients to connect.

Changing Maps without Losing the Map rotation.

This only works if you have rcon. Use the following example:

set q3dm6 "map q3dm6 ; set nextmap vstr q3dm7"
set q3dm7 "map q3dm7 ; set nextmap vstr q3dm17"
set q3dm17 "map q3dm17 ; set nextmap vstr q3dm18"
set q3dm18 "map q3dm18 ; set nextmap vstr q3dm6"
vstr q3dm6

Instead of doing a "/rcon map q3dm17" to get to your favorite "rail" map...instead do a "/rcon vstr q3dm17" and the level still changes...but the nextmap is still set to the next map in the map rotation

Changing the server from DM to CTF: "/rcon g_gametype 3" and either "/rcon map q3ctf1" or if you run the server and know there's a ctfserver.cfg do a "/rcon exec ctfserver.cfg" to start the ctf map rotation. Using callvote for the first two commands works as well.

Changing the number of Maxclients/Privateclients: "rcon sv_maxclients X" and then "rcon map_restart" for the changes to take effect. Callvote works in place of rcon as well.

Kicking a Player: Two way you can kick a player. One: Do a "/rcon status" and then a "/rcon kick x" where x is the players connection number. Or actually doing a "/rcon kick playername". Callvote works for that last one as well. The kick command also ignores color.

Banning player ip's (Adding, listing, and removing ip's): Do a "/rcon status" and take the persons ip down and either ban the ip like this "/rcon addip 192.168.1.123" or the whole subnet like this "/rcon addip 192.168.1.0". To list do a "/rcon g_banips". Use "/remove removeip 192.168.1.0" to remove the last example addip.

Keep a CTF server balanced: Use the commands g_teamautojoin and g_teamforcebalance both set to 1. Restarting the map is not needed.

Start a Match: "rcon map_restart". Callvote works as well.


Server Commands to remembers

(Remembers 1 == on and 0 == off)

addip - To add a whole subnet use this example:

IP:192.168.1.123 
Command:
/rcon addip 192.168.1.0

The ban list is saved in a cvar called g_banIPs. g_filterBan controls ban direction (default value of 0 means everyone is allowed to connect except those listed in the g_filterban)

callvote - Basically an anonymous rcon comand that allows you to do the following commands...map_restart, nextmap, map, g_gametype, kick, and g_dowarmup.

capturelimit - flag capture limit for a level. 

fraglimit - Sets the fraglimit for a level. CTF and TeamDM servers should have this set at 0 and FFA servers should have it set depending on the what the maxclients is set to. IMHO I think the fraglimit depends on the maxclients and the size of the levels you're playing. With that said I think that the fraglimit should be set so that it takes more than 5 minutes to reach but not more than 15.

g_allowvote - Sets whether players can vote for server changes including the following commands.

g_banips - this is the cvar that stores the banned ip's. If you want to see what ip's are being banned, type "/rcon g_banip" and the server will list the ip's set for this cvar. Blank means no ips have been banned.

g_doWarmup - to allow warmup countdown timer on all game modes. This helps out in clan matches, since they can do a restart and get a fair countdown (as opposed to a random map_restart that is abruptive). This also gives people with slow load times a fair chance

g_filterBan - controls ban direction (default value of 0 means everyone is allowed to connect except those listed in the g_filterban...you should keep it at 0).

g_forcespawn - time between death and when the server will automatically respawn an enemy. 5 seconds is what I would recommend.

g_friendlyFire - sets whether teammates can hurt other teammates. So...Set at 1 teammates can hurt each other and at 0 they cannot. CTF should be set at 0 and FFA and TeamDM should be set to 1. Teams is are set by red/blue color. 

g_gametype - sets the game mode of Quake3. 

g_gametype 0 ­ Free For All
g_gametype 1 - Tournament
g_gametype 2 ­ Single Player
g_gametype 3 ­ Team Deathmatch
g_gametype 4 ­ Capture the Flag

g_inactivity - Kicks anyone that exceeds the number of seconds set for this varible.

g_log - The log file for Q3a to use. By defualt Q3 uses games.log in the /baseq3 dir. Setting this to something other than the default is good if you intend on running multiple servers and want to use a log parser to report/display stats.

g_motd - This is the info that you see when you're actually connecting to the server. Listing the clan or the servers web site is recommended.

g_needpass - Tells the internal browser (gamespy and pingtool seem to ignore this feature) if a password is needed to connect. *Don't bother trying to set this as it sets itself automatically when g_password is set. It is write protected and controlled by the server*.

g_password - this sets the server password needed to connect. To remove, set the g_password to the word "none"

g_teamAutoJoin - sets it so players automatically join a team on connect

g_teamForceBalance - forces it so that the spread between the number of players on a team is no more than two. Player will be disallowed to join a team with two or more players than the other.

g_warmup - Doesn't seem to work.

map_restart - restart current map without reconnecting as long as the gametype hasn't forced the items placement to change. Changing q3dm7 from FFA to Teamplay DM while cause the map to reload because of the different item placement. But still good for starting matches.

net_ip - set the ip for the server to listen on. If you have two network adapters and wanted the server only listening on one you would use this command in the server bat file to bind the ip to that particular interface.

net_port - sets the port of the game server.

nextmap - used to change the level of a server to whatever is next in the map rotation.

rcon - prefix all commands you want to send to the server with /rcon , after setting your rconpassword, and those commands will execute as tho they were typed in locally at the server console (instead of remotely from your client PC).

rconaddress - sets the rcon address for a higher level of security. Not used much and not recommended unless you start having rcon/admin problems.

rconpassword - set this first when trying to do "rcon" commands remotely. A good habit to form is to make sure that before hitting enter you always hit the tab to verify you have a / before each command. I have had more than one rconpassword given to me by mistake because of a missing forward slash.

removeip - The ban list is saved in a cvar called g_banIPs. controls ban direction (default value of 0 means everyone is allowed to connect except those listed in the g_filterban)

sv_hostname - This sets your Servers Name that shows up in gamespy and pingtool. Use quotes (" ") when setting a sv_hostname with spaces.

sv_maxclients - Total maximum number of players that can connect to a server including privateclients. Take the sv_maxclients and subtract the number of sv_privateclients when trying to figure out the total number of public clients that can connect to your server.

sv_privateClients - reserved client slots This should be 2-4 on FFA and CTF servers and 1-2 on 1v1 and TeamDM servers.

sv_privatePassword - password needed to connect to a privateclient slot.

sv_pure - This forces the client to have the same pak files as the server in hopes of trying to curb clients (easily) cheating on your server. It's a pain...but it's all we have for now.

timelimit - Set the duration of play. FFA's should be around 15 minutes and  CTF/TeamDM at 20.


User Submitted Tips

Using "sets" to set serverinfo information

This tip comes from BuLL_DoG who runs a server at 206.161.208.169 . I have pasted in his email as it explains how the "sets" command works as well as I could have...

Forgot to mention a command I found to be very handy. This is the "sets" command. It works much like the old "setinfo" variable from QW. It adds information about your server in gamespy. Good when you run custom maps or something like that. You can provide a link to where your clients can download maps.

I've added this to my server.cfg

try to refresh it in gamespy 206.161.208.169
also try clicking on the download-maps@
it pulls up your browser :P

// Custom Server Flags
sets Admin "[DP]BuLL_DoG"
sets Email "bull@dogpound.net"
sets Location "Northern Virginia"
sets CPU-&-Specs "Pentium 2 400mhz w/256 Ram"
sets Download-Maps@ "ftp.dogpound.net/pub/Q3/ctf/maps"
sets Stats@ "www.dogpound.net/q3_stats/rankctf0.html"

Thanks for the info and good job on the page!

BuLL_DoG


Copyright and Contacting


I wrote this because of all the hours of having to look up commands in a frenzy to put servers up for people and the clan to play on. There was no central spot for just server commands and I didn't want to "install" an application to do it for me. I wanted total control. This experience has enabled me to trouble shoot why a server is or isn't working properly and allowed me to, on the fly, take complete control of a server and flip it between games modes (CTF/DM/Tourney) without causing everyone to wait. 

If you learn of a cool server trick and want to share it I will post it to this page and give you credit. If there is misinformation on this page just email me and I will fix it. If you have problems putting up your server you can contact me on the IRC network ETG on the server tx.enterthegame.com or irc.enterthegame.com in channel #killco. I pulled some of the server command definitions from the id q3 FAQ and from the following URL's (among others):

  • Engineering Room
  • IAMQ3A
  • Mad Dog CFG Quake3 Console Commands and Variables (which isn't up anymore but during the q3test days was THE place to grab info on the console commands)

-Time2Die