Last updated March 11, 2002 For the most up-to-date online version of this publication, choose from the following translations: English, French, Spanish, Italian, or German. The following people contributed to this publication: Björn Christoph, Ken Creedon, Stuart Dunsmore, Daniel Ferguson, Tony Ray, Jason Roman, and Paul Seale. Even Balance, Inc. P O Box 11395 Spring, Texas 77391-1395 This publication is © Copyright 2002 by Even Balance, Inc. All Rights Reserved. PunkBuster™ Software and the PunkBuster Logo are trademarks of Even Balance, Inc. Other trademarks referenced by this publication are the property of their respective owners.

Introduction What PunkBuster Is All About Quick Start Guide The Basics Game Integration PB Subdirectory and File Information The PunkBuster Interface Enabling and Disabling PunkBuster Updating PunkBuster Commands and Settings Commands Settings Player Name Management Facility Monitoring Game Variables Advanced Cvar Monitoring Screen Capture Facility Remote Logging Facility Frequently Asked Questions

This publication is for Server Administrators of online games who are interested in using or finding out more about the PunkBuster Anti-Cheat system. Currently the only game that includes direct PunkBuster support is Return to Castle Wolfenstein, by id Software, Inc. A great effort has been made to make this publication useful for those new to PunkBuster and also for advanced users of PunkBuster. Any comments or suggestions will be gladly received via email to docs@evenbalance.com. Since this manual is for Server Administrators, we will assume for the most part that the reader is familar with the Game Console, entering commands, and configuration files. If you wish to learn about using the PunkBuster Client software for use with playing the game, please see our related publication entitled 'PunkBuster for Players'.

In September of 2000, a handful of online computer game playing enthusiasts became concerned with the increased activity of cheating in online multiplayer gaming. We decided to do something about the problem. We were aware that a few attempts had been made in the past by others (including the makers of the games themselves) and that they were all generally considered to have failed for the most part. We had a vision of a new way to approach the problem and decided to develop an experimental software system to see if our new approach would work. We believed that once we had submitted and maintained a product for open use that the response from affected online communities would tell us whether or not the experiment was a success. After several months of growth, much hard work, acceptance, and the appreciated beta testing and support of hundreds of thousands of users, we believe that we have a viable solution to fighting the problem of cheating in online multiplayer games: PunkBuster. PunkBuster is an automatically self-updating client/server Anti-Cheat software system. That means that players run the PunkBuster Client software while they are playing online games and also, PunkBuster Server software is running on the game server that players connect to for gameplay. The PunkBuster system is designed to hold all participants accountable by scanning the game computers looking for known cheats, game hacks, and exploits similar to the way Anti-Virus software would scan a computer looking for a virus. PunkBuster does not modify any files or settings on your computer even if it detects some type of violation, it reports what it finds and, in some cases, will remove offending players from the current game. PunkBuster is optional. A Server Admin who decides to run PunkBuster on his or her Game Server is simply choosing to limit players on said Game Server to players who have chosen to enable PunkBuster on their playing computers. You do not have to enable PunkBuster if you are uncomfortable with the idea of such software. However, PunkBuster is not "spyware" nor is it a trojan - it is designed for groups of honest people to use together in an effort to keep out players who are unwilling to subject their system to an objective third-party software system scanning their computer during gameplay. The activities performed by PunkBuster are generally described on our website and we have also developed and published a Privacy Policy Statement. We take the privacy and security of our users and their computers very seriously and there is no featured provision (documented nor undocumented) whatsoever in our software whereby anyone outside of your computer can gain control of your computer or view / change your private information with or without your knowledge. Additionally, PunkBuster does not transmit your private data files to any other computer nor keep any type of centralized database that tracks any information about your personal files. PunkBuster basically just looks for known cheats and game-hacks while you are playing a PunkBuster enabled game in an effort to authenticate your installation as "clean" for the purpose of consentual multiplayer online gaming. In mid-2001, a privately funded corporation, Even Balance, Inc. was formed to handle the commercial application of the PunkBuster system. We plan to offer several types of products and services to online gaming communities that are built up around the games we support. We are actively seeking relationships with game software developers who would like to have us provide anti-cheat support for their online multiplayer game titles. There is no cost for a personal, non-commercial license to use PunkBuster software. Our End User License Agreement must be accepted on-screen before PunkBuster is installed. If you wish to use PunkBuster in any type of commercial environment or in connection with any commercial event, a separate commercial licensing arrangement must be obtained from Even Balance, Inc. To find out more about commercial licensing, send an inquiry via email to license@evenbalance.com. More information about Even Balance, Inc. and the PunkBuster system can be found on our website at evenbalance.com.

If you create a Game Server using the In-Game Browser screen, make sure the PunkBuster setting is set to 'Yes' before proceeding to create the Server. If running the Game Server strictly in console mode, enter `PB_SV_ENABLE` to ensure that the PunkBuster Server software is enabled before proceeding. When PunkBuster is Enabled for the first time, it will begin operation using the default configuration. This configuration has been designed to work with all types of game servers. Optimizations can later be made by adjusting the PunkBuster settings described later in this publication to better match the server connection speed, user load, and Admin preferences. The following are a few options that can greatly enhance server cheat protection with a relatively easy learning curve. Once PunkBuster has been enabled, automatic screenshot capturing can be turned on by setting `PB_SV_SSAUTO` to 1. To make this (and/or most other PunkBuster setting changes) permanent, enter the command `PB_SV_WRITECFG`. This will save most current PunkBuster settings to the PunkBuster configuration file "pbsv.cfg". PunkBuster loads this configuration file every time it is run. When the automatic screenshot capturing has been turned on, screenshots will begin to be routinely taken of all the servers’ connected players and stored in the "svss" folder. The default limit to the number of captured screenshot files is 100 which can be changed with the command `PB_SV_SSCEILING`. Once the limit has been reached, the PunkBuster server will begin to overwrite the current files starting with the lowest numbered file first in an endless cycle. For Server Admins who wish to log important (but verbose) information about each connected player's cvars during gameplay, enter the following four setting changes into the Game Console. These will have the effect of logging (every 15 minutes) all user-created and non-default player cvars to special log files with a `.var` extension (in the "svlogs" folder). `PB_SV_CvarLogging 2 PB_SV_CvarWalk 4 PB_SV_CvarUserPulse 15 PB_SV_CvarChangedPulse 15`

> Although there is code inside the Game to allow PunkBuster to be integrated tightly with the Game, the PunkBuster software is completely separate from the Game software. It resides in its own folder called "pb" inside the game folder. For example, if your game is installed into a folder called "c:\games\rtcw", then the PunkBuster files will be in "c:\games\rtcw\pb". To remove or uninstall PunkBuster from your system, simply delete the "pb" folder using the explorer program on your computer. PunkBuster does not modify the system registry nor hide files or other information anywhere else on your system.

> There are only a few files in the "pb" folder when PunkBuster is first installed. When the game is first launched after PunkBuster has been installed, PunkBuster will add new files and folders for later use.

> The "pb" folder normally contains the following file types:

> - Files with a "dll" or "so" extension (example: pbcl.dll) are PunkBuster system files. Removing any or all of these files may cause your PunkBuster system to stop working. Modifying any or all of these files is a violation of our End User License Agreement and permanently terminates your license (and legal ability) to use our software.
> - Files with a "db" extension are PunkBuster database files. The PunkBuster databases are automatically created and maintained by the PunkBuster software. If you delete one or all of these files, PunkBuster will recreate and re-populate them with information obtained from Master PunkBuster Servers if possible. Modifying any of these files may cause PunkBuster to act in an unexpected manner.
> - Files with a "dat" extension are PunkBuster data files. They should not be removed or modified. The PunkBuster system will maintain them automatically.
> - Files with a "log" extension are files into which PunkBuster logs information during the course of using the software. By default, the PunkBuster Client only logs severe error information to a log. The PunkBuster Server logs important activity into log files automatically.
> - Files with an "htm" extension are special log files that are designed to be viewed by a web browser such as Internet Explorer or Netscape.
> - Files with a "cfg" extension are configuration files that contain PunkBuster commands and settings. You can create and modify your own configuration files and have them loaded either automatically or manually. Details about PunkBuster commands and settings are given later in this publication. Two specific "cfg" files: pbcl.cfg and pbcllog.cfg may be used and overwritten by the PunkBuster system under some circumstances. Each time PunkBuster starts, the pbcl.cfg configuration file is loaded automatically.

> PunkBuster also creates subfolders inside the "pb" folder to organize information; the following is a list of these folders and what they contain:

> - The "htm" folder contains htm files that are used during PunkBuster's auto-update system. Over time and after many updates, this folder may contain old files that may be deleted to recover disk space if desired.
> - The "dll" folder contains various PunkBuster system files obtained during the auto-update process from prior version installations of PunkBuster. As with the "htm" files described above, old files in this folder may be deleted to recover disk space if desired.
> - The "svlogs" folder contains PunkBuster Server logs. Log files are named in sequence using an 8 digit number and the ".log" file extension.
> - The "svss" folder contains screenshots (PNG files) and "helper" HTM files that have been captured from Players connected to the Server - the file pbsvss.htm located in this subdirectory is a sequential index (log) that can be used to quickly and easily view captured screenshots.

> All interaction with PunkBuster is performed inside the game itself. The PunkBuster Server logs information both to the Game Server Console and PB Server Logs located in the "svlogs" folder. When you need to issue commands and setting changes to PunkBuster, do so by typing directly into the game's interface / console. Groups of commands and settings can also be placed into “.cfg” files for easy loading. All PunkBuster Server commands and settings start with the same six characters: "PB_SV_". Specific PunkBuster commands and settings are described in a subsequent section of this publication. PunkBuster doesn't care if commands and settings are typed in lower case, upper case, or in some combination `ENABLE`, `enable`, and `EnAbLe` are all the same as far as PunkBuster is concerned. Any time the PunkBuster Server needs to display a message, the message will be preceded by the words "PunkBuster Server:".

There are two ways to enable / disable PunkBuster software. One is by typing commands into the game console. The other way is built into the game's user interface Only the command line method will be described below, the GUI method is described in our publication "PunkBuster for Players".Note that when PunkBuster is Disabled, it will ignore commands and setting changes except for the specific command to Enable after which it will begin full and proper operation. To Enable the PunkBuster Server from the console, type in `"PB_SV_ENABLE"` without the quotes. To Disable PunkBuster, type `"PB_SV_DISABLE"`. NOTICE: PunkBuster cannot be Disabled immediately during the middle of gameplay. Choosing to Disable PunkBuster by any method will set PunkBuster into Disabled mode but that does not take effect until the entire game is restarted. Neither Players nor Server Admins can simply turn PunkBuster off and on during the middle of gameplay. Once PunkBuster Client and/or Server has been Enabled for a gaming session, it stays Enabled regardless of how many times the Enabled/Disabled mode is toggled. When the game is exited, the current PunkBuster status is saved and the next time the game is started, PunkBuster will initialize to the mode in which it was last set, either Enabled or Disabled.

One of the core aspects of the PunkBuster system is the automatic update feature. As new versions of PunkBuster files are made available for download from our Internet-based Master PunkBuster Servers, the PunkBuster software running on Players' and Admin's computers will attempt to retrieve those new versions and perform an automatic "self-update" function in the background without interrupting gameplay. For most users, this occurs automatically and seamlessly. Since PunkBuster Servers require all connected Players to be running identical versions of all PunkBuster files in order to be authenticated for "clean" online play, the automatic update facility inside PunkBuster is an important component of the overall system. PunkBuster will retain older versions in case there is ever a need to connect to a Server that is still running old versions of the PunkBuster software. All PunkBuster update files are stored in special compressed HTM files and can be opened with any Internet Web Browser. We have designed and implemented a robust method for securely delivering updates from our Master PunkBuster Servers to Regular PunkBuster Servers and then on to computers that have Enabled the PunkBuster Client software. Great care has been taken to design and develop the system such that only authentic PunkBuster files will ever be accepted and used by the PunkBuster System during the auto-update process. There may be times, however, when it is necessary to manually update a PunkBuster System. For instance, if there is no Internet Access available and multiplayer gameplay is occuring in a LAN environment. Or perhaps, there is a temporary routing problem causing locally running PunkBuster software to not be able to "find" any Master PunkBuster Servers whereby an update can be obtained. There may also be times that the PunkBuster Team offers pre-release beta versions of PunkBuster software for manual download so that it can be tested before broad distribution. For whatever reason that may come up that requires a manual update, we have prepared a separate section, called 'Manual Updates' on the Download page of our website at

Even Balance. Since all PunkBuster updates are stored in HTM (web browser compatible) files, there is no need to download archives or to run setup programs in order to update PunkBuster. All that is required is opening our update files in a Web Browser and then performing the "Save As" function from the "File" menu of the Web Browser. The instructions for where to save the HTM files on the local hard drive are displayed on the download page. There are separate sets of files for each Operating System supported (i.e. Windows, Linux, and Macintosh). After the "Save As" has been performed, PunkBuster knows how to update itself using the saved file(s). For some manual updates to complete properly, the game may need to be exited and restarted with PunkBuster Enabled.

The easiest way to quickly test that your PunkBuster Server is properly installed, Enabled, and working is to type `"PB_SV_VER"` into the game console. If PunkBuster is working properly, it will respond by displaying the version number that is currently installed and running. If there is no response, then PunkBuster is either not installed properly or has become corrupted and should be reinstalled. Some commands are standalone and others may require or accept additional parameters. For example, the command `"PB_SV_VER"` is standalone, typing in `"PB_SV_VER"` tells PunkBuster that you would like to know the currently running Version number. The command `"PB_SV_LOAD"` takes one parameter (a filename), typing in `"PB_SV_LOAD ABC.CFG"` tells PunkBuster to load the PB configuration file called `"ABC.CFG"`. Most Server Admins will not use the `PB_SV_LOAD` command, but rather will use the game-specific exec command so that configuration files can be loaded that have both Game and PunkBuster commands and settings changes. Configuration files loaded by the `PB_SV_LOAD` command may contain only PunkBuster related commands and settings. PunkBuster settings, sometimes also called variables, hold numbers or textual information that PunkBuster uses while it is operating. Changing PunkBuster settings will affect the way PunkBuster runs in specific ways. All PunkBuster settings start out with default values that are the recommended values for most users. To find out the current value of a setting, simply type in the name of the setting by itself. For example, typing `"PB_SV_SSAUTO"` will cause PunkBuster to display the current value. Also displayed is the allowable range that the value can contain. This particular setting can be set either to 1 or 0.. To set it to 1, type in `"PB_SV_SSAUTO 1"`, PunkBuster will then respond by showing the setting name along with its new value. Trying to set a PunkBuster setting outside of its allowable range will cause PunkBuster to give the setting the closest allowable value to what was originally specified. Listed below (in alphabetical order) is a list of PunkBuster Commands and Settings along with a general description and usage instructions where necessary.

> PB_SV_BadName [grace_seconds] [text_filter]
> Adds a bad name to the list of bad names for the server to disallow in player names

> PB_SV_BadNameDel [slot #]
> Deletes a bad name from the list of bad names

> PB_SV_BadNameList
> Displays the current bad name list for the Game Server; see the section dealing with the Player Name Management Facility

> PB_SV_Ban [slot#] [displayed_reason] | [optional_private_reason]
> Removes a player from the game and permanently bans that player from the server based on the player's guid (based on the cdkey); the ban is logged and also written to the pbbans.dat file in the pb folder

> PB_SV_BanList [optional_search_text]
> Displays the list of bans in the console, including kicks with a temporary ban; if the `[optional_search_text]` parameter is specified, then only bans/kicks that include the search text are listed (useful for searching for a specific name / guid).

> PB_SV_BindSrch [search_text] [player_name_or_slot#]
> Sends a request to all applicable connected players asking for a report on which local player key bindings contain the specified `[search_text]`; to specify a player name or substring (as opposed to slot #), surround the text with double-quote marks

> PB_SV_Cvar [Cvar_name] [IN/OUT/INCLUDE/EXCLUDE] [Param1] [optional_Param2]
> Adds an automatic cvar check to the list of cvars for the server to check for during gameplay

> PB_SV_CvarChanged [player_name_or_slot#]
> Sends a request to all applicable connected players asking for a list of which local player cvar values have been changed from their original default value; to specify a player name or substring (as opposed to slot #), surround the text with double-quote marks

> PB_SV_CvarList
> Displays the allowed cvar ranges for all cvars that the Game Server is monitoring; see the section dealing with the Variable Monitoring Facility

> PB_SV_CvarSrch [search_text] [player_name_or_slot#]
> Sends a request to all applicable connected players asking for a list of which local player cvar values contain the specified `[search_text]`; to specify a player name or substring (as opposed to slot #), surround the text with double-quote marks

> PB_SV_CvarUser [player_name_or_slot#]
> Sends a request to all applicable connected players asking for a list of which local player cvars were created by the user (as opposed to being part of the game itself); to specify a player name or substring (as opposed to slot #), surround the text with double-quote marks

> PB_SV_CvarVal [Variable_Name] [player_name_or_slot#]
> Sends a request to all applicable connected players asking for the value of the specified variable (cvar); to specify a player name or substring (as opposed to slot #), surround the text with double-quote marks

> PB_SV_Disable
> Disables the PunkBuster Server Software - the disabling does not take effect until the game server is exited and restarted

> PB_SV_Enable
> Enables the PunkBuster Server Software

> PB_SV_GetSs [player_name_or_slot#]
> Sends a request to all applicable connected players asking for a screen shot to be captured and sent to the PB Server; to specify a player name or substring (as opposed to slot #), surround the text with double-quote marks

> PB_SV_Kick [slot#] [minutes] [displayed_reason] | [optional_private_reason]
> Removes a player from the game and won't let the player rejoin until specified [minutes] has passed or until the server is restarted, whichever comes first - kicks are not written to the pbbans.dat file but they are logged and will show up in the output from the pb_sv_banlist command

> PB_SV_Load [File Name]
> Loads the specified PunkBuster configuration file which can contain PunkBuster commands and/or setting changes

> PB_SV_PList
> Displays a list of connected players and their current status

> PB_SV_Ver
> Displays the currently running version of the PunkBuster Server software

> PB_SV_WriteCfg
> Writes the current values of the PunkBuster Server settings to the local hard drive (creating or overwriting a file called pbsv.cfg) in such a way that they will be loaded automatically the next time the PunkBuster Server starts; server admins who wish to manage multiple config files for different situations will usually not use this command at all

> PB_SV_AutoSs [0/1]
> Set to 1 (default is 0) if you want the PB server to regularly retrieve screen shots from connected players

> PB_SV_AutoSsFrom [Seconds]
> Minimum number of seconds (default is 60) PB will wait before requesting a screen shot after the previous request from each player

> PB_SV_AutoSsTo [Seconds]
> Maximum number of seconds (default is 1200 = 20 minutes) PB will wait before requesting a screen shot after the previous request from each player

> PB_SV_CQC [0/1]
> CQC means Client Query Capability - setting this to 0 (default is 1) means that connected players cannot use PB to check the value of game server cvars (we recommend leaving this set to the default of 1 to promote goodwill); NOTE that PB doesn't let players see the value of any server-side cvars that include the text "password"

> PB_SV_CvarChangedPulse [Number]
> The number of minutes (default is 99 which means disabled) between automatic sends of the CVARCHANGED command described in the command section above

> PB_SV_CvarFreq [Number]
> The number of times per minute (default is 6) that each player has one cvar value checked against the current list of cvar ranges on this server

> PB_SV_CvarLogging [1/2/3]
> Determines the target destination of log output related to player cvar checks; The value of 1 (default) specifies the server console and normal log file, the value of 2 specifies separate log files in the "svlogs" folder with the var file extension, and the value of 3 specifies both

> PB_SV_CvarUserPulse [Number]
> The number of minutes (default is 99 which means disabled) between automatic sends of the `CVARUSER` command described in the command section above

> PB_SV_CvarWalk [Number]
> The default setting of 0 tells PunkBuster to simply log lists of cvar names returned by the `CVARSRCH`, `CVARUSER` and `CVARCHANGED` commands so that the Admin would have to manually query the individual values if desired; a non-zero setting tells PunkBuster to "walk" through each cvar returned in such a list automatically and log the values of each cvar - the higher the number for this setting, the more cvars PunkBuster walks through during each processing cycle

> PB_SV_KickLen [Minutes]
> The number of minutes (default is 2) a player will be kept from being able to rejoin after getting kicked by PunkBuster

> PB_SV_LogAddr [Address / Internet Hostname]
> Holds the address of the machine to which remote logging is sent (default is empty meaning the feature is not used)

> PB_SV_LogCeiling [Number]
> The highest serial number (default is 1000) that PunkBuster will use in numbering its log files before starting over at 1

> PB_SV_LogNext [Number]
> The next serial number that PB will use to name a PB log file; this setting is automatically maintained by PunkBuster and is incremented after each map change by the Game Server as PB opens a new log file

> PB_SV_LogPort [Port #]
> Holds the listen port of the machine to which remote logging is sent (default is 0 meaning the feature is not used)

> PB_SV_LogPw [Password]
> Holds the password required to send logging output to a listening remote logging machine

> PB_SV_LogSync [0/1]
> When set to 1 (default is 0), PB will name Game log files in accordance with PB log files using the same serial number system; Game log files will still be stored in the same location inside the game directory either way, but will have the same filename as the corresponding PB log file and both will be closed at the end of each map and a new log file will be opened

> PB_SV_LogUser [Username]
> Holds the username required to send logging output to a listening remote logging machine

> PB_SV_MaxConDls [Number]
> The maximum number (default is 3) of PB updates that PB will attempt to download at the same time

> PB_SV_MaxDlRate [KB/sec]
> The (roughly) maximum bandwidth (default is 1 KB/sec) requested per file for PB update downloads

> PB_SV_MsgPrefix [New Prefix]
> Holds the text that the PunkBuster Server displays in front of every line displayed; the default is "^3PunkBuster Server" (note the ^3 means output in GOLD)

> PB_SV_Sleep [Period]
> Holds the period of time (milliseconds) that the PunkBuster Server "sleeps" between processing cycles; the default is 250 (1/4 of a second); lower numbers will cause PunkBuster to process more times each second which also may have the effect of marginally increasing the bandwidth used by PunkBuster when communicating with connected PB clients

> PB_SV_SsCeiling [Number]
> The highest serial number (default is 100) that PB will use in numbering Screenshot (PNG) files obtained from players before starting over at the `PB_SV_SsFloor` value

> PB_SV_SsCmd [Filename]
> The name of the script file (default is "" empty which means "not used") that PB calls after each screen shot PNG image file is received; this can be used by admins to copy or otherwise process screenshot files that are obtained automatically during gameplay

> PB_SV_SsDelay [Seconds]
> When this is non-zero (default is 0), then each PB client will wait a random number of seconds up to the value of this setting after receiving the request before actually capturing a screen image for sending back to the server

> PB_SV_SsFloor [Number]
> The lowest serial number (default is 1) that PB will use in numbering Screenshot (PNG) files obtained from players

> PB_SV_SsHeight [Pixels]
> The requested height (default is 240 pixels) of images captured by PunkBuster Clients for sending to the PB Server

> PB_SV_SsNext [Number]
> The next serial number that PB will use to name a PNG screen shot image file

> PB_SV_SsPath [Path]
> If specified (default is "" empty), PB will write captured screen shot images obtained from connected players to this alternate location, this can be a network share or some other location where you would prefer to place screen shot images and the "helper" htm files that go with them

> PB_SV_SsSRate [Number]
> The sample rate (default is 1) used for capturing screen shots, specifies how many pixels get skipped in the processing of the image to keep file sizes down; if set to 2, then only every 2nd pixel is taken (in both horizontal and vertical directions); if set to 4, then only every 4th pixel is taken

> PB_SV_SsWidth [Pixels]
> The requested width (default is 320 pixels) of images captured by PunkBuster Clients for sending to the PB Server

> PB_SV_SsXPct [Percentage]
> The percentage across the screen (default is 50%) where the center of the requested screenshot should be captured from

> PB_SV_SsYPct [Percentage]
> The percentage down the screen (default is 50%) where the center of the requested screenshot should be captured from

Some Server Admins wish to try to limit profanity / offensive language on their game servers. This is an individual preference issue. For Admins who wish to prevent players from using certain offensive text in their playing names, PunkBuster includes the Player Name Management Facility also known as the BadName Facility. By default, PunkBuster does not do any checking for BadNames. If you wish to construct a list of offensive text filters in PunkBuster so that players will not be able to wear names containing the offensive text, use the BadName command. The format of the BadName command is as follows: `PB_SV_BADNAME [grace_period] [filtered_text]` You can fill up a configuration file with nothing but these types of statements if desired and then issue a `PB_SV_LOAD` command either manually or inside your pbsv.cfg file to have the whole list executed easily at one time. If prefered, you can also type them into the console and do a `PB_SV_WRITECFG` to have the whole list written, along with your other current PB settings, to the pbsv.cfg file which is automatically loaded every time PunkBuster starts. If PB detects that a player has a name that includes the exact `[filtered_text]` from any BadName entry (case insensitive), then PunkBuster will send a warning message to the player that the playing name is not allowed on this server and that the player should change the name. If the name is not changed to an acceptable name within the number of seconds specified by `[grace_period]` for that text filter, then the player is removed from the game. Note that setting `[grace_period]` to 0 has the effect of immediately removing a player before any warning message has time to display. Note that PB strips player names of color codes before searching for `[filtered_text]`.

PunkBuster provides the ability for Server Admins to specify a list of acceptable player cvar value ranges while playing on the Game Server. When each player connects to a PB-Enabled Server, the PB Client will download the list of acceptable cvar ranges from the PB Server and will check all of the player's cvars for compliance. The player is warned about any cvars that are unacceptable to the Game Server. The player then will have a few seconds to make any necessary corrections before the PB Server will begin methodically and regularly checking that player's cvars against the list of acceptable ranges. If a player is found to have a cvar that is outside the acceptable range for that cvar, then that player will be removed from the game immediately. To add a cvar check to your PB Server, use the `PB_SV_CVAR` command. There are four different types of cvar checks that can take place: `IN`, `OUT`, `INCLUDE`, and `EXCLUDE`. Each is explained below along with examples and the format of the `PB_SV_CVAR` usage required to properly add that type of check to the PB Server's list. As with any other PB Command or Setting, cvar checks can be stored in configuration files and loaded either automatically during startup or upon demand during gameplay. In the case of cvar checks, we recommend adding new entries in such a way that they take effect the next time the server is started rather than adding them during gameplay. Note that once a cvar check has been added, it cannot be removed or changed without restarting the PB server. If a subsequent entry is made with the same cvar name, it is added to the list without affecting the prior entry. Also note that checking for non-existent cvars will return empty strings (which also evaluate to the value of 0). `PB_SV_CVAR [cvar_name] IN [from_value] [optional_to_value]` If you wish to require that a particular cvar always equals a certain value or falls within a specified range of values, use the "IN" type. For example, `"PB_SV_CVAR handicap IN 10"` means that each player's handicap cvar must always equal 10 on your game server. Issuing `"PB_SV_CVAR handicap IN 5 15"` means that handicap must always fall inside the 5 to 15 range (inclusive). `PB_SV_CVAR [cvar_name] OUT [from_value] [optional_to_value]` If you wish to require that a particular cvar never equals a certain value or falls within a specified range of values, use the "OUT" type. For example, `"PB_SV_CVAR handicap OUT 0"` means that each player's handicap cvar must never equal 0 on your game server. Issuing `"PB_SV_CVAR handicap OUT 11 99"` means that handicap must never fall inside the 11 to 99 range (inclusive). `PB_SV_CVAR [cvar_name] INCLUDE [text]` If you wish to require that a particular cvar always includes the specified `[text]` inside its value, use the "INCLUDE" type. For example, `"PB_SV_CVAR r_drawbuffer INCLUDE gl_back"` means that each player's r_drawbuffer cvar must always have the text "gl_back" somewhere in the value. `PB_SV_CVAR [cvar_name] EXCLUDE [text]` If you wish to require that a particular cvar never includes the specified `[text]` inside its value, use the "EXCLUDE" type. For example, `"PB_SV_CVAR name EXCLUDE ^"` means that each player's name cvar must never have the text "^" somewhere in the value (note: the ^ symbol is used to change text colors so using the example would mean that no one could put fancy colors in their playing name on your server without getting kicked once detected by PunkBuster).

In addition to the Variable Monitoring Facility described in the previous section, PunkBuster also includes several advanced tools that Admins can use when desired. Five such commands are `PB_SV_BINDSRCH`, `PB_SV_CVARSRCH`, `PB_SV_CVARVAL`, `PB_SV_CVARUSER`, and `PB_SV_CVARCHANGED`. The first three take two parameters: `[text] [player]` and the others take one: `[player]`. If the `[player]` parameter is not specified for any of these commands, then PB will direct the command at all currently connected players. There are 2 ways to specify specific players: by slot # or by name substrings. To get player slot numbers, use the `PB_SV_PLIST` command. Each player's slot # is in the first column of the resulting display. If you wish to specify name substrings, be sure to surround the search text with double quotes. For example, `PB_SV_CVARVAL handicap "wolf"` means to find the value of the handicap cvar for all players who have the text "wolf" in their playing name. The `PB_SV_BINDSRCH` command searches through all of the player's key bindings looking for the specified `[text]` and reports back matching keys and the full binding attached to each matching key. This is useful for examining the key bindings of a player to see if that player is trying to get around the cvar checks by setting a bind to set a cvar value to an unacceptable value and then quickly set it back to acceptable after some other processing has occured. For example, use `"PB_SV_BINDSRCH back"` to get a list of all keys that have the text "back" in the key binding from your connected players. The `PB_SV_CVARSRCH` command is similar to the BINDSRCH command described above. However, instead of searching key bindings, it searches through the values of all cvars defined in the player's system, including player-defined cvars. Since cvars can be used to execute commands by players, this type of search is useful to find out if a player has set up a cvar as an alias to execute in order to set other cvar values outside of acceptable ranges. When this command is issued, the full list of player cvar names that contain the search text is returned (the values of each cvar may be displayed/logged either manually with the `PB_SV_CVARVAL` command or automatically by setting the `PB_SV_CVARWALK` setting). The `PB_SV_CVARVAL` command can be used to check the exact value of any player cvar at any time. For example, use `"PB_SV_CVARVAL cg_drawallweaps"` to find the value of the `cg_drawallweaps` cvar for all connected players. Use `"PB_SV_CVARVAL cg_drawallweaps 1"` to find the value only from the player in slot #1. The `PB_SV_CVARUSER` command requests a list of cvars that are user-created. The `PB_SV_CVARCHANGED` command requests a list of cvars that are not currently set to their default value. There are also a few advanced settings that can be used to automate routine logging of cvar information supplied by using the above-listed commands: The `PB_SV_CVARLOGGING` setting determines how and where player cvar information is displayed and/or logged to a file for later viewing. A busy server with several players can generate lots of cvar-related information within a relatively short period of time if the PB Admin decides to take advantage of some of the above-listed features. If the `PB_SV_CVARLOGGING` setting is left at the default value of 1, then all cvar-related information is treated just like other events and is displayed in the server console as well as logged to the current PunkBuster log file. To redirect cvar-related logging to a separate (var) file, set `PB_SV_CVARLOGGING` to 2. In this case, PunkBuster actually maintains two separate log files for each map, one with the `.log` extension (normal logs) and one with the `.var` extension (cvar logs). Both files for a given map will have the same filename based on the sequential log file number, only the file extensions are different (for example, 00000001.log and 00000001.var). Setting `PB_SV_CVARLOGGING` to 3 has the effect of logging cvar-related information in both manners described above for values of 1 and 2. The `PB_SV_CVARUSER` and `PB_SV_CVARCHANGED` commands described above are designed to catch players who have figured out how to exploit the game using unpublished combinations of settings. If an Admin is suspicious of a certain player who seems to be able to do things that are not a normal part of the game, that player's cvars can be examined for any unusual combinations that may bring to light the source of an exploit. In some cases, Admins (or Leagues) may want to routinely and automatically log all such information for all players and then go back later to examine the logs rather than try to check players in real time while they are playing. To automate the sending of `PB_SV_CVARUSER` and `PB_SV_CVARCHANGED` commands to all players, use the `PB_SV_CVARUSERPULSE` and `PB_SV_CVARCHANGEDPULSE` settings. For example, set `PB_SV_CVARUSERPULSE` to 15 in order to have the PunkBuster Server automatically send a `PB_SV_CVARUSER` command to each player once every 15 minutes (staggered randomly). Both PULSE settings default to 99 which means disabled. Setting either or both to a number up to 98 activates the automatic feature. Another advanced setting that is designed to be used in combination with the PULSE settings mentioned above is called the `PB_SV_CVARWALK` setting. This setting normally defaults to 0 which means disabled. Setting it to a non-zero number causes PunkBuster to automatically "walk" through all cvars returned in a list (such as from a `PB_SV_CVARUSER` command) and query the actual current value of each player cvar in the list. Listed below is an example set of settings that would cause the PunkBuster Server to log all user-created and changed cvars along with their values to a separate log file with the `.var` file extension every 15 minutes (per player) during gameplay: `PB_SV_CvarLogging 2 PB_SV_CvarWalk 4 PB_SV_CvarUserPulse 15 PB_SV_CvarChangedPulse 15`

PunkBuster allows Server Admins to request and retrieve actual screenshot images being displayed on the gaming monitor of players currently connected to the game server. It is very easy to request a screenshot from one or more players and also to set up automatic screenshot capturing. Several advanced features are available for Admins who want to tweak their systems. The defaults are fine for most Admins and are a good place to start when getting a feel for how the Screen Capture Facility works. There are two ways to capture screen shots: Manually and Automatically. Some Admins will do both types. To Manually request a screenshot from all connected players, simply type `"PB_SV_GETSS"` into the Game Server console and after a few seconds, you will start seeing messages about where newly retrieved screenshots were written to your hard drive and what their filenames are. PB names screenshot image files using incrementing sequential serial numbers and they always have the PNG extension. PNG graphic files are similar to GIF and JPG files - they combine the best of both worlds with respect to the type of images found in most computer games. Along with each screenshot image (PNG) file, PunkBuster also writes a "helper" HTM file with the same filename so that you can use any web browser, such as Netscape or IE, to easily view your captured screenshots. Furthermore, all screenshot requests are logged to one specific HTM file called pbsvss.htm so that the list is made available on one scrolling screen as an index for quick and easy viewing. If you wish to take a manual screenshot of only one or a few connected players, you can specify either the player's slot number directly or you can specify a text substring and PB will request screenshots from all players whose names contain the specified search text. To find the slot # of a specific player, type `PB_SV_PLIST` into the console. Column one contains the slot # for each connected player in the list. To request screenshots from all players with the text "ABC" in their name, type `PB_SV_GETSS "ABC"` (note the quotes are necessary when specifying name substrings). To set up Automatic Screenshot Capturing, set the `PB_SV_AUTOSS` setting to 1 (the default is 0). Then you may want to change the values of the `PB_SV_AUTOSSFROM` and `PB_SV_AUTOSSTO` settings to specify how often PunkBuster will request screenshots from each connected player. Both of these settings are measured in seconds and the defaults are 60 and 1200 respectively which means that the PunkBuster Server will request a new screenshot randomly anywhere from 1 to 20 minutes after each previous request for each connected player. Note that regardless of the combination of manual and automatic screenshot requests submitted during gameplay, the PunkBuster system limits screen shots in two ways. First, each individual screenshot is limited to 82,000 pixels in an effort to keep image file sizes and transfer bandwidth requirements down. If you set your parameters (described below) to request images that contain more than 82,000 pixels, then PunkBuster will automatically reduce the image size until the actual capture fits within the limitation. Also, PunkBuster will not allow more than 3 screenshots to be requested from each player within any 10 minute period, nor allow a screenshot to be requested within 30 seconds of the previous request. The PB_SV_PLIST command used to display information about connected players has a column called "RecentSS" which shows the number of requests for each player within the last 10 minutes. Also, Admins should keep in mind that PunkBuster will not take a screenshot from a player who has minimized his local game or who has an application active other than the game itself. In those cases, an empty black screenshot image is sent with text at the bottom explaining why the Capture failed. Also, there are a few video display setups that cannot be correctly captured at this time. These setups also do not allow the game itself to take screenshots using the built-in non-PunkBuster method. The following settings can be used to customize the Screen Capture Facility: PB_SV_SSWIDTH and PB_SV_SSHEIGHT are used to request a specific size image in pixels. The default is 320 x 240. If a size is requested that is larger than the actual resolution on a player's system, then PB will automatically reduce the appropriate parameter to match the size of the resolution. For example, if a screenshot of 800x600 resolution is requested from a player running the game in 640x480 resolution, then PB will take the image at 640x480 resolution automatically. PB_SV_XPCT and PB_SV_YPCT are used to specify where on the full playing screen that the capture is to be centered. The default is 50 and 50 so that the capture comes from the center of the playing screen. Using lower numbers moves the captured area toward the left (in the case of XPCT) and upper (in the case of YPCT) portions of the screen and using higher numbers moves the area towards the right and lower portions of the screen respectively. If XPCT and/or YPCT are set to -1, then a random percentage between 0 and 100 will be used for each individual capture request - this has the effect of capturing different (randomized) portions of the playing screen each time a capture is taken. PB_SV_SSSRATE sets the sample rate for the capture. The Sample Rate can be set to take less pixels from a larger area of the screen to, in effect, compact a larger picture into a smaller size by simply skipping pixels. Sample Rates of 1, 2 and 4 are available. Using a Sample Rate of 2 will reduce image file sizes to about one fourth of normal (Sample Rate 1) and using 4 will reduce to about one sixteenth. The reduction in file size does affect the clarity of the image. It is always best to use Sample Rate of 1 unless you desire to capture large portions of the playing screen and don't mind losing some clarity in the resulting image. Even with the 82,000 pixel limit, it is possible to capture images at 1280x1024 using a sample rate of 4 for the relatively few players who play in very high resolutions. PB_SV_SSDELAY causes the PB Client to wait a random number of seconds (up to 60) after receiving the capture request before actually capturing the image. PB_SV_SSPATH can be configured to hold an alternate location where captured screenshots are to be written. This can be a network share if desired. The default is "" (empty) which means the pb/svss subfolder holds captured screen shots and related support files. PB_SV_SSFLOOR, PB_SV_SSCEILING, and PB_SV_SSNEXT deal with the way captured screenshot images are named as they are saved to files at the PB server. The PB_SV_SSNEXT setting holds the serial number that PB will use for the next captured filename - for example if PB_SV_SSNEXT is 250, then the next captured image will have a filename of pb000250.png (and it's "helper" file will be named pb000250.htm). The PB_SV_SSNEXT setting is incremented and maintained automatically by the PB system but can be set manually if desired. The FLOOR and CEILING settings specify the from and to range for the screenshot filenames captured by this server. Using the PB_SV_SSPATH command mentioned above, Admins who run multiple servers may want to have all PB Servers send captured screenshots to a central location. The FLOOR and CEILING settings allow the admin to give each PB Server its own unique range of filenames to use so that there is never any overlap in the central archive. PB_SV_SSCMD holds the name of a local script (batch) file that PB will execute automatically after each screen shot is retrieved successfully. The default value of this setting is "" (empty) which means that PB will not run a local script at all after image captures. PunkBuster passes the full image filename with path as a parameter to the script. This is for advanced Admins who wish to automate the processing, archiving, and/or publishing of screenshots (such as to a web server).

Even Balance, Inc. will soon be offering a premium, optional hosting service for Server Admins who wish to remotely log screenshot and log file signatures in real time for automatic publication to a fully and openly accessible website. We will offer a similar service for Players. Each subscriber gets a separate page and each days' activity is further separated into web pages. When this Service is available, more information will be available on our website at evenbalance.com.