I. Intro - Server tips and
II. Server Command
III. Server Config File
1. Here are the id example config's from the pak
2. Example server config templates
IV. Server Quick
1. WindowsNT Start Command
2. Setting an alternate server port
3. Setting server passwords
4. Private server clients
Maps without losing the map rotation
the server from
DM to CTF
7. Change the number of
8. Kicking a player
players/ip's (adding, listing, and removing ips)
a CTF server balanced
11. Starting a match
V. Server Command Reference
"sets" to set serverinfo information
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
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
quake3 +set dedicated 2 +set bot_enable 0 +set
27961 +exec server.cfg
which do exactly the same thing.
Now that we have our bat file lets move onto
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
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
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.
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
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).
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.
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
- 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.
Maps without Losing the Map rotation.
This only works if you have rcon. Use the
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"
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
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.
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.
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.
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.
a CTF server balanced:
Use the commands g_teamautojoin and g_teamforcebalance both set to 1. Restarting
the map is not needed.
a Match: "rcon map_restart". Callvote works as well.
Server Commands to remembers
(Remembers 1 == on and 0 ==
- To add a whole subnet use this example:
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.
- flag capture limit for a level.
- 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.
- 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
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
- 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
- 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
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.
- 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.
- password needed to connect to a privateclient slot.
- 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.
"sets" to set serverinfo information
This tip comes from BuLL_DoG
who runs a server at 184.108.40.206 . 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 220.127.116.11
also try clicking on the download-maps@
it pulls up your browser :P
// Custom Server Flags
sets Admin "[DP]BuLL_DoG"
sets Email "firstname.lastname@example.org"
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!
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
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):
- 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)