Running a Dedicated Savage Server: Edit
To run a Windows dedicated server, just run dedicated_server.bat. In Linux, to run a dedicated server you run ./dedicated_server.sh
Savage servers take a fair amount of uploading bandwidth. If a player is using the DSL/LAN settings (most are), they will suck down between 8 and 15 kilobytes / sec. So a 32-player game will use up to about 500 kbytes / sec. Incoming bandwidth is usually around 1-4 kilobytes/sec per player.
The server will probably never use more than 90 megs of ram, it doesn't really grow much with players, so ram shouldn't be an issue on servers. CPU usage will be inconsistent, but it might spike high if people are doing a lot of shots against buildings (which does per-poly collision tests). We run 48 player servers on a 1 GHz P3 easily though, and it uses around 50-80% cpu.
Configuring Your Server:Edit
You can set the maximum number of clients by setting the svr_maxclients cvar either on the command line (like silverback.exe set svr_maxclients 16), or in a file called startup.cfg in your Savage directory (or in ~/.savage/ if you are running a Linux server). Savage supports up to 64 players.
To set the name of the server, you want to set the svr_name cvar to the name you want to appear. You have about 30 chars that display in the client.
Here's a general rule for setting variables in Savage: svr_ variables are in the core engine, and usually it's fine to put them in startup.cfg sv_ variables are in the game code, and they should be put in autoexec.cfg in the game/ directory. autoexec.cfg is loaded after everything has been initialized, so all the variables are sure to exist at this point.
It is ALWAYS safe to put the variable settings in autoexec.cfg.
Commands you pass in on the command line will be run right after startup.cfg is loaded, far before many variables have been registered. If you want to pass in things on the command line that will be evaluated after the game has finished starting up, you can do the following: silverback.exe set autoexec "command here"
The autoexec cvar is a special cvar we added that is evaluated after autoexec.cfg is run, so you can override settings in autoexec.cfg using that variable. Note that you could do: set autoexec "exec /myconfig.cfg" to have it run a cfg file in the game/ directory after running autoexec.cfg, so you don't have to put all the settings on the command line
If you are running the server and see "long server frame" messages, it probably means your CPU is drowning. You either need to lower the number of players on the server, kill other programs that are using CPU, or get a faster machine to run the server. NOTE: You will get a long server frame on startup, and if you scroll the console window in Windows, it will freeze the application while you scroll, which will result in a long server frame message (and a pause for everyone on the server).
Since we release patches, we have a system where when servers quit, they run the updater and then restart. This is because when we release a new patch, we send a notification to all running servers to tell them there is an update available. If they are empty, they quit immediately. If they have a game going, they quit at the end of the match. If you want to disable this, "set sv_autopatchmyserver 0". Please note that even if you disable auto-patching, the default dedicated server files will still run the updater the next time you restart the game. You can edit dedicated_server.bat or dedicated_server.sh to disable running the updater if you don't want to ever update your server.
Savage has a referee system, where the first person to join a server gets appointed the guest referee. The guest referee can change the races and the map on the server. If you want to disable guess referees, you should set sv_allowGuestRef 0 in your autoexec.cfg.
You can set a ref password to allow special people to drop in and take over as ref. You set the sv_refereePassword cvar to be the password people use, and clients can do the following:
With the release of 1.03, Savage clients can download maps that they don't have. If their version differs from the server, they will still get a "World file does not match server error", but if it is a new map, it will auto-download provided the svr_mapurl is set on the server.
svr_mapurl is a full URL to a directory on a webserver where the map can be found. For example, you could do: set svr_mapurl "http://sample.com/maps/" and clients will go there to download the map.
Since // is the command for a command in Savage, you will need to "escape" your forward quotes by putting a \ in front of the /. A safe way to do it is as follows: set svr_mapurl "http:\/\/maps.example.com\/"
Server Administration Commands:Edit
This is by no means a comprehensive list of commands you can execute, but here is a list of useful commands:
listclients - get a list of all the clients and their client number listbans - show all the current bans ban - where ip address can be a partial or full IP Address ban - ban a particular account from your server (note: ban also accepts an optional second parameter to specify a time value in milliseconds [so 5000 would be 5 seconds]) If you don't specify a time, it will be a permanent ban. banclient - ban a particular client number (get it using clientlist) (note: it will ban both their UID and their IP address) [added in 1.03]
world - switch maps immediately restartmatch - restart the current match sv_team1race - change team 1's race to human or beast (not immediate) sv_team2race - change team 2's race to human or beast (not immediate)
quit - have the server exit (keep in mind the script is set to restart the server immediately after running the updater)
You can change variables like svr_name and svr_maxclients on the fly by doing svcmd's. If svr_maxclients is set lower than the current number of players, nobody will be kicked, but nobody new will be able to join until the number drops below the new maximum.
Administering Your Server Remotely:Edit
You can execute remote commands by connecting to your server as a player. If you have set the svr_adminPassword variable, you can do the following: svcmd command
With version 1.03 of Savage, you will get all of the output echoed back to you. 1.03 also includes a way to remotely administer a server without using a game client, through a tcp interface. There is a remote server admin graphical tool on Newerth.com.