Hosting a Digital Paint Server          
What kind of machine do I need to host a server?

You can run Quake 2 on the following platforms: WindowsNT, WindowsNT Alpha, Windows95/98, Linux, and Solaris. 

Here is some good advice from Brian Hook from id Software on running a Quake 2 Server:

CPU Speed & RAM
---------------
When setting up a server a good rule of thumb is one person per 8 MHz for Pentium and Alpha machines. So a PPro/200 can probably handle a 25 person game, and a Pentium II/450 can probably handle 50-55 players. The best single processor machine you can get to run a server is probably a 633MHz DEC Alpha box from Enorex or Aspen Systems -- a reasonable system runs about $5000 and could support 75 or so players. As for RAM, obviously the more the better, but a minimum of 64MB is reasonable.

Big Game vs. Many Small Games
-----------------------------
Load is definitely lower with multiple games than with a single game, i.e. one game with 64 players has a larger load than 8 games with 8 players each.

SMP or CPU Farm?
----------------
An SMP machine of some type would be a good server, unfortunately the only 4 way SMP systems available are overpriced and still use Pentium Pro/200 processors. It's more cost effective and convenient to run a cluster of single processor systems. And if you're trying to save some bucks, a large farm of low end machines is pretty damn economical, e.g. a cluster of Pentium/133 machines, each running 16 player games. Also a farm has the advantage of being more fault tolerant than having all your games hosted on a single server.
 
 

What kind of connection do I need to host a server?

Typically the best Paintball servers have been run on machines with T1 connections or higher. However servers could also be run on ASDL, ISDN, or Cable Modems. These servers will perform far worse and cannot handle as many connections as a higher connection but would server your purposes. You will also need to keep in mind network bandwidth considerations. The number we've been using is 3KB/player/second, so a T1 which does about 200KB second should be able to support a 64 player game, but keep in mind that this will FULLY saturate that T1, and the minute you open a Web browser everyone will become lagged.
 

Where are the files for hosting a server?
How do I setup the server.cfg?

The first thing you want to do is set up your server pretty generic to make sure you have everything together.  Use Notepad or DOS's Edit to create a batch file called paintball.bat in your Quake2 directory that looks like this:

c:\quake2\quake2.exe +set game pball +set deathmatch 1 +set dedicated 1 +maxclients 8 +exec server.cfg +map midnight 
This is the command line that I use and can be varied by personal preference.  The +set dedicated 1 tells quake 2 to run as a dedicated server.  The +set game pball tells Quake 2 to look in the pball directory and run that gamex86.dll thus making the game Paintball . The +exec server.cfg will tell it to run your server script which we will set up next.

Ports
If you would like to run your server on a different port than the default 27910 or you would like to have multiple servers running on the same machine you can also add the +set port variable to the command line. 

quake2 +set dedicated 1 +set port 27920 +set game pball +set deathmatch 1 +maxclients 8 +exec server.cfg +map midnight 
The server.cfg

What is it?
The easiest way to set up your server is by creating a server.cfg which is basically a script that sets up all the game variables.  This way when you start your server with the +exec server.cfg in the command line it will use all the variables specified in the server.cfg to configure your server.

Associate the cfg
To edit a server.cfg that is already present such as the one provided with Paintball you simply open explorer and locate the server.cfg in the Quake2\pball\ directory and double click it.  Under most circumstances this will not be associated with any program and windows95/NT will ask you what program you would like to open it with.  I always associate it with note pad that way I can edit more conveniently.

Starting the server
If you setup a batch file for your server it is a tidy habit to create a shortcut to it and then specify that is is to close on exit so while your server is running you don't have to DOS boxes open.  The other alternative is to simply create a shortcut with the command line in it.  The third method (which I use) is to use QHost to launch the server as you can start, stop, and administer the server from anywhere you have a network connection to the server.

The last step is to fire up the server and then make sure everything is working as you expected.  If you started the server with a shortcut or batch file, you will have a DOS box (Console) that will allow you to use any of the console commands in.  To stop the server simply type "quit" in the console and the server will shut down and exit.  If you started the server with QHost you will have to use QView to access the Console.  Consult the QHost documentation for details.

Sample Server.cfg
Here is a sample server.cfg that I use on my Paintball server:

set website "http://www.planetquake.com/digitalpaint" s
set Admin "Nutiket" s
set e-mail "pvande3@gl.umbc.edu" s
set location "Baltimore, Maryland" s
setmaster q2master.planetquake.com
sv rotation off
sv rotation pball/rotation.cfg 2
sv grenades smoke 1
sv grenades paint 1
sv autojoin on
set ffire off
set timelimit 20
set fraglimit 50
set allow_download 0
set numpasses 4

set oppass1      "blah"
set oppass1level 1
set oppass2      "blah"
set oppass2level 100
set oppass3      "______"
set oppass3level 150
set oppass4      "______"
set oppass4level 250

rcon_password _______

SERVER / ADMIN COMMANDS

   The following commands work both through remote admin and also
   from the server console.  To use them from the server console, 
   prefix the commands with "sv". 

   ex. "sv grenades smoke 1" 

   From the server console this will set 1 grenade per team.

   grenades
   -------

   type this followed by the type then the number.
   the format is "grenades [smoke/paint] #" where the number is
   from 0 to 10. 0 will turn off grenades of that type.  This
   is the number of grenades per team.

   expert
   -------

   We've all heard of expert quake... or have we? 
   This mode forces every gun in the map to spawn as the same
   type.

    Usage: "expert #", where # is the type of gun. 0 cancels
 1: Trracer    5: Carbine 
 2: Stingray   6: Autococker 
 3: Vm-68      7: Automag 
 4: Spyder     8: Pgp 

   autojoin
   -------

   ]autojoin on  // Turns auto joining teams on 
   ]autojoin off // Turns auto joining teams off
   ]autojoin ping       // Join teams by ping

   ffire
   -------

   ]ffire on   // Turns auto joining teams on 
   ]ffire off  // Turns auto joining teams off
 

How do I setup the MOTD?

Well first of all lets start by telling you what MOTD stands for. MOTD is the Message of the Day. This is a server configured message that is displayed by the server to every client on connect. You can edit this file as often as you like and use it to provide helpful information to your clients, or just to tell them where they are playing. In your quake2\pball\  directory you will find a motd.cfg. Just edit that file to update your MOTD. It will automatically center print whatever you write in there.
 

How do I set up the Rotation?

Digital Paint has its own map rotation system coded into it. You can customize the rotation commands by editing your server.cfg.

 ROTATION <filename> [<rot type>] 
   <filename> - server ini file 
   <rot_type> - 0 = sequential (def) 
                1 = random 
                2 = vote 
 ROTATION START to go to 1st map 
 ROTATION NEXT to go to next map 
 ROTATION GOTO # to jump to a map 
 ROTATION to display current list 
 ROTATION OFF to clear/disable 
 ROTATION ON to reload default rotation 
 ROTATION HELP for this screen 
 ------------------------------------- 

   sequential runs through the maps in order
   random picks a random map every time
   vote lets the clients vote between the maps

   ex.
   sv rotation off
   sv rotation pball/rotation.cfg 2

The example above will set up your server to run the maps in rotation.cfg with the voting system.

Now you must edit your rotation.cfg file in your pball directory with the maps that you would like to be in the rotation. This is a simple text file, one map per line, and you must use the correct filename for each map
 

Example:

[maplist]
battle
castle1
ksplat1
ksplat2
ksplat3
midnight
cfire
pb2siege1
pb2dm1
###
 

What other commands can I use on my server?

The Variables
Here you will find the most used and most important variables to be set in your server.cfg.  To use these variables you simply put them on their own line in your server.cfg and assign a value to them according to what you want.  For a full list of variables that are available to Quake 2 I recommend you check The Console.
 

allow_download 0/1
- Toggles whether or not clients can download files from the server.
-Set to 1 to allow downloads
Example: set allow_download 0
You can also specify which items are downloadable with the following:  NOTE: allow_download 1 must be set for these to work.

allow_download_maps 0/1
-Toggles whether or not clients can download maps from the server
-set to 1 to allow downloads
Example: set allow_download_maps 1

allow_download_models 0/1
-Toggles whether or not clients can download models from the server
-set to 1 to allow downloads
Example: set allow_download_models 1

allow_download_players 0/1
-Toggles whether or not clients can download player skins from the server
-set to 1 to allow downloads
Example: set allow_download_players 1

allow_download_sounds 0/1
-Toggles whether or not clients can download sounds from the server
-Set to 1 to allow downloads
Example: set allow_download_sounds 1

hostname "<name>"
- This sets the Name of your server.
Example: set hostname "Quake 2 CTF Server"

maxclients <#>
- This sets the maximum number of clients allowed on your server.
Example: set maxclients 16

fraglimit <#>
- This sets the maximum number of frags before the server switches to the next map
Example: set fraglimit 150

timelimit <max minutes before map change>
- This sets the maximum time the match will go before switching maps
Example: set timelimit 30

rcon_password <password>
- This sets the remote Console Password
example: rcon_password hacked

public 0/1
- Setting this to 1 makes it a public server and will make it report to the id Master server to show up in GameSpy
-To make your server report to a master other than the id Master use the setmaster command below.
Example: set public 1

setmaster
- Allows you to specify a master server to report to
Example: setmaster q2master.planetquake.com

Custom Variables
You can setup Custom rules in your server.cfg for any miscellaneous stuff you would like to provide for GameSpy users such as the Web Site for the server or the admins e-mail address by setting the variable and adding an s after it like the following:

set website "http://www.planetquake.com/digitalpaint" s
set Admin "Nutiket" s
set e-mail "pvande3@gl.umbc.edu" s
set location "Baltimore, Maryland" s
The s at the end tells GameSpy to pass this information on to the users GameSpy Rules section.  If the Custom rule contains a Web site address double clicking it in GameSpy will open the page in your browser.

I typically recommend that you set up 4 custom variables named Admin, e-mail, Location, and WebSite so that people that play on your server can contact you with problems and can find the web site associated with the server to find out about news, stats, mods, custom files, or anything else related to your server.
 

How do I administer my server remotely?

   Names
   People in the game are either ops or peons.  Typing NAMES in
   the game, will display who is an op, and who isn't.  Ops can have
   a level between 1 and 32767, but it is recommended to use only
   1 - 255.

   ]names
   1] * OP 250, Calrathan
   2] * OP 100, Jitspoe
   4] * OP 50, SmokeYa
   5] * OP 0, TX_Outlaw

   The * is a "splat" of the color of the team the client is on.
   the # to the right of "OP" is the level the client is opped at.
   The reason the listing of people may skip a number, in this case
   number 3, is that each client is assigned a number when they connect.
   If client #3 disconnects in the middle of a game, such an occurrence as
   the example above may happen.

   Login
   In all these commands, you can either enter the name, or the number.
   To gain ops in a game, you must use the LOGIN command :

   ]login DP_Owns 
   You are now opped at level 100

   This will give you ops. The passwords are set in the server.cfg file
   and are case sensitive

   cvar_set
   This is a command which will allow an op to set a variable on the 
   server.  It can be used to alter the timelimit and fraglimit

   ]cvar_set timelimit 20
   setting timelimit to 20

   This works the same way as typing "set timelimit 20" at the server 
   console
   CTFMODE is a variable to be set by this. It defines which gameplay mode
   is preferred

   0 = DM
   1 = 1 flag CTF
   2 = 2 flag CTF

   Only maps with certain flags set will allow different/alternate modes

   kck
   Kick those annyoing players off the server.

   ]names
   1] * OP 250, Calrathan
   2] * OP 100, Jitspoe
   4] * OP 50, SmokeYa
   5] * OP 0, TX_Outlaw

   ]kck 1
   Calrathan was kicked
   Calrathan leaves team red
   Calrathan disconnected

   newmap
   Change the map to a new one. Easy enough.

   ]newmap koth

   Simple and self explanatory

   viewkick
   This command when issued will cause anyone within your cross hairs
   to be kicked from the server.

   viewgib
   This command when issued will cause anyone within your cross hairs
   to be killed.

   givewarning
   This command when issued will cause anyone within your cross hairs
   to be given a warning to cease behavior or be kicked
 

How do I report my server?

In order to get your server listed on the Digital Paint page and in our server.txt you must email Nutiket with your information. If you would like your server to report to Gamespy I would suggest you add this line to you server.cfg.

setmaster q2master.planetquake.com

Other Resources
 
Updated 8:18 AM 3/6/2004 to fix images.