Time2Die's Quake3Arena Server Setup Guide.
(Updated: 07-16-00)

Updated (09-21-11)
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.

Introduction
This page 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 Quake3 servers without wasting time searching and scanning the web for answers to simple questions. Don't be confused that this page is perfect...it isn't. But I have taken what I have learned from running servers over the years and creating a page that I would have loved to have found before I had to learn the hard way...so read and enjoy!

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.

Intro - Server tips and considerations

I. Setting the Server Up.

Step 1. Server Bat File

Step 2a. Generic "id" Server Config

Step 2b. OSP Server Config

II. Settings to look for/change:

III. HOW DO I?!?!? Question/Answer section

IV. Server Quick Tips

V. Server Command Reference

VI. User Submitted Tips

1. Using "sets" to set serverinfo information

VII. Copyright and Contacting


Intro: Server Tips and Considerations

Here 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, which will set all of the variables and cvars for the server like timelimit and fraglimit, and second 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.


Step 1.

Server Bat File

Let's create the file that will start the server. There are certain settings (cvars) that can only be set from the command line. fs_game, net_ip, net_port, com_hunkmegs to name a few. 

Note: You can create a shortcut to start the server, but if you move the server directory or copy it to another machine, the shortcut tries to update it's location and you end up fixing all of your shortcuts. I recommend using a bat files.

Create a file ending in .bat and include the following as a basic FFA server.

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

Note: If there is no "set fs_game xyz" variable in the command line, the server.cfg is understood to be located in the baseq3 directory.

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 (duh!)

+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. Setting this to 1 allows you to setup bots. DO NOT SETUP BOTS for a server that's going to be on the Internet. Servers that during a refresh only show 4 players will be assumed to have the default b0t setup and people will be more hesitant to join. If people want to play bots they'll do it locally without the lag.

+exec XYZserver.cfg - this will transfer control to the server.cfg where the rest of  your settings are loaded. By default, Quake3 will try and execute server.cfg in the same way it executes (exec's) autoexec.cfg in the client. Name your server config something other than server.cfg if you're going to be running multiple servers. What I DO recommend in the server.cfg are common varibles that don't change from server to server like rconpassword and sv_master.


IMPORTANT: Always end your command line with the "exec config file" command. You can execute multiple config files as long as the last config file loads the level.

Here are a couple of examples:

- start quake3 +set dedicated 1 +set com_hunkMegs 16 +exec server.cfg +exec ffa.cfg

- start quake3 +set dedicated 2 +set net_port 27961 +set bot_enable 0 +exec ffa.cfg

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


Step 2a.

Generic id 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.


Step 2b.

OSP Server Config

These are some tips on how to get an OSP server up and going ASAP.

  • 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 +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.


II. 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 server 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 set rconpassword "XYZ" - set this for remote admin. Set ref_password "XYZ" in OSP
  • 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 this to 0 in OSP and 600 (which is 10 minutes) in standard id mode. Make sure that the "match_readypercent" cvar is set to 100 in OSP.
  • 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 - In OSP 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. For public servers tho you want to have both it set to 1.
  • set map_rotate 0 - OSP. 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 - OSP. 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.

 

III. HOW DO I?!?!....

IV. Server Quick Tips.

Clearing 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 map_restart" works as well if enabled.


V. Server Command List

1 == on
0 == off

addip - This command is used to deny ip's access to your servers. To add a whole subnet use this example:

IP:192.168.1.123 
Command:
/rcon addip 192.168.1.0

The server doesn't deal with hostnames. When you do "rcon status" it shows you only ip's. 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_banips). 

callvote - Basically an anonymous rcon command 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 list of ips that are banned/allowed to connect to your server depending on whether g_filterban is 0 (everyone allowed but those on the g_banips list) or 1 (no one allowed but those in the g_banips list). Ifyou 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. Set this in your common server.cfg so that all of your servers will pull from the same list of ip's.

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. Any server that HAS to have this set should also have g_inactivity set as well.

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_gametype 5 - Clan Arena (OSP)

g_inactivity - Kicks anyone that exceeds the number of seconds set for this variable. 120 is a step in the right direction (2 minutes).

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. This will save the log in the fs_game directory. OSP logs will be in the OSP directory and so on.

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. Sometimes where you put the stats URL as well.

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". Passwords are CASE SENSITIVE.

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

g_teamForceBalance - 1 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 - The amount of time before a match that the server counts down. 30 seconds is usually good for a level change. This allows HPB's and people on slower connections to connect and be ready for when the game "map_restart"'s. In OSP set this to 0, g_dowarmup 1,  and the match_readypercent to 100 and the server won't start the match until everyone is ready.

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 in the absense of a Tourney MOD (OSP). A fix also for stopping a match in OSP.

net_ip - set the ip for the server to listen on. If you have two network adapters and want the server only listening on one you would use this command in the server bat file to bind the ip to that particular interface. Also good if you're trying to do load balancing on two network adapters. Q3 will bind by default to your first/default ip.

net_port - sets the port of the game server.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

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_floodProtect - Set this to 0 so that clients do lag out when doing more than one macro within a short period of time

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

sv_master - This is what reports your server to a Q3 master server. By default sv_master1 is set to the id master. You can also specify sv_master2 as master0.gamespy.com and it will show up on their list as well. If you're using LANMASTER set the sv_master1 to the local ip of the LANMASTER server. This is necessary since LANMASTER won't detect servers not on the default port.

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 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):

  • IAMQ3A
  • Engineering Room
  • 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


do the death match flags with examples

things people forget. set, in the command line, stuff you can't change once the game has started, how to whip clean the slate and load a new config