This file contains a list of questions that ViZDoom users may ask at some point. You can find more questions and answers by searching for issues with “question” tag (is:issue label:question).
Did not find answer for your question? Post an issue
How to use original Doom’s assets?#
We cannot provide original Doom’s assets due to licensing issues, that is why ViZDoom uses freedoom2.wad as default assets.
If you own original Doom or Doom 2 game (can be bought them on Steam or GOG), you can replace Freedoom graphics with original Doom’s assets by placing doom.wad or doom2.wad into your working directory or vizdoom package directory (same directory as vizdoom(.exe)). Alternatively, any base game WAD (including other Doom engine-based games) can be used by pointing to it with the
DoomGame.set_doom_game_path method. On Unix you can also set
DOOMWADDIR environment variable to directory with your wads files.
How to create/modify scenarios?#
You can create or modify existing scenarios using many available Doom map editors. We recommend using one of these two editors:
SLADE3 - great Doom map (scenario) editor for Linux, MacOS and Windows.
Doom Builder 2 - another great Doom map editor for Windows.
You should select ZDoom as your Doom engine version and UDMF map format (Universal Doom Map Format), that supports the widest range of features.
For more details check
Original issue and answer: https://github.com/Farama-Foundation/ViZDoom/issues/319
How to stack frames?#
ViZDoom does not automatically stacks frames for you.
You have to manually store the states from
DoomGame.get_state. and build up stacked states for your agent.
Original issue and answer: (contains code an example) https://github.com/Farama-Foundation/ViZDoom/issues/296
How to change keyboard binding for Spectator Mode?#
When you launch an instance of vizdoom, it will create
_vizdoom.ini in your working directory (if it does not exist yet).
This file contains all the additional engine settings, including key bindings, that you can edit freely.
You can also load .ini file from different location using
Original issue and answer: https://github.com/Farama-Foundation/ViZDoom/issues/253
How to control game speed in
Original issue and answer: https://github.com/Farama-Foundation/ViZDoom/issues/209
How can to make an exact 90 degree turn in one action?#
Original issue and answer: https://github.com/Farama-Foundation/ViZDoom/issues/279
Agent does not fire after picking up ammo or weapon?#
Some weapons have a
noautofire flag for weapons to prevent using them by accident when picking up.
Agent needs to release
ATTACK button and then press it again to start firing after picking one of those weapons or ammo for them.
Original issue and answer: https://github.com/Farama-Foundation/ViZDoom/issues/289
How to pick up items (medikit, ammo, armour) when inventory is full?#
CVARs implemented in ZDoom engine are very helpful in quickly modifying some aspects of the game.
doom_game.add_game_args("+sv_unlimited_pickup 1") adding before init will allow picking up unlimited items.
Original issue and answer: https://github.com/Farama-Foundation/ViZDoom/issues/187
List of CVARs: https://zdoom.org/wiki/CVARs:Configuration
I am getting
Buffers size mismatch. error#
Make sure you can run ZDoom binary inside the ViZDoom package.
If the game works, go to
Options -> Set Video Mode and see the list of available resolutions there. Try one of these resolutions viz ViZDoom.
Original issue and answer: https://github.com/Farama-Foundation/ViZDoom/issues/404
Issues getting ViZDoom instances communicating between each-other in Kubernetes#
tty=True in all containers running ViZDoom.
Original issue: https://github.com/Farama-Foundation/ViZDoom/issues/329
Reading replays (invalid actions, wrong rewards)#
Replay files are known to have wonky issues at times: Even when they are opened correctly, the read variables may be different from what they were during recording. There are tricks to fix this:
Try adding a small amount of sleep between proceeding actions (Original issue: https://github.com/Farama-Foundation/ViZDoom/issues/354)
GameMode.SPECTATORmode for reading replays. Note that processing of individual steps must be done fast, otherwise multiple steps get bundled up into one. (Original issue: https://github.com/Farama-Foundation/ViZDoom/issues/412)
Having multiple agents in one game / multiplayer issues#
You can use ZDoom’s multiplayer to have multiple agents in same game (see examples for how to do this). However
if you use
PLAYER Mode, you can not use frameskip of the
make_actions (each agent has to make one step before
server proceeds by one frame). See discussion in Issues below for more information.
doom_game.is_episode_finished() == True#
After the end of the episode, ZDoom engine might change its state and exit the episode (map) resulting in some objects and variables being destroyed or reset. Because of that it’s difficult to provide a proper state after that. When we were originally designing ViZDoom we wanted to have a simple logic and we only update state after complete logic tic. Because of that we are not able to detect end of episode early before to save a proper state and decided to provide null/none value instead. We believe that it’s easy to provide dummy (e.g. filed with zeros) state if it’s needed by an algorithm.
I am trying to use audio/sound, but ViZDoom crashes or I there is no audio#
examples/python/audio_buffer.py and check the messages it gives you. This example also works as a small
testing utility to ensure audio and audio buffers work for you.
Older versions of OpenAL library (1.19, default version as of writing on e.g. Ubuntu 20.04) do not always play nice with ViZDoom. You have several options you can try (one of these steps has worked so far on all tested machines):
If ViZDoom crashes on init when you have sound enabled, try
doom_game.add_game_args("+snd_efx 0"). Note that this might remove some audio effects like reverberation.
If you can run ViZDoom with sound enabled but there is no audio being played, try steps here.
If that fails, try uninstalling OpenAL you have on your system and then repeating the above installation.
Original issue: https://github.com/Farama-Foundation/ViZDoom/pull/486
How to display ViZDoom’s window when running it on WSL (Windows Subsystem for Linux)#
Please note that as running ViZDoom on WSL seems to be working fine, it is not officially supported.
GUI apps do not work out-of-the-box on WSL on Windows 10/11. To make it work, you need:
Download and install X-Server (VcXsrv) on Windows: https://sourceforge.net/projects/vcxsrv/.
Start it using Command Prompt (cmd.exe) on Windows:
"C:\Program Files\VcXsrv\vcxsrv.exe" :0 -ac -terminate -lesspointer -multiwindow -clipboard -wgl -dpi auto(
"C:\Program Files\VcXsrv\vcxsrv.exe"is default install location).
On Ubuntu WSL instance set:
Now you can lunch your graphical application inside Ubuntu WSL including ViZDoom.
Original issue: https://github.com/Farama-Foundation/ViZDoom/issues/491
What is a difference between ViZDoom, ZDoom and GZDoom#
ViZDoom is based on the last version of ZDoom (2.8.1). ZDoom was discontinued in 2016, and the development switched to GZDoom, which provides a new 3D renderer implemented in OpenGL. ViZDoom, however, sticks to the original 2D software renderer, which is much faster for small resolutions than OpenGL. Because of that, ViZDoom modernized the ZDoom engine by adding support for Apple Silicon and ARM Linux and removing old unused parts of the code base (e.g., by removing Assembler parts).