See also: Manual/Console Commands

The "Command console" is a powerful command-line user interface that allows you to set many options, including those that are not visible in the menus. The console from Quake 3 has been improved by ioquake3, with a better "autocomplete" feature.

The console[]

To "pull down" (show) the console press Shift+Esc. You might find other places that say press: ~, ', `, ½, ^, §, \ or æ but Shift+Esc works on most keyboards. Note: it has been reported that "Microsoft eHome" keyboard drivers could cause problems in pulling down the console.

For example:
Model change: /seta model "sergei/red"

Model head change: /seta headmodel "skelebot/red"

Key function: /bind <key> <here what you want to do>
(e.g. /bind g say "Hello" (when you press 'g', you'll send a message "Hello"))

What you can do?
Say sg: /say "Hello"

You can use up and down arrows to see previously used commands. You can use PageUp/PageDown keys to scroll view (to see previous messages). If you scrolled back the console, it will not scoll automatically when new messages are added (not even if you close and open it again): you have to scroll it to the bottom (to the last line), and it will return to act normally (showing the last messages as they are added). You can use Ctrl+Home and Ctrl+End keys to reach the top and the bottom of the log immediately.

You can use the "tab" key to autocomplete some commands. For example, if you write /map and press tab, you will see there is also a command called map_restart; if you write \map_r and press tab, the command will be completed to \map_restart; if you write \map a and press tab, you will see the list of all the maps where the name begins with "a".

Writing a variable name without setting its value will return the present value, and often also its "default" value. Warning: you should check default values after starting a match... if you check them from main menu, before having entered a match, previous value stored in your config file may be erroneusly indicated as "default" one, and some variables could even be referred as not existent.

Note: make the command begin with / or \, or it will be considered a simple text message, like with the command "/say" (having no effect, but shown to other players). When using the specific dedicated server executable (oa_ded), instead, you do not need the slash before the command.

Command names usually are case-insensitive (e.g.: both \map_restart and \MAP_RESTART will work), but some of them may be case sensitive.

You can press Insert (Ins) keyboard key to switch between text insert and overtype modes.
You can paste text from your Operating System clipboard into OA command console (e.g. Shift+Ins). Very useful to paste a server address:port to be used with /connect <ip:port> command.

Console log[]

You can scroll console log with PageUp/PageDown keys, but sometimes it is useful to check its output in a text editor.

  • You can export current console log to a text file, simply using the command \condump <filename>. For example, if you type \condump test.txt, a text file called test.txt will be created in your homepath\baseoa (or homepath\current_mod) folder, containing all the messages you currently have in your console.
  • It is also possible to use /logfile <number> to have the game start creating a text file containing all console output that will follow: 0=no log; 1=buffered; 2=continuous. "Buffered" means that the file on the disk is actually updated after a specific amount of data accumulated in memory: this allows to make less disk access, but may lose most recent lines of log in case of program crash. Default value is 0. May be useful for debugging server crashes. It creates a log file named qconsole.log in your homepath\<mod in use when you enabled it> folder.
    If the game crashes on startup, you may find it useful to enable logfile directly from from OS command line/shortcut (e.g. openarena.exe +set logfile 2).
  • In some cases, if the game "crashes" forcedly shutting down itself, the window informing you of the error may ask you "Copy console log to clipboard?": if you select "yes", console log will be copied to your operating system clipboard, and you will be able to "paste" it into a text file, using a text editor program.
  • In some cases you may find a "crashlog.txt" file in your homepath\<mod folder> after a crash.
  • Also, SDL library may automatically create a file named stderr.txt (along with a file named stdout.txt), not related to your "logfile" value (stderr.txt is created by the SDL library, not by OpenArena engine). It gets standard text output generated by the game, typically the command console log, so it may be used as an alternate way to log console. Creation or not of such file depends from the options SDL library has been compiled with. It is placed to the "current folder" (usually, where OA executable is -your "basepath" folder-, but may differ); of course, it needs the user account which runs OpenArena has got write permission there. Usually, this file is continuously updated and is overwritten every time you launch OpenArena.

Set variables[]

To set a variable, you can usually simply write \<variable> <value> in console. It works if the variable (also known as "cvar") was first declared in C source code, and usually it is the case, but sometimes you may need to use particular commands to set a variable:

  • /set - Sets a cvar from console, even if it wasn't declared in C code. If the variable did not already exist in your q3config.cfg file, it will not be stored when closing the game.
  • /setu - As set, but the variable is flagged as "userinfo". May be used in some special cases like with GTV to specify settings that GTV has to set as a client when connecting to a server (such as /rate).
  • /sets - As set, but the variable is flagged as "serverinfo" (Quakestat and similar tools will show it in the serverinfo. This means that you can decide to allow players to know about some of your server options -for example some special game options-, from dpmaster web page, Qtracker and similar.). It may be very useful, but the only problem is that there is a limit on the data that can be passed through this method: if you see an "Info string length exceeded" message in your server console, this means that you have set too many variables as "sets", so to fix that you either have to set less variables as "sets", or you should shorten them (the data contained inside the strings). After you see it, if you make your init string even longer, adding more or longer "sets" variables, your server may even become inaccessible for players.
  • /seta - As set, but the variable is flagged as "archived" (will be saved using /writeconfig, and in general while closing the game).

After you "created" a variable with a "set" or similar command, then you can update it also without using the "set" command. A new variable created with "set" command probably will not be stored after you exit the game, while it would be stored permanently if you created it using the "seta" command.
Maybe some variables may not be stored into the q3config.cfg file, even if you used the "seta" command... remember that you can store and automatically load additional variables and commands creating a text configuration file named autoexec.cfg in your baseoa folder. Everything in the "autoexec.cfg" file will be executed everytime you launch OpenArena. It is possible to delete a variable from your .cfg file, simply editing it with an external text editor program.

Note: in the source code, some variables may be flagged as "archive" (so they will be saved in your config by default), while others not (so they will return to their default values the next time you will launch OpenArena).

It is possible to use the \unset <variable> command to delete (that is a different thing than setting to empty "") a user created variable (does not work with pre-defined variables, e.g. "name"). If the variable did already exists in your q3config.cfg file -e.g. you previously created it with "seta"-, you need to use /writeconfig q3config.cfg before closing the game to delete it from the file. Or you may delete it with a text editor.

It is possible to use the \reset <variable> command to set a variable to its default value again. Works with variables that have a default value defined (note: if you create a user-defined variable, it does not have a "default" value -if you immediately try "reset <variable>", it has no effect-, but if you save it using "seta <variable> <value>", then close and open OpenArena again, then the previously used value of that variable will be considered as its default: if you then try "reset <variable>", it will restore that value.).

Note: sometimes it is possible that you may find some variables, specific from some mods you have used, also stoered in the q3config.cfg file in your baseoa folder (while they are usually stored in the configuration file in the mod's folder). Don't be surprised if they have not effect under baseoa.

You can set variables also form OS' command line, when launching OpenArena: for example, under Microsoft Windows, you can use its "command prompt", batch file or link, to start a mod directly (openarena.exe +set fs_game missionpack will launch The Mission Pack mod).

You may notice some variables may result as cheat-protected or read-only when you try to modify them, or you may not be able to edit them for other reasons. In some of these cases, you may be able to change them only after loading a map in development (cheats enabled) mode (/devmap <mapname>), or by using the OS command-line (while launching OpenArena); there are even some that can be changed while playing a demo... and some simply show infos so there is no reason to try to change them. Some variables may be locked by videoflags locks. There may even be a few "hard-coded" locks in the engine that would show a variable as freely editable, while instead the value shown is ignored and a predefined one is used instead (it is the case of cl_yawspeed on official 0.8.5 and 0.8.8 binaries).

It exists the \cvar_restart command that flushes all of your custom variables.... and many pre-defined ones, bringing them to their default values, except those which are flagged as "cvar_norestart" in the source code). WARNING: this one is a "dangerous" command, similar to deleting your q3config.cfg file. Don't try it unless you backed up your configuration: it does not ask any confirmation, and it will delete your statistics, player settings, unlocked single player deathmatch tiers... Please notice that it does not affect all of your mods, since each mod has got its own q3config.cfg file.

Remote control[]

See also: Manual/Multiplayer and Servers

You can set a password to remotely connect and change your server options when you are not physically working on the server machine.

To do this, first set a "rcon password" on your server. Just use \rconpassword <"your_password"> command (obviously, select the password you wish). If you don't set a password, you will not be able to remote control your server thorugh rcon.

Then open a standard OpenArena client and simply connect to your server as any player. Use \rconpassword <"your_password"> to enter the same password you set on the server before. Then use \rcon <command> <parameters> to execute a command on the server.
For example, \rcon fraglimit shows server's current "fraglimit" value, and \rcon fraglimit 20 sets that value to 20.

You don't even need to connect to the server as a client to be able to send remote commands to it. This is very useful if your server is full (all player slots busy) and you can't connect to it. In this case, just start an OpenArena client and, without entering a server, use \rconaddress <your_server_address> (or \rconaddress <address>:<port>) to set the IP of your server and \rconpassword <your_password> to set the same password as your server, then use \rcon <command> <parameters> to send commands to your server.

Warning: do not use "\sets" command to set rconpassword, or everyone will see it in the \serverstatus!
Furthermore, in case you set up automatic downloading with http redirection ("fast downloading"), be sure that no configuration files containing your "rconpassword" are available through http![1]

Tip: some additional tools may help you controlling your server, such as the "!admin system".[2]

Some commands[]

Here there are some commands and variables:

  • /map <mapname> - loads the specified map.
  • /devmap <mapname> - loads the specified map with cheats enabled.
  • /spmap <mapname> - loads the specified map in "single player" mode (g_gametype 2), already with bots inside.
  • /spdevmap <mapname> - loads the specified map in "single player" mode (g_gametype 2), already with bots inside, and with cheats enabled.
  • /cg_fov <number> - (default is 90) This changes the field of view: if you set it to 120 or so, you will have a wider visual angle (but the world will seem a bit deformed)
  • /map_restart - restarts the current game. You will have to do this to apply some changes. By default, match will be restarted after 5 seconds (players will be informed by a countdown), however you can set a shorter or longer delay by specifing a number, e.g. /map_restart 2 will restart after two seconds, /map_restart 10 will restart after ten seconds, /map_restart 0 will immediately restart with no warning.
  • /cg_drawfps - if enabled (1), shows current frames-per-second.
  • /cg_drawspeed - if enabled (1), shows your current horizontal speed. It was not in the original Q3A, however some of its mods implemented similar commands (example: Alternate Fire used /cg_speedometer 1 for that).
  • /connect <server ip:port> - Allows you to join the specified server.
  • /disconnect - Disconnects you from the server, returning to main menu. Similar to "Leave arena" option in ESC menu.
  • /quit - Exits from the game completely.
  • /sv_pure <0 or 1> - If enabled, the server does checks to allow clients to use only the .pk3 files (those containing, for example, game logic, models and textures) that are present also on the server, ignoring the others. This ensures that the client uses files that are compatible with the server preventing a lot of compatibility problems. If disabled the clients are responsible for only having compatible files. Some consider this an anti cheat although technically that is a side effect. Disabling, instead, allows clients to use custom pk3s, for example their own models (in this case, that non-standard model will be seen only by other players with the same addon pack: other clients will see a standard model instead). "Pure server" can be disabled also during testing, because disabling it allows to load data like maps and models also if not packaged into pk3 files. OpenArena uses sv_pure to unload and reload patch files as needed; it is sv_pure that allows a 0.8.5 client to connect to a 0.8.1 server: without it, the two versions would not be compatible. A general rule is that sv_pure should always be 1. Do not report bugs that are caused by turning off sv_pure.
  • /shuffle - Restarts the map and automatically rearranges teams (how human players are divided into the two teams). It can be used via callvote during team game modes.
  • /vstr <variable> - Runs a variable previosly set to contain one or more commands. Usually used in map rotation scripts. An example: commands specified with /set var1 "bot_minplayers 3; g_gametype 0; map wrackdm17" can be later invoked with /vstr var1.
  • /exec <filename.ext> - Executes a configuration file. You can create multiple plain text files (which may have even just a bunch of commands and variables in them) in your baseoa (or current mod) folder and "exec" them in order to quickly apply the commands they contain, quickly modifying the configuration of your server. A few examples: /exec rotation_script_1.cfg; /exec rotation_script_2.cfg; /exec enable_sunday_config.cfg) - See aso Configuration examples.
    In case you exec an "A" file which in turn execs a "B" file, when B ends, A continues from where it left.
  • /writeconfig <filename.ext> - Saves your current configuration to a file of your choice, under your homepath/current_mod_folder. Possible uses include creating a backup of your configuration, or update your q3config.cfg file to actually delete an user-created variable from it, after having used /unset <variablename>.
  • /cvarlist - Lists all your variables, with their values and attributes. It is possible to filter/search for a part of a variable name with /cvarlist *<string>, e.g. /cvarlist *home will show your fs_homepath and fs_basepath values.
  • /cmdlist - Shows the list of commands. It is possible to filter/search for a part of a command name with /cmdlist *<string>.
  • /toggleconsole - If you type \toggleconsole when the console is open, it will close it (like it would do using the apposite key). You can use \bind <key> toggleconsole to set an additional key to open the console (then type "/toggleconsole" to close it), but, unlike the standard key for that, this one will not work when the ESC menu is open or you are in some other menu instead of playing.
  • /systeminfo - Returns some info about your server settings.
  • /team - Makes you join the game or spectate (like the "Start" menu under the ESC menu). \team p or \team player enters the game. \team r or \team red enters the game in the red team. \team b or \team blue enters the game in the blue team. \team f or \team free enters the game in the smallest/losing team. \team s or \team spectator switches to spectator mode.
  • /follow <name or position> - When you are in spectator mode, makes you follow a particular player, specifying a player name or a position in the table. Examples: \follow tony will make you follow a player named "Tony", and \follow 2 will make you follow the player that is currently in the second position on the scoreboard (you will continue follow him even if his position will change). Tip: you can show the scoreboard by holding the TAB key.
  • /g_synchronousclients <0 or 1> - This have to be usually (almost always) set to 0 (its default value), and set to 1 only when you are recording a demo. Enabling it allows to record better quality demos, but it brings bad effects to your game experience (like lag), and thus you have to disable it when not recording.
  • /condump <filename>.<ext> - Exports all the current console log (all the text lines you see when you pull down the console) to a plain text file. Can be useful for debugging purposes (you can send the console log to someone that may help you). E.g.: /condump mylog.txt creates a file named "mylog.txt". You can use any file extension you wish (e.g. /condump myname.log), or even no extension at all (e.g. /condump test), however .txt and .log are commonly used. Search for the resulting file in your homepath\current mod folder.
  • /developer <0 or 1> - If set to 1, shows more debugging info to the console (a.k.a. "verbose" console output). Default value is 0.
  • /vid_restart - Restarts video system. Can be needed to apply some changes in graphic options.
  • /snd_restart - Restarts audio system. Can be useful to make sound come back if it disappeared when starting a mod (see also (here).
  • /in_restart - Restarts input drivers. Can be useful if you experience controls stop working (see also here and here).
  • /game_restart <modfolder> - This command, introduced by ioquake3, allows to load a mod from console. E.g. /game_restart missionpack loads the Missionpack mod. If entered without parameters, makes the game return to baseoa.
  • /cl_noprint <0 or 1> - If enabled, it does not write text to console (and to upper left console notification area). This hides system messages, chat messages, etc. Default value is 0.
  • /clear - Clears current console log text.
  • Commands listing used assets (might help mappers to determine which files they have to include in their pk3 files; keep in mind that results include also things not related to the map). Their output might exceed the console history length, so you may need to enable console log to be able to fully read their listings.
    • /modellist - Lists all the 3D models the game has currently loaded, or has tried to load, to be shown in the current map.
    • /shaderlist - Lists all the shaders the game has currently loaded, or has tried to load, to be shown in the current map.
    • /imagelist - Lists all the textures the game has currently loaded, or has tried to load, to be shown in the current map.
    • /s_list - Lists all the sounds the game has currently loaded, or has tried to load, to be used in the current map. Sounds with 0 size are probably missing files. It requires you to disable OpenAL enviroment (/s_useopenal 0, then /snd_restart) before you run it (you can activate OpenAL again later).
  • /wait <number> - It is possible to use wait <number> to add a delay before the next command is executed (example: g_gametype 5; wait 1000; map wrackdm17 would add a short delay before proceding to load the map). Pay attention to do not use excessively long times, as also further commands typed directly in the console will be queued! Even quitting from the main menu will have to wait for the "wait" time to end.

Key binding[]

Key binding means to associate a certain command/action to a specific keyboard or mouse button. Setup --> Controls menu (divided into look, move, shoot, misc sections) allows to configure game actions (up to two keys for a certain command), but you can use the console to create more bindings, to execute commands and set variables.

  • /bind <key> <command> - Assign a specific command to a specific key. For example, /bind i screenshotjpeg allows to press "i" key to take a screenshot. Omitting <command> parameter, shows current command binded to the key specified.
    • You can bind the execution a series of commands to a single key by separating them with ; and correctly encasing the string within " " (example: \bind f12 "cg_thirdperson 1 ; cg_draw2d 0" would go to thirdperson view and hide the HUD when pressing f12); or you may make the key binding run a custom variable (e.g. \bind <key> vstr <variablename>) or configuration file (\bind <key> exec <filename.cfg>) where you previously stored the required commands.
  • /bindlist - Shows your key bindings.
  • /unbind <key> - Removes a key binding.
    • /unbindall - Deletes all key bindings. So you may never need it. In case you used it by error, you may use "/exec default" to restore default bindings.
  • /toggle <variable> [value1, value2, ...] - "Switches" the values of a cvar, useful together with "bind" command. An example, switching between boolean (0 or 1) values: to have the weapon bar always shown, you usually have to write \cg_alwaysweaponbar 1, and \cg_alwaysweaponbar 0 to revert to the standard behavior: if you want to bind it to specific keys, you would have to use \bind f9 cg_alwaysweaponbar 1 and \bind f10 cg_alwaysweaponbar 0: F9 would enable the option and F10 would disable it; the "toggle" command would allow to use a single key instead. Write \toggle cg_alwaysweaponbar and the variable will be set to 1 or to 0 each time you enter the command: thus, if you write \bind f11 toggle cg_thirdperson, then you will have the option enabled or disabled each time you will press the F11 button. It works also with non-boolean values: if you type /bind f12 toggle cg_weaponbarstyle 0, 1, 2, 3, 4, 5, 6, 7, 8 then you will change the look of the weapon bar each time you will press the F12 key.
    • You may wish to "toggle" the values of more variables with a single key binding, in that case you may use a script like this example, that goes to thirdperson view and disables the HUD when pressing F12, then goes back to firstperson and re-enables the HUD when pressing it again, and does it with a key binding and three custom variables:
set cinemaon "set cg_thirdperson 1; set cg_draw2d 0; set cinemamode vstr cinemaoff"
set cinemaoff "set cg_thirdperson 0; set cg_draw2d 1; set cinemamode vstr cinemaon"
set cinemamode vstr cinemaon
bind f12 vstr cinemamode
A such script can be written directly in the console, or can be placed in a configuration file (such as autoexec.cfg or one you have to manually exec).[3]
The script may also include some "commands", other than cvars. As an example, here's a script which would rotate between three weapons (rocket, lightning, rail) at each pression of the "f" key (e.g. you may like something like that for Elimination mode):
set cycle5 "weapon 5; set cycleweap vstr cycle6" // Switch to rocket, prepare for next
set cycle6 "weapon 6; set cycleweap vstr cycle7" // Switch to lightning, prepare for next
set cycle7 "weapon 7; set cycleweap vstr cycle5" // Switch to rail, prepare for restart cycle
set cycleweap vstr cycle5 // Set start of the cycle to the first step
bind f vstr cycleweap // Link "f" key to the script


  • Key bindings are saved to your q3config.cfg file: it's not like user-created cvars that may be stored or not depending from whether you used "seta" or "set" command to create them.
  • Unlike "unset <variable>", "unbind <key>" does not need to later use "/writeconfig <q3config.cfg>" to delete the binding from your q3config.cfg file.
  • Knowing which was the game's default binding of a certain key requires a bit of effort.
    You may temporarily rename your q3config.cfg file from your "homepath/baseoa" folder and launch the game, so it would create it again with a clean configuration; then you may check the desired they binding, then change the name of the "clean" configuration file in order to keep it for future reference (or just delete it) and restore the name of your "good" q3config.cfg. Please pay attention in the process.
    Alternatively, you may open "default.cfg" file with a text editor and check there: default.cfg is located inside "pak0.pk3" in "your_OA_installation(basepath)/baseoa" folder. PK3 files can be opened with a compressed files (zip) viewer. Theoretically, later patches may update default.cfg and you may find a newer version of it in a pk3 file later than pak0. However, this has not happened with OA 0.8.5 and 0.8.8 patches.
  • There is no equivalent to "reset <variablename>" to automatically restore a single key binding to its default.
  • Executing "/exec default" would restore all key bindings to their default values, also deleting your bindings of keys which had no function by default.
  • A funny example of what can be done with scripts involving bind is a Jukebox script to make a key cycle between different background musics.
  • Commands starting with "+" are usually meant to be used bound to keys, as in providing their effect as long as you hold the key (e.g. bind UPARROW "+forward"). Some might still work from console, as typing /+forward is like holding the key to move and typing /-forward is like releasing it, but probably it's not so useful... and just a thing as simple as a /vid_restart is enough to disable the trick.

Special game options[]

There are various CVARs that control some additional game options, other than the main gametypes and basic game options, for example "instantgib" or "all rockets" modes. Please read Special game options for more info.

Console look options[]

  • cl_consoleHeight -> value between 0.1 and 1.0 (1.0 for full screen console; 0.5 as default)
  • cl_consoleType (default = 0; 2 = customizable semi-transparent style)
With ConsoleType 2 (for the following settings, values between 0.0 and 1.0):
  • cl_consoleColorAlpha (transparency; default = 0.8)
  • cl_consoleColorRed (default = 1)
  • cl_consoleColorGreen (default = 0)
  • cl_consoleColorBlue (default = 0)


  1. While the game can only download .pk3 files, people may still access other files using a web browser! A simple approach may be to set your web server to use a different folder as file repository (or using an external web hosting service), containing .pk3 files only... in this case, just pay attention to copy there all the additional pk3 files which are required to play on your game server. If you prefer to use the same folder for game server and http/ftp server, then set http/ftp file permissions very accurately!
  2. About the "!admin system", you may also want to check that your admin.dat and admin.log (or whatever you renamed them) aren't publicly accessible via http.
  3. Remember that if you set a variable with "seta", it will be stored to your q3config.cfg file; you can choose to do not store it to q3config.cfg file by using "set" instead -and if it has already been stored there once, you can delete it using "unset <variable>" and then "writeconfig <q3config.cfg>"-... but the key binding will be stored there in any case, so you may wish to manually "unbind" -or bind to something else- that key if you don't need the script anymore.

See also[]

External links[]