From ZDoom Wiki
Jump to navigation Jump to search
Warning: You are viewing an archived version of the Console Commands page, which has been replaced with the Console page and individual category pages for CVARs and CCMDs. This page will generally not be seen by the viewing public, and will not be updated in the future.

Console Commands are used to alter the way ZDoom does something, such as changing the sound volume, changing DMflags, etc...

You can run console commands at the start from command-line by beggining them with + signs (eg. zdoom.exe +sv_cheats 1)

You access the console by pressing "~" at any time. (This depends on your keyboard layout, for German keyboard, it is "^", but to summarize it, it is the key above TAB.)

Console variable types

There are six types of cvars: Boolean, Integer, Float, String, Colour and Flag.


This type of variable represents a yes/no or on/off value. It can only be set to true or false. As shorthand, setting a boolean variable to 0 will set it to false, and setting it to anything non-zero will set it to true.


This is an ordinary number without a decimal point. For example, 1 is an integer, but 1.2 is not.


This is an ordinary number that can have a decimal point.


This is a series of text characters enclosed in quotes: For example, "Felix loitered lecherously on the lot" is a string. If you removed the quotes around it, then it would not be a string. If you need to use quotes inside a string, preface it with a backslash.

Are you "The One" of old?

would be written like this as a string:

"Are you \"The One\" of old?"


This type of variable is a series of three hexadecimal numbers representing the amounts of red, green, and blue (in that order) in a color. For example, pure red would be represented as "ff 00 00". As a shorthand, you can set a color variable with one of several color names, and the RGB values will be set for you. (EDIT: That's just a string, i.e. testcolor "ff 00 00")


This type of variable mirrors a setting in dmflags or dmflags2. Setting its value will set the corresponding value in one of those variables, and getting its value will get the corresponding value from one of the other two variables. This is designed to make using dmflags easier, because you don't have to memorize any numbers.

Button Commands

Button commands are commands that represent buttons and come in pairs. Each "button" has a command prefixed by a + and another corresponding command prefixed by a -. The + version of the command simulates pushing the button, and the - version of the command simulates releasing the button.

When you bind a command that begins with + to a key, releasing the key will automatically execute the same command with the + replaced by a -. Note that this works for aliases as well as the commands listed here. This provides a useful way to bind multiple actions to a single key. Suppose you want the normal Doom behavior of moving forward and using when you double click the right mouse button. If you use the commands

bind mouse2 +forward
doublebind mouse2 +use

ZDoom will move you forward when you press the right mouse button. When you double click it, you will press use, but you will not move forward. To simulate the standard Doom behavior, you can replace the doublebind command with these three commands instead:

alias +useforward "+use; +forward"
alias -useforward "-use; -forward"

doublebind mouse2 +useforward

Now when you double click the right mouse button, the +useforward alias will be executed. Because +useforward's name begins with a + releasing the right mouse button will execute the -useforward alias (whether or not -useforward is defined).

This behavior of executing a - command when a key is released applies only to the first command or alias bound to the key. If you bind a key to "+forward; +right", releasing the key will execute the command "-forward; +right" and not "-forward; -right". As shown above, you can use aliases to get the correct behavior.

Another trick you can do with aliases is to create a key that only executes the + command without executing the - command. If you wanted a key that will make you move forward when you press it, and will keep you moving forward even after releasing it, you can use an alias like this:

alias go "+forward"

Then instead of binding +forward to a key, you bind go to the key instead. This works because go does not begin with a + so nothing will happen when you release the key. ZDoom only looks at the command actually bound to the key to determine if it should execute a - command when the key is released; it does not look inside aliases.

Non-Hexen Weapon Packs and Hexen

Since it is possible to make weapon packs and player classes that work in any game, you may want to use the same generic set of key bindings for all games; in Hexen, this is absolutely necessary because the higher numbered keys are used to activate Hexen specific powerups instead of weapons (HeXen only binds four weapon slots by default).

To do this, first create the file autoexec.cfg if you don't already have one. Then set the key bindings to your taste in the controls menu of one game (for example, DOOM II) then edit your zdoom ini file and copy the key bindings section that you set, for example "Doom.Bindings", into autoexec.cfg. Delete the section header "[Doom.Bindings]" and replace the end of each copied line with a double quote symbol ("). Then replace all equals signs in the copied lines with a space followed by a double quote symbol ("). After all of that, lowercase all named keys and replace "leftbracket" with "[", righbracket with "]" and "equals" with "=".

For example, in [Doom.Bindings] you might have 1=slot 1 and this should become bind 1 "slot 1"; in the same way, Equals=sizeup should become bind = "sizeup".

Standard buttons

Use your weapon.
Stop using your weapon.

Start trying to use anything in front of you.
Stop trying to use anything in front of you.

Move backward.
Stop moving backward.

Move forward.
Stop moving forward.

Start jumping.
Stop jumping.

Start turning left.
Stop turning left.

Start turning right.
Stop turning right.

Start strafing left.
Stop strafing left.

Start strafing right.
Stop strafing right.

Start lowering your view.
Stop lowering your view.

Start raising your view.
Stop raising your view.

Start moving down if swimming or flying.
Stop moving down.

Start moving up if swimming or flying.
Stop moving up if swimming or flying.

Causes +left and +right to behave like +moveleft and +moveright.
Returns +left and +right to their normal behavior.

Causes +forward and +back to act like +lookup and +lookdown instead.
Returns +forward and +back to their normal behavior.

Moving the mouse up and down will make you look up and down.
Moving the mouse up and down will make you move forward and backward. However, if freelook is true, then moving the mouse up and down will still change your view instead of moving you.

Display a scorelist for deathmatch games.
Hide the deathmatch scorelist.

Start running.
Start walking.


addkeysection (menu-heading) (ini-section-name)

This command does two things. First, it adds a new heading called menu-heading to the controls menu. You can use the addmenukey command to add your own custom keys beneath this heading. Second, it loads all the bindings from the corresponding ini-section-name section in zdoom.ini. You can use this command multiple times to create different sections in the menu and ini for different sets of commands. If you use a menu-heading that was already added to the menu, new controls added with addmenukey will appear at the end of that section, but the bindings will not be reloaded from the ini.

addmenukey (description) (command)

Adds a new control to the controls menu. Description is the name of this control in the menu, and command is a console command or alias to be executed when the control is pressed. New controls are added to the last section specified with addkeysection.

addslot (slot) (weapon)

Adds a single weapon to the list of weapons in a weapon slot.

alias [new-command] [command-string]

If specified with no parameters, will display a list of all current aliases. If only new-command is specified, it will be removed from the list of aliases. If command-string is also specified, it will be added to the list of aliases as new-command. For example, to create a new command to kill the monsters on the level, you can use the command:

alias massacre "kill monsters"

Then you can use the newly created massacre command to kill all the monsters on the level. You can use ; to add more commands:

alias weirdness "kill monsters; Give all; Summon doomimp"

That would kill all monsters, give you all invertory and summon an imp. You can use wait (tics) to put a delay between commands. Example:

alias "kill monsters; Give all; wait 10; Summon doomimp"

Which would kill all the monsters, give all, wait 10 tics and then summon an imp. Also if you run out of space for the alias you can link to another alias. You can easily change your alias by editing your zdoom ini file.

archivecvar (cvar)

When you create a custom cvar with the set command, it will not normally be saved in the ini. You can use archivecvar after creating the cvar to indicate that the custom cvar's value should persist even after you quit.

atexit [command]

If you specify a command, it will be added to a list of console commands to execute when the user quits the game. Commands are executed in the reverse order that they were added in. If you do not specify any arguments to atexit, then it will list the current set of commands that will execute when you quit.

bind (key [command string])

If no parameters are specified, the entire list of bound keys will be printed to the console. If only [key] is specified, the binding for that specific key will be printed. If both [key] and [command string] are specified, [command string] will be bound to [key].


Binds all keys to their default commands. This will not unbind any keys that do not have any default bindings, so if you want to properly restore the default controls, you need to use unbindall first.

defaultbind (key [command string])

Binds command to the key if and only if key is not already bound and there are no keys already bound to command.

doublebind (key [command string])

This command works just like bind, except it controls the action that occurs when a key is double-clicked. If a key does not have a doublebinding, then double-clicking it has the same result as pressing it twice. Otherwise, the first press will execute the normal command set with bind, and the second press of the double-click will execute the command set with doublebind.

eval expression [variable]

Evaluates a mathematical expression and either prints it to the console or stores it in variable. Expressions are written using prefix notation instead of the more common infix notation. Basically, you first specify what you want to do (the operator) and then what you want to do it to (the operands). You must separate operators and operands with spaces.


To compute 2+2:

eval + 2 2

To compute 5-3:

eval - 5 3

To compute 2+(5*6):

eval + 2 * 5 6

To decrease the number of screenblocks:

eval - $screenblocks 1 screenblocks

The supported operators are:

+ a bAdds a and b.
- a bSubtracts b from a.
* a bMultiplies a and b.
/ a bDivides a by b.
% a bCalculates the remainder of a/b.
^ a bRaises a to the b-th power.
< a bProduces 1 if a is less than b and 0 if not.
<= a bProduces 1 if a is less than or equal to b and 0 if not.
> a bProduces 1 if a is greater than b and 0 if not.
>= a bProduces 1 if a is greater than or equal to b and 0 if not.
= a bProduces 1 if a is equal to b and 0 if not.
== a bProduces 1 if a is equal to b and 0 if not.
!= a bProduces 1 if a is not equal to b and 0 if it is.
<> a bProduces 1 if a is not equal to b and 0 if is.
xor a bCalculates the bit-wise exclusive-or of a and b.
& a bCalculates the bit-wise and of a and b.
| a bCalculates the bit-wise or of a and b.
&& a bCalculates the logical and of a and b.
|| a bCalculates the logical or of a and b.

exec (script-file)

Executes a series of commands stored in the script-file as if they had been typed in at the console directly.

key value1 [value2]

Translates all parameters to the command into their corresponding key values which are used internally for command and alias lookup. Probably not very useful for the average user.


integer: 0

Controls how ZDoom handles capturing of the mouse cursor when run in windowed mode. The default (0) only captures the mouse if the player is currently in a level and the menu is not visible. 1 also captures the mouse during intermission screens and end game finales. 2 captures the mouse always. This has no effect when playing in fullscreen mode.

puke (script [arguments])

Executes an ACS script on the current map, optionally passing it up to three numerical arguments. If you try this on multiplayer, sv_cheats must normally be enabled. However, if the script has the "net" keyword, it can be activated by anyone in a multiplayer game.

If the "script" argument is a negative value, the script will be executed as if it had been called by ACS_ExecuteAlways; otherwise it will be executed as if called by ACS_Execute.

pullin (wadfile)

Loads a wadfile at startup. This command is only valid inside .cfg files that have been execed at startup.

set (cvar) (value)

Sets cvar to value. If cvar does not exist, it will be created.

rebind (binding)

Changes the binding for the key that caused the rebind command to execute. For obvious reasons, this command cannot be used at the console.


bind b "echo setting 1; rebind \"echo setting 2\""

This will cause the first press of b to echo "setting 1" to the console. All future presses of b will echo "setting 2" instead.

unbind (key)

Removes a binding from the specified key.


Removes all bindings and doublebindings from every key. To restore the default bindings, you can use the binddefaults command. There is no way to restore any custom bindings after issuing this command except by retyping each bind command or using the controls setup menu.

undoublebind (key)

Removes a doublebinding from the specified key.

unset (cvar)

Undefines a user-created cvar.



float: 0
Controls the gamma level stored in PNG screenshots. If this is 0, then your current gamma setting will be used.


integer: 5
This is the level of compression to use for PNG screenshots. 0 is no compression at all, 1 is minimal compression (fastest), 9 is maximum compression (slowest), and intermediate values offer intermediate compression. 5 offers a decent trade-off between file size and compression time. An uncompressed image will not necessarily save faster than a compressed image, because the extra time needed to write out a complete uncompressed image may be longer than the time required to compress the image. If you need to create screenshots as quickly as possible, consider setting screenshot_type to "pcx".

screenshot [file]

Dumps a copy of the screen to disk as a PNG or PCX file. If file is not specified, the screenshot filename will be in a set format which include the name of the IWAD being used and the time the shot was taken.


boolean: false
Setting this to true will suppress the messages informing you what file a screenshot was saved to.


boolean: true
If true, screenshot and game saved messages contain the entire path and filename of the stored file. Set to false to shorten the message to just show the filename.


string: "png"
Determines the type of screenshots that will be saved. This can be either "png" or "pcx". In my empirical studies, PNG screenshots are about half the size of pcx screenshots. PCX screenshots have the advantage that they require less time to create so are most useful for rapid screenshot generation. The following sequence of console commands will take a screenshot every frame. You can use an external program to assemble these into a video, if desired.

screenshot_type "png"
screenshot_quiet true
alias autoshot "screenshot; wait 1; autoshot"

If you use the autoshot alias, the command alias autoshot will stop automatic screenshot taking before you hit 10000 screenshots (approximately 4 minutes, 45 seconds).


boolean: true
Setting this to false will produce smaller savegames (by about 14k typically) by not storing a screenshot inside the savegame.



boolean: false
Set this to true if you want to chat using special keywords that will be replaced with appropriate text when your messages are sent. The supported keywords are:

Replaced by your current health.
Replaced by the name of your current weapon.
Replaced by your current armor count.
Replaced by your current ammo count.
Replaced by the name of your current ammo.

As an example, if you just started a new game of Doom and have chat substitution turned on, when you send the message "My health is $health, and I am using a $weapon", the message that is actually sent will be "My health is 100, and I am using a Pistol".

  • chatmacro0
  • chatmacro1
  • chatmacro2
  • chatmacro3
  • chatmacro4
  • chatmacro5
  • chatmacro6
  • chatmacro7
  • chatmacro8
  • chatmacro9
  • string

These are all strings that can be assigned to hotkeys in chat mode. To use these, enter chat mode and then hold down Alt and press one of the number keys. The string stored in the corresponding chatmacro cvar will be sent as if you had typed it yourself.


Enters message entry mode. Anything typed while in this mode will be sent to everyone else as if you had used the say command once you press enter.


This is just like messagemode except that the message is only sent to other members of your team. If teamplay is false or you don't have a team, then this command will work just like messagemode and send the message to everyone.

say (message)

Sends a message to everyone playing. If your message begins with "/me" then "/me" will be replaced by your name ala IRC.

say_team (message)

This is just like say except it only sends a message to your teammates. If teamplay is inactive, then this command will act exactly like say and send the message to everyone.



boolean: false
When true, cheats will be allowed in Nightmare difficulty and network games. For purposes of fairness, this cvar can only be set from the command line when you run ZDoom. This is to avoid situations where the key player in a multiplayer game (player 1) could go to the console and type something like this:

sv_cheats 1
sv_cheats 0

thereby rendering himself immune to the attacks of others.


Toggles monster fear on and off. Scared monsters will run away from you and attack less frequently.


Toggles fly mode on and off.

give (item)

Gives an item to the player. Give understands the following special items:

all - gives you everything 
health - gives you full health 
weapons - gives you every weapon 
ammo - gives you full ammo 
armor - gives you full armor 
keys - gives you every key 

It also understands the names of individual inventory items. Use the command dumpclasses inventory for a complete list of these.

take (item) (amount)

Takes an item away from the player. Amount specifies how many to take away (if applicable). Can be used to damage the player by using "take health X", where X is the amount of damage to do. If the player reaches 0 health this way, he will die.


Toggles God (Degreelessness) mode on/off. While active, you cannot be hurt by normal attacks (although somethings such as telefragging will still kill you). Also known as iddqd.


The same as god, except it also gives you 100 health.

kill [class]

Used by itself, this kills the player. If a class is specified, this kills all actors of that type in the map. Alternatively, you can specify "kill monsters" to kill every monster in the level. Note that this command also prevents actors which normally spawn other actors on death (e.g. the Pain Elemental) from doing so.


This cheat will kill whatever you are looking at. Use a crosshair to get the exact point of what to kill.


Transforms you into a chicken in Heretic and a pig in Hexen and Doom (The latter only happens if you have the relevant graphics present).


Toggles noclipping (Walk through walls) mode on/off.


Toggles notarget mode on/off. While active, monsters will not target you unless you hurt them first. In "modern FPS", monsters "can't find you" when in notarget mode. This is not the case with ZDoom.


Powers you up in Heretic as if you had used a Tome of Power.

summon (actor-class)

Spawns a new actor in front of you. A complete list of actors can be obtained with the dumpclasses actor command. For a list of actors limited to those you can place in an editor, use the dumpmapthings command. It is possible to spawn actors from another game with this command, but they will not be visible unless you provide the missing graphics for them.

summonfriend (actor-class)

Same as summon, but causes monsters created using this command to attack non-friendly monsters instead of you.

summonfoe (actor-class)

Same as summon, but forces monsters created using this command to be hostile to the player, regardless of the actor's FRIENDLY flag.

sv_fastweapons (0-2)

Float: 0
Increases speed of weapons in Doom, Heretic, and Hexen. Setting to 2 makes weapons even faster. Note: Keep in mind that some custom weapons use special state handling (such as reloading) and using this may cause the game to crash.


float: 100
This cvar affects how quickly the player moves. A value of 100 will cause the player to move at normal speed, 200 will cause the player to move at 200% of normal speed, 50 will cause the player to move at 50% of normal speed, etc. Valid values range from 10 to 256.



boolean: false
When true, the game is limited to 35 FPS, as it was originally in Doom. When false, the game frame rate will be as high as your machine is capable of. You can use this in conjunction with vid_vsync to control whether or not the maximum frame rate is restricted to your monitor's refresh rate.


Increases the current gamma level by 0.1. If the new gamma level would be greater than 3.0, it wraps the gamma around to 1.0


boolean: false
When true, enables the Bloodbath announcer for deathmatch games. The Bloodbath announcer is "The Voice" from Monolith Software's Blood game. To hear the announcer, you need to load Blood's sounds.rff either at the command line or through one of zdoom.ini's [*.Autoload] sections. You can get this file either from the demo or full version of Blood. If you don't have sounds.rff, you can still see the announcer's messages even though you won't hear anything.


boolean: true
Set this to false if you don't want to see Unreal Tournament-style messages when a player makes several kills in a short period of time.


boolean: true
Set this to false if you don't want to see Unreal Tournament-style messages when a player is on a killing spree.


boolean: true
ZDoom clips decals to sidedefs. In order to hide this, the game will create as many duplicate decals on adjoining sidedefs as needed to make it appear that there is only one unbroken decal on the wall. Set this cvar to false if you don't want this.


integer: 0-2147483647 default: 1024
Decals are things such as blood stains and bullet holes on walls. Setting this to 0 will disable blood and bullet marks on walls.


Controls how transparent the console is when it is lowered.


boolean: false for Doom, true for Heretic and Hexen
When true, notify messages at the top of the screen are centered. Otherwise, they are justified against the left margin.


float: 3
This is the number of seconds that messages in the middle of the screen will be displayed before they dispapper.


float: 3
This is the number of seconds that new messages will stay at the top of the screen before they start scrolling away.


boolean: false
If this cvar is true, then message text will be scaled to larger sizes depending on the screen resolution so that it will stay approximately the same size it would be on a 320x200 screen.


integer: 0
If this cvar is non-zero, it draws a crosshair. If this cvar is negative, the crosshair is translucent, otherwise it is opaque. The specific crosshair drawn depends on the value of this cvar.


color: "ff 00 00"
This is the crosshair's color if crosshairhealth is false.


boolean: false
Set this to true if you want the crosshair to temporarily enlarge each time you pick up an item.


boolean: true
When true, the crosshair's color reflects your current health. Green is healthy, red is near death, and intermediate colors are somewhere in between. Set this to false, if you want the crosshair to have a constant color (specified by the crosshaircolor cvar) instead.


boolean: false
Set this to true if you want the crosshair to always appear the same size at all resolutions. Leaving it at false causes the crosshair to be drawn normally.


integer: 1 Controls whether the ENDOOM lump is shown upon exiting ZDoom. This is a text lump that was displayed just before quitting to DOS in the original game. As of 2.1.8, you can now emulate this lump in a window after choosing to quit. 0 is off, 1 is on. You can also set it to 2 to only display the lump if it has been modified from the original version (i.e. by a PWAD).


float: 1.0
Controls the amount of gamma correction applied to the display. 1.0 is equivalent to no correction, while larger numbers translate into a brighter display, and smaller numbers translate into a darker display. 0.0 is invalid and will be rejected. Negative numbers are technically invalid but will be accepted solely for the novelty value doing so provides.


boolean: false
Controls scaling of the fullscreen hud. At resolutions of 640x400 or above, setting this cvar to true will cause the icons to be scaled to approximately the same size they would be at 320x200. If this cvar is false, the icons will always be drawn without any scaling.


integer: 0
This is the minimum message level that you will see. You will not see any messages with a lower priority than this. The different message levels are:

  1. Item pickup
  2. Obituaries
  3. Critical messages
  4. Chat messages
  5. Chat messages from a teammate


integer: 6
This cvar controls the color used to display level 0 (item pickup) messages. Available colors are:

  1. Brick
  2. Tan
  3. Gray
  4. Green
  5. Brown
  6. Gold
  7. Red
  8. Blue
  9. Orange
  10. White
  11. Yellow


integer: 5
This cvar selects the color used to display level 1 (obituary) messages. Available colors are the same as for" msg0color.


integer: 2
This cvar selects the color used to display level 2 (critical) messages. Available colors are the same as for msg0color.


integer: 3
This cvar selects the color used to display level 3 (chat) messages. Available colors are the same as for msg0color.


integer: 3
This cvar selects the color used to display level 4 (team chat) messages. Available colors are the same as for msg0color.


integer: 5
This cvar selects the color used to display messages in the middle of the screen. Available colors are the same as for msg0color.


integer: 4
This cvar selects the color used to display messages in the middle of the screen that are sent to everyone. Available colors are the same as for msg0color.


boolean: false
When this cvar is true, the status bar will be scaled so that it covers the entire width of the screen in higher resolutions. At low resolutions this may look ugly, but at high resolutions it should look good enough.


Defines the number corpses that can be on the map at once in a Hexen game. Set to -1 to disable corpse queueing (all corpses will stay forever). Corpse queueing has to be set per actor by calling A_CorpseQueue in the death state sequence.



integer: 1
Selects which of two algorithms to use to draw sprites and masked textures. Method 0 is the original algorithm used by DOOM. Method 1 is a new algorithm optimized for Pentium IIs and can perform significantly better with that or comparable processors. Ironically, method 0 is slightly faster than method 1 on Pentium III and Athlon processors (though not significantly so).


integer: 0
This cvar selects the detail level of the view window. Valid values are:

  1. Normal detail level. Equivalent to Doom's high detail mode.
  2. Double pixels horizontally. Equivalent to Doom's low detail mode.
  3. Double pixels vertically.
  4. Double pixels horizontally and vertically.

Because of the way the renderer works, doubling pixels horizontally offers more of a speed-up than doubling them vertically does. Unless you have a very slow computer, there should be no reason to use any detail level other than 0.


boolean: false
When set to 0, segs will be drawn as solid colors instead of textures. This is useful if you want to see how a node builder split a level's linedefs. Otherwise, it just looks ugly.


boolean: true
When set to false, the "fuzz" effect on spectres and partially invisible players will be replaced with translucency.


boolean: true
Setting this false will disable the display of mirrors.


boolean: true
When false, the game will not draw the player's weapon or muzzle flash, which can be nice for screenshots.


boolean: true
Setting this to false will disable all translucency effects in the game.


boolean: true
Setting this to false will disable the display of fog boundaries. Fog boundaries are sections where two areas with different fog colors meet. If the boundary is not drawn, then it will look like there is no fog at all in front of the boundary. Some old levels may look bad with fog boundary drawing enabled, which is why this cvar is available.


boolean: true
If set to true, particles are drawn. Otherwise, they aren't.


The maximum number of particles that will be rendered at once.


boolean: true
Controls whether or not short sky textures are stretched so that you don't see them wrap when you look up.


This cvar contains the width and height of the current view window. This cvar is read only.

r_visibility [visibility]

Without any parameters, displays the current visibility. With a parameter, the visibility is set. Standard visibility for the Doom engine is 8. Visibility determines how quickly light drops off with distance from the viewer. At 0 visibility, there is no change in lighting with depth.



boolean: true
If this cvar is true, the game will be displayed fullscreen. Otherwise, it will be drawn in a window. Some video cards may require that you have fullscreen false in order to run ZDoom.

vid_attachedsurfaces (Win32 only)

boolean: false
Controls how the game allocates video memory. False is the standard setting and will always produce a usable display. If you find that there are patches of pure black and pure white on the screen (especially noticeable when a demon is right in your face), try setting this to true. Certain old Windows 95 video drivers are said to need this fix, and it is also necessary under NT 4. Unfortunately, many new video drivers (including those under NT 4) will produce a scrambled display if the screen width is not 512 or 1024 pixels and this is set to true.


Displays the resolution of the current video mode.


integer: 8
Ignored. This cvar is meant to specify the default screen depth, but the setting is currently ignored because only 256-color displays are supported.


integer: 200
Specifies the default screen height to use if not overridden at the command line by the -height switch.


integer: 320
Specifies the default screen width to use if not overridden at the command line with the -width switch.


Specifies a custom refresh rate which overrides Windows' automatic refresh rate selection. This is useful if your video card is trying to run your monitor at a refresh rate it doesn't actually support for the given resolution. Normally this will not be needed, however.


Lists all resolutions supported by the current display driver.


boolean: false
When true, displays the average framerate over the past second in the lower-left corner of the screen.

vid_noblitter (Win32 only)

boolean: true
Setting this to false will allow the use of the hardware to assist moving image data to video memory. When I initially wrote the code to use the blitter, it was faster than not using it. Now the blitter is slower, and I can't figure out why, so the default is true.

vid_palettehack (Win32 only)

boolean: false
When this cvar is true, the game will refresh the palette every time the screen is redrawn. This can be useful with some buggy video drivers. If the display is fine without it, leave it that way because this can slightly slow things down.

vid_setmode (width) (height) [depth]

Sets the screen mode to width x height with an optional color depth (if your video hardware supports it). Only a depth of 8 is supported. See also vid_currentmode, vid_listmodes


Displays the palette in the upper-left corner of the screen. Useful for debugging problems with the palette.


Tests the speed to which video and system memory is written and prints the results to the console.

vid_vsync (Win32 only)

boolean: false
Set this to false to disable syncing the frame rate to the vertical refresh rate. Not all video cards support disabling vsync, in which case this cvar will be ignored.


The horizontal location of the window when in windowed mode.


The vertical location of the window when in windowed mode.


addbot [name]

Spawns a bot. If a name is given, the corresponding bot in bots.cfg will be spawned. Otherwise, a bot will be picked at random from bots.cfg.


boolean: false
Allows you to see through the eyes of bots during botmatch games.


boolean: false
When set to 1, the player will experience minimal interaction with the world, and bots will ignore him. Does not work in netgames.


Lists the bots available in bots.cfg, and indicates which are currently playing.


Removes any bots from the game. Bots will also be automatically removed from network games when the arbitrator quits.



Toggles the automap on/off.


color: "6c 54 40"
The color of the automap background. Changes to this cvar take effect the next time the automap is activated.


color: "4c 38 20"
The color of two-sided lines that have a different ceiling height on each side.


integer: 0 The status of the automap cheat. This value can be changed directly from the console to cheat, or it can be modified the old fashioned way with cheat codes. Valid values are:

  • 0: No cheat. Only level architecture the player has seen is shown.
  • 1: All architecture is shown, regardless of whether or not the player has seen it. Equivalent to one input of the Doom iddt cheat.
  • 2: In addition to the previous, shows all things in the map as arrows pointing in the direction they are facing. Equivalent to two inputs of the Doom iddt cheat.
  • 3: In addition to the previous, all things are wrapped in a box showing their size. There is no iddt cheat for this, as this functionality was added to ZDoom and is not a carryover from vanilla Doom.


color: "88 70 58"
The color of two-sided lines that have a different floor height on each side.


color: "8b 5a 2b"
The color of the automap grid.


color: "ff 00 00"
The color of inter-level teleporters. These are teleporters that teleport you to a different map.


color: "00 00 ff"
The color of intra-level teleporters. These are teleporters that teleport you to a different location on the same map.


color: "00 00 98"
The color of lines that open locked doors.


color: "6c 6c 6c"
The color of lines on the automap that haven't yet been seen. Visible with a computer area map.


boolean: false
Normally, the togglemap command switches the automap between fully off and fully on. Setting this cvar to "1" will enable an intermediate automap mode in which the automap is drawn over the top of the 1st-person view, allowing you to view the map without taking you away from the game world. Using togglemap will then cycle between the three modes.


color: "00 88 44"
The color of passable lines on the automap when the map is overlayed.


color: "ff ff 00"
The color of teleporters (both inter- and intra-level) on the overlayed automap.


color: "e8 88 00"
The color of things visible with the automap cheat when the map is overlayed.


color: "00 22 6e"
The color of unseen lines on the automap when the map is overlayed.


color: "00 ff 00"
The color of impassable walls when the automap is overlayed.


color: "fc e8 d8"
The color of the arrow representing the player in single player games when the map is overlayed.


boolean: false
Normally, the automap is always drawn such that north is at the top of the screen. Setting this cvar to "1" causes the automap to be drawn so that lines toward the top of the screen are always directly in front of the player's view. This can be particularly useful when the automap is overlayed.


boolean: false
When true, the fullscreen automap will display a count of all the "special" items you have found on the map. These are the same items that are used to determine the Items stat on the intermission screen.


boolean: true
When true, the fullscreen automap will display a count of the number of monsters that have been killed in the current level and the total number of monsters in the level.


boolean: true
When true, the fullscreen automap will display a count of the number of secrets that have been found in the current level and the total number of secrets in the level.


boolean: true
When true, the fullscreen automap will display the total amount of time you have been in a level (excluding time that has been paused).


color: "fc fc fc"
The color of things revealed with the map cheat.


color: "88 88 88"
The color of two-sided lines that don't have any difference in floor or ceiling heights on either side. Only seen using map cheat.


boolean: true
When true, the automap uses the colors specified by the am_* cvars, otherwise it uses the standard DOOM automap colors.


color: "2c 18 08"
The color of one-sided and secret walls in the automap.


color: "80 80 80"
The color of the "crosshair" dot in the center of the automap.


color: "fc e8 d8"
The color of the arrow representing the player in single player games.

Player Settings


float: 5000
This represents the maximum vertical distance from an object that the player's sight must be before that object is no longer autoaimed at. Setting this cvar to "0" disables autoaiming, while large values such as "5000" will reproduce the original DOOM behavior of always autoaiming.


integer: 0
If enabled, the game will attempt to aim only at hostile monsters when autoaiming, even if there are shootable decorations or friendly actors closer to the player. The following values are available:

  • 1 - Target monsters before shootables.
  • 2 - Same as 1, but never target friendly monsters.
  • 3 - Target monsters only.


This is your player's color. The default varies depending on which game you are playing.


string: "male"
This is the gender of your player. Valid values are "male", "female", and "neuter". Anything else will be treated as male. When you die, certain messages will be altered to reflect the gender selected here. Unfortunately, I don't provide any non-male player sounds, so you'll still sound like a man no matter what this cvar is set to unless you provide your own sounds.


float: 0.25
Controls how much the view bobs up and down while you are moving. 0 would be no bob at all.


string: "Player"
This is your player's name. This is only really useful in a multiplayer game, but it can also be set for single player.


boolean: false
When this cvar is true, you won't automatically switch to a new weapon when you pick one up.


string: "base"
This is your player's skin. "Base" is the name of the regular Doom marine and is always available. Additional skins are contained in wad files that you either load with -file at the command line or autoload using the .ini or skins directory.


float: 0
Controls the amount of bobbing up and down that occurs when standing still. 0 is no bobbing at all.


integer: -1
This is the team that your player belongs to. It is only meaningful during deathmatch games. There are eight predefined teams available:

  1. Blue
  2. Red
  3. Green
  4. Gold
  5. Black
  6. White
  7. Orange
  8. Purple

Using a team of -1 is special and will automatically assign you to whichever team has fewer players.



integer: 0
This cvar keeps track of the number used for the next automatic save and is updated each time an automatic save is made. You cannot change it from the console.

changemap (lumpname)

Shows the intermission screen and then warps the player to the specified map, (e.g. "changemap e2m3" or "changemap map27") retaining the player's inventory and health value in the process.


Used for profiling the wall drawer.


Returns the internal count of automatically generated decals.


Iterates through every automatically generated decal in the level and returns how many are present. Compare this value with what countdecals returns to ensure that the internal count is accurate.


boolean: true
Keep this cvar true to compress demos so that they take up less space on disk.


boolean: false
When true, prints various debugging messages to the console.

dir [[path/][pattern]]

This command lists the contents of a directory. It supports wildcards (but will not recurse into multiple directories). If [path] is not specified, it will display the contents of the directory the game was run from.


integer: 0
Controls how frequently the game automatically saves for you. The possible settings are:

0Whenever you enter a new level and whenever the level requests it.
1Only when the level requests it.

dumpclasses [base-class]

Displays a list of all classes in the game. You can use base-class to limit the list to only those classes that derive from base-class. For example, dumpclasses actor will only show those classes that can be spawned in a level (including actors from all supported games). If you only want a list of weapons, you can use dumpclasses weapon. This list can be quite long and exceed the length of the console buffer, so it is a good idea to capture its output to a file using the logfile command.

dumpmap (wadname) [mapname]

Saves the current state of the level (minus actors) to a new wad called wadname. If you don't specify a mapname, it will be saved as MAP01. I used this while testing the internal node builder. Because ZDoom can now load Build maps, you can use this as a simple Build->Doom converter (although limitations in the Doom map format will likely force you to make several edits to produce a usable map).


Lists all the map editor numbers for actors in the current game.


Lists all the spawn numbers for actors in the current game.


boolean: false
Enables a listing of all things in the map and the actor type they spawned. (Need more info)

echo (string)

Prints string to the console.

error (error-message)

Simulates an error by killing the current game and falling back to the fullscreen console with the specified message.

error_fatal (error-message)

Simulates a fatal error by exiting the game completely and showing the error-message.


Use this command once to freeze gameplay (while still allowing you to move around). Use it again to unfreeze gameplay. This will not work in multiplayer.


Prints the version number and compile date of ZDoom.


boolean: false
Set this to true to force the game to ignore the blockmap saved with a map and always generate it from scratch, whether it needs to be generated or not.


boolean: false
Set this to true if you want the game to ignore the BSP tree saved with a map and always build a new one. A value of true for gennodes also implies a true value for genblockmap.

get (cvar)

Displays the value of cvar. This is redundant because typing the name of the cvar alone at the console will accomplish the same thing.

infighting (setting)

integer: 0
Alters the behavior of enemies when it comes to infighting. 0 is the default and enables normal infighting. If set to -1, monsters will never engage in infighting. If set to 1, all monsters will infight with each other, even monsters of the same species.

logfile [log-file]

If log-file is not specified, console logging will be stopped (if active). Otherwise, a file named log-file will be created on disk, and all console output will be recorded in it as well as on the screen.


Will make the game display the actor name, health, and starting health of the monster the player is looking directly at.


Dumps a list of all maps defined in MAPINFO to the console, along with their lump names. This can make locating a map that uses a non-standard lump name easier.

map (lumpname)

Immediately warps the player to the specified map, skipping the intermission screen. (e.g. "map e2m3" or "map map27") Also resets the player's inventory and health to their starting values, as if they had started a new game. Use changemap to change to a new map without starting the game over.


Warps the player to the next map as specified by MAPINFO. Also resets the player's inventory and health as if a new game had been started.


Warps the player to the current secret map as specified by MAPINFO, just as if he had found the secret exit in this map. Also resets the player's inventory and health as if a new game had been started.


boolean: false
This is a debugging cvar used to disable file compression. You should leave it set to false.


boolean: false
When set to true, the current status of all sound channels is displayed on the screen.


This lists a very rough estimate of the speed of the connection between your machine and any others in the game. In reality, the values printed by this command aren't even pings; they're just the number of milliseconds that have passed since the last time you received a network packet from the other machines.

playerinfo [player-number]

Without parameters, lists the numbers for each player in the game. If you specify a player-number, then details about that player's user info will be listed.


Lists the player sounds defined by each player class and skin.


Lists the names of the skins that were loaded when the game was started.

playmovie (filename)

Plays a movie. Gameplay will be halted either until the movie finishes or the user presses the Escape key. Under Windows, DirectShow is used to play the movie, so you can watch anything that Windows Media Player can play. Movie playback is not implemented under other operating systems.

playsound (sound)

Plays a sound on the local machine. Like all other sounds in the game, sound must be properly defined in a SNDINFO lump before you can use it.

print (string)

Prints a named string to the console. These are the strings you can edit with a bex patch.


Prints your current inventory to the console.


Lists the scripts running on the current level.


Lists the links between different sounds that use the same sound data. Links are generated dynamically while you play, so it is possible for this command to give different results in different games and even at different times during the same game.


Lists all the sounds defined and the lumps that they alias to. Unlike regular Doom, ZDoom refers to sounds using a long name and uses a SNDINFO lump to map those to the lumps in a WAD file that contain the actual sounds. Logical sounds that refer to the same sound data will have links generated as necessary to avoid actually loading multiple copies of the same sound into memory.

spray (decal)

Sprays a decal on a nearby wall so you can see what it looks like.

stat [page]

Displays profiling information. When used alone, displays a list of available displays. Use one of those as the page parameter to toggle the display on and off.

stat (blit)

Time spent copying the display to video memory.

stat (bots)

Time spent doing bot-related activities.

stat (destroys)

Statistics on object deletion each frame.

stat (detail)

Time spent replicating pixels for low detail modes.

stat (fps)

Time spent rendering the scene (not the same as setting vid_fps to true).

stat (purge)

Statistics of memory purged from the zone heap each frame.

stat (sight)

Time spent in sight calculations.

stat (sound)

Number of active channels and %CPU used for sound.

stat (think)

Time spent running all thinkers.

stat (wallcycles)

Used in conjunction with clearwallcycles to profile the wall drawer.


boolean: false
When true, draws a series of dots at the bottom of the screen representing the number of tics it took to display the current frame. (One tic is 1/35th of a second.) When -devparm is specified on the command line, this cvar is automatically set to true. You can get a rough idea of your fps by counting the number of lit dots and dividing that from 35. A better way would be to use vid_fps.


boolean: false
Setting this to true causes all planes to be drawn using the sloped drawer, even if they aren't sloped.


integer: 8
The horizontal scale for textures that don't specify their own.


integer: 8
The vertical scale for textures that don't specify their own.

warp (x-coordinate) (y-coordinate)

Sends you to the specified coordinates immediately. This can be used with idmypos to debug problems in a specific area of a map.

Net Commands

These commands are only available to the host of a netgame. They affect which players can change the game's settings.

net_addcontroller <player number>

Adds a player to the list of controllers who are able to change game settings.

net_removecontroller <player number>

Removes a player from the list of controllers who are able to change game settings.


Lists the current players who are able to change game settings.