Doom 3 Dedicated Server Guide
(3292 total words in this text) (16447 reads) 
Last Updated: 8/26/2004 by Zxel
We thought that you might be interested in how we configure our Doom3 game server so we've
decided to show you how it's setup. Currently we're running it "plain Jane" with no major "tweaks". Doom3 is not the friendliest game to run as a dedicated server, you'll find
Doom3 sucks up 100%
of whatever CPU it's running on (even when empty). Some things in Doom3's code looks like it was bolted on at the last minute for internet play and some cvars are there but non-functional. Running the server above
4 slots is certainly not a difficult thing to do, however, keeping it stable over 12 slots is rough and above 16 will certainly get you into hot water, no matter what CPU you're on.
We are hoping that id software will come around to the importance (and cash potential) of internet play and patch these problems.
We look forward to the Linux version (not released yet as of this writing) which hopefully will be a better platform to run on. To be certain for those familiar with "getting under the hood" of Quake3 and the genre of games on the same engine (like SOF2 and Wolfenstein) you will
find a rich set of familiar code that can be easily "hacked or moded" to offer a variety of game play modifications. We look forward to a plentiful set of mods for this engine and although it isn't geared toward
internet play we certainly see possibilities in the code to make it more CPU friendly and a welcomed next generation engine for internet game play.
This setup is geared toward the Windows version (as of this date the Linux version is not available), however, the configs should work fine on the Linux version once released. We've also provided a
startup batch file to give you professional server crash restart and log control.
All config files should be placed in your base (under the Doom3 directory) or mod directory (if you run a mod), please note a default.cfg file was NOT included as we just decided to use the one
included in the game pak file - you can of course override that by making your own file with the same name.
For your convenience we have zipped up all these files in a doom3.zip file and put it on our download site.
The startup command line:
top prev
next
basic:
doom3.exe +exec server.cfg
advanced:
substitute the IP and Port info to match your needs (default values shown)
doom3.exe +set net_ip 127.0.0.1 +set net_port 27666 +set si_maxplayers 8 +exec server.cfg
The autoexec.cfg file:
top prev
next
This file is run automatically every time the server is started up, certain cvars will only work in this file while others are best not placed inside it. Good for global cvar settings (although we
keep ours lean).
| // This config is always executed first |
|
|
| set net_serverDedicated "1" |
|
//make server a public dedicated server |
| set net_allowCheats "0" |
|
//no cheating allowed here ;-) |
The public.cfg file:
top prev
next
In this file we put all the info we want to broadcast publicly about our server, including the server name (as listed in the game browser). You can extend or make up any info cvar you want here, the
"sets" command is what makes a cvar public.
| // Public server info |
|
|
| seta si_name "GameAdmins ^1DOOM3" |
|
//server name (can use color commands) |
| |
|
|
| // public info |
|
|
| sets ".Administrator" "Viruseater and Zxel" |
|
|
| sets ".Connection" "OC48 - 2.48832 Gbps" |
|
|
| sets ".CPU" "Intel P4 2.8Ghz 800mhz with 1Gb RAM" |
|
|
| sets ".Clan" "open playing" |
|
|
| sets ".Email" "doom3@gameadmins.com" |
|
|
| sets ".Hosted By" "Clanservers.Net" |
|
|
| sets ".Location" "Dallas,Texas" |
|
|
| sets ".Plug" "God Bless the Game!" |
|
|
| sets ".URL" "http://www.gameadmins.com" |
|
|
| |
|
|
// add up to 4 additional master servers to report to
// net_master1 thru net_master4 (never use net_master0) |
|
|
| seta net_master1 "master0.gamespy.com" |
|
|
| |
|
|
| writeconfig doomconfig.cfg |
|
//stamp config settings |
| wait |
|
//wait till file is written before proceeding |
The server.cfg file:
top prev
next
Here we have the main server config file with most settings being specified here, note that we exec the public.cfg file above first to name the server and add the public info.
| // Public Info |
|
|
| exec public.cfg |
|
|
| |
|
|
| // General Settings |
|
|
| set si_pure "1" |
|
//server does not allow modified data |
| seta si_spectators "1" |
|
//allow spectators or require all clients to play |
| seta g_spectatorChat "0" |
|
//let spectators talk to everyone during game |
| seta net_serverMaxClientRate "25600" |
|
//maximum rate to a client in Bytes/sec |
| seta net_serverClientTimeout "40" |
|
//client time out in seconds |
| seta net_serverZombieTimeout "5" |
|
//disconnected client timeout in seconds |
| seta net_serverMaxUsercmdRelay "5" |
|
//maximum usercmds from clients the server relays to another client |
| seta net_serverAllowServerMod "0" |
|
//allow server-side mods |
| |
|
|
| //Logs |
|
|
| seta logFile "1" |
|
|
| seta logFileName "qconsole.log" |
|
//console log - NOT a game stats log |
| |
|
|
| // Game Settings |
|
|
| seta si_gameType "deathmatch" |
|
//game type - singleplayer, deathmatch, Tourney, Team DM or Last Man |
| seta si_timeLimit "15" |
|
|
| seta si_fragLimit "30" |
|
|
| seta si_teamDamage "0" |
|
|
| seta si_warmup "0" |
|
|
| seta g_balanceTDM "1" |
|
//maintain even teams |
| seta g_countDown "10" |
|
|
| |
|
|
| //Passwords |
|
|
| seta net_serverRemoteConsolePassword "remotepass" |
|
//rcon password - change this! |
| seta si_usePass "0" |
|
//enable client password checking - change to 1 to activate g_password |
| seta g_password "gamepass" |
|
//game password - change this! |
| |
|
|
| //Voting |
|
|
| seta g_voteFlags "0" |
|
//bit mask value - currently broke? |
| |
|
|
| //Mod (comment out if no mod) |
|
|
| //exec mymod.cfg |
|
|
| |
|
|
//Map cycle
// game/mp/d3dm1 "Tomiko Reactor"
// game/mp/d3dm2 "Delta Lab"
// game/mp/d3dm3 "Frag Chamber"
// game/mp/d3dm4 "The Edge 2"
// game/mp/d3dm5 "Lights Out" |
|
|
| |
|
|
| seta si_map "game/mp/d3dm3" |
|
//starting map |
| seta g_mapCycle "maps" |
|
//your .scriptcfg file |
| |
|
|
| writeconfig doomconfig.cfg |
|
//stamp config settings |
| wait |
|
//wait till file is written before proceeding |
| |
|
|
| //kick off the server |
|
|
| spawnServer |
|
|
The maps.scriptcfg file:
top prev
next
This file controls the server map rotation, notice it is code and shows how you can use the scripting code to modify your game server.
/*
map cycling script sample - select with g_mapCycle
the script is purged and reloaded at each map restart
which happens on map change, but also when hitting GAMEON
for persistance, you need to use the {get,set}Persistant functions.
files with .scriptcfg extension can be loaded outside of pure paks
*/
namespace mapcycle {
void cycle() {
// config
float cycle_maps = 1;
float cycle_gametypes = 0;
// cycle maps and game types
float replay_count = sys.getPersistantFloat( "replay_count" );
string si_gameType = sys.getcvar( "si_gameType" );
string si_map = sys.getcvar( "si_map" );
if ( replay_count <= 0 ) {
// restart n times before next map
if ( si_gameType == "Tourney" ) {
replay_count = 3;
} else {
replay_count = 2;
}}
replay_count--;
sys.setPersistantArg( "replay_count", replay_count );
if ( replay_count <= 0 ) {
// restart n times before next map
if ( si_gameType == "Tourney" ) {
sys.setPersistantArg( "replay_count", 3 );
} else {
sys.setPersistantArg( "replay_count", 2 );
}
if ( cycle_maps > 0 ) {
if ( si_map == "game/mp/d3dm1" ) {
sys.setcvar( "si_map", "game/mp/d3dm2" );
} else if ( si_map == "game/mp/d3dm2" ) {
sys.setcvar( "si_map", "game/mp/d3dm3" );
} else if ( si_map == "game/mp/d3dm3" ) {
sys.setcvar( "si_map", "game/mp/d3dm4" );
} else if ( si_map == "game/mp/d3dm4" ) {
sys.setcvar( "si_map", "game/mp/d3dm5" );
} else {
sys.setcvar( "si_map", "game/mp/d3dm1" );
}}
if ( cycle_gametypes > 0 ) {
if ( si_gameType == "deathmatch" ) {
sys.setcvar( "si_gameType", "Tourney" );
} else if ( si_gameType == "Tourney" ) {
sys.setcvar( "si_gameType", "Team DM" );
} else if ( si_gameType == "Team DM" ) {
sys.setcvar( "si_gameType", "Last Man" );
} else {
sys.setcvar( "si_gameType", "deathmatch" );
}}
} else {
sys.say( "^1GAMEADMINS.COM ^3map cycle: ^7restarting current map " + replay_count + " more time(s)" );
}
}} |
The d3server.cmd file:
top prev
This is an example batch file you can use to automate the running of your game server - please note that it REQUIRES the "SLEEP" command included in the
Microsoft Windows 2003 Server Resource Kit (free download from Microsoft) for the restart time delay setting to function. The sleep command included in the kit will
work on Windows NT, XP and 2000/2003 (although the kit itself may not install). You can find the sleep command on the gameadmins.com website in the
utilities download section if that is all you want (at least until Microsoft forces
us to remove it), just save the command in your windows directory.
If you do decide to use the included batch file please READ IT! Inside you will need to configure it for your Doom3 setup, however, the file is heavily commented with help. You can put the batch file
anywhere you want (it is not directory dependent).
|