# AssaultCube: Command-line arguments

# Command-line arguments

When launching AssaultCube you can pass "switches" to allow different settings to occur on startup. Depending on your operating system there would be a different commandline-script or launcher to use (see below).
Note: Some of these options can be changed in-game through the menus without the need to manually edit the script file.

### Contents:

- HowTo: Editing the AssaultCube launcher
- Client switches
- Server switches

## HowTo: Editing the AssaultCube launcher

| Microsoft Windows In the AssaultCube folder, there is a file named "assaultcube.bat". Right click this and open it with "notepad" to edit the clients launcher. Also, after using the server wizard, in this folder will be "server_autoconfigured.bat". Right click this and open it with "notepad" to edit the servers launcher. All switches are placed after the phrase: bin_win32\ac_client.exe If you're editing the client, you'll need to add it before the phrase: %1 %2 %3 %4 %5 Remember to save once you're finished!
| Linux In the AssaultCube folder, there is a file named "assaultcube.sh". Open it with your favourite text editor, such as Gedit, Nano, etc. to edit the clients launcher. Also, after using the server wizard, in this folder will be "server_autogenerated.sh". Open it with your favourite text editor to edit the servers launcher. All switches for the client must be put inside the quote marks on this line: CUBE_OPTIONS="--home=${HOME}/.assaultcube --init" All switches for the server must be placed after the phrase: ./server.sh. Remember to save once you're finished!
| Apple Mac OS X After starting the AssaultCube launcher, under the "main" tab of the AssaultCube launcher is an "Advanced options" bar. You can type all the switches you need for the client into there. Also, under the "server" tab of the AssaultCube launcher is an "Advanced options" bar. You can type all the switches you need for the server into there.

## Client switches

These variables are specifically for the clients launcher, not the server. Switches are case-sensitive!

-wX | Sets desired screen width to X, default is -w1024.
-hY | Sets desired screen height to Y, default is -h768.
-t | Runs AssaultCube in windowed mode (fullscreen off). Using -t1 you can explicitly force fullscreen mode.
-zN | Sets the z-buffer precision to N bits. This should be at least 24 or you may experience depth problems.
-bN | Sets the screen to N bits per pixel.
-sN | Sets the stencil buffer precision to N bits. This should be 8 to enable shadowing effects, or 0 to turn it off (the default).
-aN | Sets FSAA (Full Scene AntiAliasing) to N samples (i.e. -a4 is 4xFSAA).
-vN | Enables vsync if N is greater 0.
-mM | Sets the client to update itself against masterserver M. M is the base url of the master server, the default is -massault.cubers.net
-eC | Executes the command C at startup (i.e. -e"say hello"). Look into the reference for all possible commands.
--init | Executes the init script before starting the graphics and sound subsystems (recommended). By default the script config/init.cfg is used, but you can override this setting by using --init=yourfile.cfg
--version | Prints out the version of AssaultCube (i.e. 1.103). After submitting this switch the game will not start.
--protocol | Prints out the protocol of AssaultCube (i.e. 1132). After submitting this switch the game will not start.
--mod=PATH | Adds the specified path to the list of directories that are searched when loading resources. Use this to add your own mods in a clean way without placing files into the main directory.
--home=PATH | Specifies the home directory for the user profile, AssaultCube will write custom settings and files to this directory (recommended).
--loadmap=FILE | Initializes the game with the given map (i.e. --loadmap="ac_desert").
--loaddemo=FILE | Playbacks the given demo file at startup (i.e. --loaddemo="LSS_ac_desert_2010.10.17_1750_4mr").
-T | Add timestamp to every console log line.

## Server switches

These variables are specifically for the servers launcher, not the client. Switches are case-sensitive.

-d | This starts an AssaultCube client binary as a dedicated server. The default is a non-dedicated server with only a single client in graphical mode. See the Server Section. You don't need this parameter, if you're using the server binary.
-uN | Sets the server upstream bandwidth (per player) to N bytes per second. only set this parameter if you know what you are doing, specifying a wrong value is worse than not specifying it at all.
-nS | Sets the server description, for people pinging the server. This usually does not need to be set if you have a descriptive domain name already, but if you set it, keep it short as it may otherwise be truncated, i.e. -nBobsInstagibServer
-n1S | Sets a server description prefix.
-n2S | Sets a server description suffix.
| To enable the admin to temporarily change the server description, a server description prefix and/or suffix needs to be set. If the admin executes the command /serverdesc DESC, the server description will be changed to "prefixDESCsuffix". At the end of the game, the default server description (set by -n) is restored automatically.
-iIP | Sets the server ip to IP. This option is only useful for people running servers on machines with multiple network interfaces. Only use this switch if you really know, what you are doing.
-fPORT | Sets the server base port to PORT. An AC server always uses 2 UDP ports: PORT & PORT+1. The default ports are 28763 and 28764. You need to use different ports, if you want to run several servers on the same machine (with one IP address). For example, use -f28765 for a second server.
-NID | Sets the log identity to ID. By default, the log identity is 'IP[port]'. On linux systems, the log identity is used for the syslog to identify server log entries. On windows and apple systems, the log identity is used to create the server logfile filename.
-Fn | Sets the syslog facility to n. Values from 0 to 7 are allowed to use the facilities local0..local7. By default, local6 is used. For further information, check the documentation of your installed syslog daemon.
-T | Add timestamps to every line of the console and file logs.
-LFn | Sets the logging level for file logs to level n. On linux systems, this switch can be used to enable (additional) file logging. The following levels can be selected:
0 | DEBUG: logs all messages
1 | VERBOSE: logs all messages of level VERBOSE and above (same as console log, when using the -V switch)
2 | INFO: logs all messages of level INFO and above (same as console without -V switch), default on windows or mac systems
3 | WARNING: log only messages of level WARNING and above
4 | ERROR: log only messages of level ERROR
5 (or above) | do not log to file (default on linux systems)
-LSn | Sets the logging level for syslog logging to level n. This switch is ignored on non-linux systems. The following levels can be selected:
0 | DEBUG: logs all messages
1 | VERBOSE: logs all messages of level VERBOSE and above (same as console log, when using the -V switch)
2 | INFO: logs all messages of level INFO and above (same as console without -V switch), default
3 | WARNING: log only messages of level WARNING and above
4 | ERROR: log only messages of level ERROR
5 (or above) | do not log to syslog
-mM | Sets the server to register itself against masterserver M. M is the base url of the master server and has to end in a / and without a http:// prefix, the default is masterserver.cubers.net/cgi-bin/AssaultCube.pl/. If you want your server to be private and not report to the masterserver, use -mlocalhost.
-pPASS | Sets the server password to PASS. Only clients that use the command "/connect IP PORT PASS" will be able to connect.
-cN | Sets the maximum number of players that can play on this server to N (default 6). If more players try to connect they will get a "server full" message.
-xM | Sets the admin password. If you don't want your commandline to contain the password, or if you need more than one admin password, use the file "config/serverpwd.cfg".
-Xf | Sets the admin password file. The default is -Xconfig/serverpwd.cfg
-rC | Sets the maprotation file. Example: -rconfig/maprot.cfg
-Bf | Sets the blacklist file. The default is -Bconfig/serverblacklist.cfg
-Kf | Sets the nickname blacklist file. The default is -Kconfig/nicknameblacklist.cfg
-gf | Sets the forbidden words file. The default is -gconfig/forbidden.cfg
-If | Sets the serverinfo text filename prefix. The default is -Iconfig/serverinfo. The server adds `"_en.txt"` to the prefix to complete the filename.
-Of | Sets the "Message of the day" (MOTD) text filename prefix. The default is -Oconfig/motd. The server adds `"_en.txt"` to the prefix to complete the filename. The MOTD will only be read from file, if no static MOTD is given on the commandline ('-o').
-oN | Sets the server's "message of the day" (MOTD).
-kN | Sets the kick threshold. If a players score drops below it, he will be kicked automatically (default: -5).
-kAN | Sets the kick threshold (in seconds) for the "Away From Keyboard" autokick. This autokick happens only if the server is OPEN (not PRIVATE and not MATCH), there are more than 4 players in the game, and affects mainly the teammode games. The server assumes chatting people and spectators as AFK. If the value is set less than 30, the AFK autokick is disabled. (default: 45).
-kBN | Sets the minutes a banned player will stay banned on the server (default: 20).
-yN | Sets the ban threshold. If a players score drops below it, he will be banned automatically (default: -6).
-PS | Sets the required role to call specific votes. The two possible player roles are 'player' and 'admin'. 'S' is a string of characters to set vote role requirements per vote type. A lower case character enables the vote call for normal players, an upper case character sets the vote call to require an admin. If a character does not appear in the string, the default setting is used. The following votes can be adjusted:
k | kick players
b | ban players (and remove bans)
m | change mastermode (open/private)
f | force a player to the other team
a | enable/disable autoteam
s | shuffle the teams
r | record a demo of the next game (if autorecording is disabled)
c | clear all demos on server
d | change server description
e | vote for coopedit mode
p | vote for a gamemode that is not supported by the map (default: no one can)
w | vote to kick/ban for "weak" reasons, i.e, the other player is not obviously lagging, nor teamkilling, nor spamming, nor cheating (as far as the server can detect it)
For example: -PbmA enables ban & mastermode to be voted by normal players but only admins can change autoteam. The '-P' parameter can be used several times on the commandline. For example, '-Pb -Pm -PA' is equivalent to '-PbmA'. The default settings are: "fkBMasRCDEw".
-Amap | Restricts voting for a map/mode to admins. Mapname and modenumber (if specified) are separated by '#'. This switch can be used several times. Example: -Aac_desert#13
-MS | Sets the required role for sendmap actions. The two possible player roles are 'player' and 'admin'. 'S' is a string of characters to set role requirements per action type. A lower case character enables the sendmap action for normal players, an upper case character sets the sendmap action to require an admin. If a character does not appear in the string, the default setting is used. The following sendmap actions can be adjusted:
c | create new map (initial map upload)
u | update existing map (with same or newer revision)
r | revert existing map to older revision
d | delete map (default: no one can)
For example: -MCuD enables updating maps for normal players but only admins can create or delete maps. The '-M' parameter can be used several times on the commandline. For example, '-MC -Mu -MD' is equivalent to '-MCuD'. The default settings are: "CRU". Note: Only maps in the 'incoming' folder are affected. Maps in 'official' and 'servermaps' are treated read only.
-Zi | Sets the incoming limit of maps in MegaBytes being sent to the server. If the the size of all maps in the 'incoming' folder exceeds this limit new maps will be rejected (default: -Z10).
-Dn | Sets the maximum number of recorded demos to be held in server RAM. Every game will be recorded. The recorded demos will be held in RAM. By default, up to 5 demos will be kept. To disable automatic demo recording, set the number to 0. The oldest demo will be deleted automatically if necessary, to allow recording of further demos. To change the default of 5 demos in RAM, you can add the number of demos to the parameter, e.g. -D5
-DI | Limit the demo downloading to intermission (it doubles the intermission time if someone is downloading a demo).
-Wf | Sets a path (and optional filename prefix) to write all recorded demos to. The example -Wserverdemos/mydemo would save all demos to the directory 'serverdemos' and prefix the filenames with 'mydemo'. The filename will contain the (optional) prefix, the (encoded) time, game mode and map. To set a path without filename prefix, use -Wpath/. A prefix without path can be set by -Wprefix. The server owner has to take precautions that the demo files don't fill up the filesystem - especially, if permanent demo recording is also enabled (switch '-D').
-SW | Starts the server as windows service and sets the name of the windows service that should be used. Works only for the server binary is started directly from the windows service manager.
-Cf | Reads commandline arguments from a file. For example, -Cconfig/servercmdline.txt will read arguments from that file. Only one parameter per line is allowed. Empty lines, and any text after '//' will be ignored. The file is only read once at server startup; changing the file's content will not affect a running server. See config/servercmdline.txt for additional info. No file is read by default.
-V | Sets the server to verbose mode. This enables additional log messages to be printed, including the server configuration files (after parsing). Using this switch twice will also enable logging of DEBUG messages. Be careful: the logfile will contain all content from serverpwd.cfg.