FAQ#
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 DoomGame.set_doom_config_path
.
Original issue and answer: https://github.com/Farama-Foundation/ViZDoom/issues/253
How to control game speed in ASYNC
modes?#
See: DoomGame.set_ticrate
and examples/python/ticrate.py
Original issue and answer: https://github.com/Farama-Foundation/ViZDoom/issues/209
How can to make an exact 90 degree turn in one action?#
See: examples/python/delta_buttons.py
Original issue and answer: https://github.com/Farama-Foundation/ViZDoom/issues/279
See also:
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
See also:
List of weapon flags: https://zdoom.org/wiki/Weapon_flags
List of Doom weapons: https://zdoom.org/wiki/Classes:DoomWeapon
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
See also:
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#
Try setting 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)
Try using
GameMode.SPECTATOR
mode 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.
Original issues:
Why doom_game.get_state()
when 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.
Original issues:
I am trying to use audio/sound, but ViZDoom crashes or I there is no audio#
Try running 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:
export DISPLAY=:0
.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).