Steam Console Commands

The developer console an essential tool for game developers for debugging their code and also for players to customize their settings. The console is a text-based input/output interface to execute commands or change global settings during runtime. To enable the console, start the game, and go to "Options"-> "Keyboard" -> "Advanced" and check "Enable developer console". By default the console can be opened/closed with the "~" key.

The console is also enabled when the game executable is started with the "-dev" or "-console" parameters (developers should always start the game with -dev). If the Source Engine is started with an attached debugger, the console output is shown in you debug output window. Starting HL with "-condebug" will also log all console output in the text file "console.log" located in your game directory.

After entering a new command into the console, it is executed by hitting the ENTER key or pressing the 'Submit' button. A command has a unique name and an optional list of parameters where each parameter is separated by a space character.

The syntax is: command <parameter1> [<parameter2>] for example:

bind mouse1 +attack
map dm_lockdown

Command names are not allowed to contain spaces, if a parameter contains space characters, it must be encapsulated in quotes:

bind h "say hello world"
name "Gordon Freeman"

The console stores the last executed commands in a command history that is accessible with UPARROW and DOWNARROW keys. You can auto complete a command by pressing TAB and choose from a list of available commands if the console found multiple matches. Some commands (e.g. map, load etc) support auto completion for the first parameter too.

The console differs between console commands and console variables. Console commands usually pass the parameters to some code function and execute it, but they don't remember these parameters. Console variables store the last parameters like a global setting. Console variables can only have one parameter, which can be a number or string; it depends on the game code how these values are interpreted. A lot of console variables act like triggers, 0 usually means off and 1 means on (e.g. cl_showfps). To see the current value of a console variable just type the name without any parameters.

Most console commands and variables have prefixes in their name to show the subsystem they belong to. That isn't always the case especially for commands coming from Half-Life 1, where the old name was kept unchanged.

Commonly used console command prefixes are:

ai_ single player AI
cc_ close caption system
cl_ multiplayer client
demo_ demo playback
disp_ terrain displacement maps
dsp_ audio DSP settings
ent_ entity control/debug
fire_ firing entity events
fog_ fog renderer
g_ single player game
hltv_ Half-Life TV
host_ host system
hud_ client HUD
joy_ joystick input
log_ logging system
m_ mouse input
mat_ material system
mp_ multiplayer game (server)
nav_ navigation graphs
net_ engine networking
npc_ single player game NPCs
phys_ physics system
r_ video renderer
rcon_ remote control access
sk_ player skill / difficulty
snd_ sound system
sv_ server settings (engine)
v_ client view
vgui_ VGUI
voice_ ingame player voice
vprof_ code profiler
wc_ WorldCraft/Hammer helpers

If you forgot the exact name of a command or variable, find <substring> shows all commands containing a given substring. The command help <command> shows help text for a given command (if available).