Command line parameters

From Bitfighter

Bitfighter can be started with a number of command line parameters. These will override the behavior and settings stored in the INI file. Most players can ignore these most of the time.

Player-oriented options

  • -master <address> Use master server (game finder) at specified address
  • -name <string> Specify your username
  • -password <string> Specify your password
  • -usestick <int> Specify which joystick or other input device to use. Default is 1.
  • -window Start in windowed mode
  • -winpos <int> <int> Specify x,y location of game window (note that this is the position of the UL corner of the game canvas, and does not account for the window frame)
  • -winwidth <int> Specify width of game window. Height will be set automatically. Note that the specified width is the width of the game canvas itself, and does not take account of window borders. Therefore, the entire window width will exceed the size specified slightly.
  • -fullscreen, -fullscreen-stretch Start in full-screen mode
  • -rules Prints out a list of "rules of the game" and other possibly useful data
  • -help Print a brief help message and exit

Options for hosting

  • -serverpassword <string> Specify a server password (players will need to know this to connect to your server)
  • -adminpassword <string> Specify an admin password (allowing those with the password to kick players and change their teams) when you host a game or run a dedicated server
  • -levelchangepassword <string> Specifies the password required for players to be able to change levels on your server when you host a game or run a dedicated server
  • -hostname <string> Sets the name that will appear in the server browser when searching for servers
  • -hostdescr <string> Sets a brief description of the server, which will be visible when players browse for game servers. Use double quotes (") for descriptions containing spaces.
  • -maxplayers <int> Max players allowed in a game (default is 128)
  • -dedicated [address] Run as a dedicated game server (i.e. no game window)

Specifying levels

  • -levels <level 1> [level 2]... Note that all remaining items on the command line will be interpreted as levels, so this must be the last parameter.
  • -leveldir <folder or subfolder> Loads all levels in specified system folder, or a subfolder under the levels folder. Levels will be loaded in alphabetical order by level-file name. Admins can create custom level lists by copying selected levels into folders or subfolders, and rename the files to get them to load in the proper order.

Please see Hosting a game for more information about specifying levels.

Specifying folders

(Most of this section only applies to release 013 and above)

  • -leveldir <folder or subfolder> See previous section for details

All of the following options can be specified with either a relative or absolute path. They are primarily intended to make installation on certain Linux platforms more flexible; they are not meant for daily use by average users.

  • -cachedir <path> Folder where cache files are stored
  • -inidir <path> Folder where INI file is stored
  • -logdir <path> Folder where logfiles will be written
  • -scriptsdir <path> Folder where Lua helper scripts are stored
  • -robotdir <path> Folder where robot scripts are stored
  • -screenshotdir <path> Folder where screenshots are stored
  • -sfxdir <path> Folder where sounds are stored

The easiest way to configure the user data settings is with the rootDataDir setting.

  • -rootDataDir <path> is equivalent to setting the -inidir, -logdir, -robotdir, -screenshotdir, and -leveldir parameters. The application will automatially append "/robots", "/screenshots", and "/levels" to path as appropriate.

If you set both -rootDataDir and, say, -inidir, the value specified with -inidir will take precedence.

Resolving the level folder

Actually resolving the level folder can get fairly complex. Generally, we prioritize things specified on the command line over those set in the INI file, and, generally, we prefer specific settings (-leveldir) over more general ones (-rootdatadir).

Here is a pseudo code version of how the various variables interact. Working from top to bottom, the first item that produces the name of an existing folder will be used.

rootDataDir is specified on the command line via the -rootdatadir param
levelDir    is specified on the command line via the -leveldir param
iniLevelDir is specified in the INI file


If rootDataDir is specified then
    If levelDir is also specified
       levelDir       ==> will have the effect of ignoring rootDataDir
       rootDataDir/levels/levelDir
       rootDataDir/levelDir 
    End
	
    rootDataDir/levels
End	   ==> Don't use rootDataDir
     
If iniLevelDir is specified
   If levelDir is also specified try
       iniLevelDir/levelDir
   End	
   iniLevelDir
End	 ==> Don't use iniLevelDir
     
levels  ==> subfolder of "current" folder

If none of the above exist, you will be unable to host a game or edit levels.

Developer-oriented options

  • -loss <float> Simulate the specified amount of packet loss, from 0 (no loss) to 1 (all packets lost) [I think range is correct...]
  • -lag <integer> Simulate the specified amount of server lag (in milliseconds)
  • -jsave <string> Record a game to a journal for later playback. Specify where to save the game. Useful for demonstrating and reporting bugs or other issues.
  • -jplay <string> Play back a journaled game. Specify the playback file name. May no longer work.
  • -forceUpdate Tricks game into thinking it needs to update.

Advanced server management options

  • -sendres <server address> <admin password> <resource name> <level|levelgen|bot> - Send a resource to a remote server. Address must be specified in the form IP:nnn.nnn.nnn.nnn:port. The server must be running, have an admin password set, and have resource management enabled (in the [Host] section).
  • -getres <server address> <admin password> <resource name> <level|levelgen|bot> - Retrieves a resource from a remote server, using the same arguments as -sendres.

Notes:
<param> denotes a required parameter
[param] denotes an optional parameter
address is an address in the form ip address:port. (e.g. 192.168.1.55:25955)
string means a parameter consisting of some combination of letters and numbers (e.g. BoronNoggin)
integer means an integer number must be specified (e.g. 4)
float means a floating point number must be specified (e.g. 3.5)