Release Notes¶
ViZDoom 1.3.0.dev3: New notifications buffer, audio buffer improvments, maintenance¶
Released on 2025-10-22 - GitHub - PyPI
What's Changed
- Add notifications buffer by @mwydmuch in #636
- Category as label attribute that can be used for semantic segmentation by @Trenza1ore in #626
- Benchmarking the VizDoom env in vectorized gymnasium by @melnimr in #616
- Added ViZDoom Python interface file to aid IDE for hinting by @Trenza1ore in #620 and #625
Audio buffer:
- Add the audio buffer to the observation state in Gymnasium wrapper by @melnimr in #623
- Add OpenAL init check when using AudioBuffer and other improvments by @mwydmuch in #645 and #651
- Add basic_audio.wad by @mwydmuch in #648
- Update learning_stable_baselines3.py to support audio buffer by @melnimr in #638
Docs:
Tests:
- Exception tests, rename ViZDoomOpenALSoundException -> ViZDoomNoOpenALSoundException, refactor ServerState, doc updates by @mwydmuch in #646
Building:
Workflows:
- Update workflows to use trusted-publishing by @mwydmuch in #650
- Windows workflow fixes by @mwydmuch and @Trenza1ore in #628, #629 and #652
- Run apt-get update before building docs by @Trenza1ore in #630
New Contributors
- @melnimr made their first contribution in #616
- @Trenza1ore made their first contribution in #620
Full Changelog: 1.3.0.dev2...1.3.0.dev3
ViZDoom 1.3.0.dev2: Freedoom 0.13, truncation support, MultiBinary buttons¶
Released on 2025-06-29 - GitHub - PyPI
ViZDoom 1.3.0.dev2 Release Notes
This is the second dev release before the final 1.3.0 release.
What's Changed
- DoomGame and GameState documentation pages fixes and improvements by @mwydmuch in #612
- Update freedoom to version 0.13 by @mwydmuch in #613
- Add support for truncation in Gymnasium wrapper based on episode timeout by @mwydmuch in #614
- Binary buttons now use MultiBinary action space by @mwydmuch in #615
- Update publish actions by @mwydmuch in #617 and #618
Full Changelog: 1.3.0.dev1...1.3.0.dev2
ViZDoom 1.3.0.dev1: Python 3.13 support, remove old signal trapping and OpenAI Gym wrapper¶
Released on 2025-05-29 - GitHub - PyPI
ViZDoom 1.3.0.dev1 Release Notes
This is the first of a few dev releases before the final 1.3.0 release.
What's Changed
- Update actions/download-artifact in /.github/workflows by @mwydmuch in #593, #594, #596, #597, #598
- Add isEpisodeTimeoutReached/is_episode_timeout_reached method to the core API by @mwydmuch in #587
- Remove the original OpenAI Gym wrapper by @mwydmuch in #594
- Add try/catch block around message queue receive method in the engine by @mwydmuch in #600
- Remove signal trapping by ViZDoom thread by @mwydmuch in #599
- Pre-commit fixes and workflow updates by @mwydmuch in #603, #604, #605
- Add support for version suffixes by @mwydmuch in #609
- Fix for a new version suffix by @mwydmuch in #610
- Update workflows to include Python 3.13 by @mwydmuch in #608
- Add kill/item/secret/fragReward etc. methods by @mwydmuch in #611
Full Changelog: 1.2.4...1.3.0.dev1
ViZDoom 1.2.4: Support for NumPy 2.0+, add building of Windows and Apple Silicon wheels on GH Actions¶
Released on 2024-08-20 - GitHub - PyPI
ViZDoom 1.2.4 Release Notes
This is a maintenance release that fixes some bugs and adds support for NumPy 2.0+.
What's Changed
- Update learning_stable_baselines3.py and other examples by @mwydmuch in #581 and #583
- Fix the ongoing recording not being saved when close() method was called by @mwydmuch in #584
- Add LevDoom and COOM benchmarks to the tools/projects list by @TTomilin in #585
- Building and CI/CD updates/clean up by @mwydmuch in #579 and #586
- Update pybind11 version to 2.13.4 to support NumPy>=2.0 by @mwydmuch in #590
- Add workflows for building Windows wheels by @mwydmuch in #591
- Update workflows to support building macOS Apple Silicon (arm64) wheels by @mwydmuch in #592
New Contributors
Full Changelog: 1.2.3...1.2.4
ViZDoom 1.2.3: Support for Python 3.12, fix for the Gymnasium wrapper¶
Released on 2023-12-16 - GitHub - PyPI
ViZDoom 1.2.3 Release Notes
The aim of this release is mainly to add support for Python 3.12 and fix a serious bug in the Gymnasium wrapper (thanks @caozhenxiang-kouji for reporting).
What's Changed
- Add support for Python 3.12 by @mwydmuch in #570
- Fix the bug in the Gymnasium wrapper that was constructing correct actions only for
inttype but not fornp.inttypes, whenaction_space = Discrete(reported in #574) by @mwydmuch in #575 - Add Farama notifications to the Python package by @mwydmuch in #568
- Add workflows to build docs version by @mgoulao in #567
- Add
set/getGameArgs/set/get_game_argsmethods by @mwydmuch in #569 - Add support for +win_x/y CVARs on Linux and MacOS by @mwydmuch in #569
- Setup.py and tests updates by @mwydmuch in #573
- Add support for viz_noxserver option on macos by @mwydmuch in #577
- Documentation updates by @mwydmuch in #576 and #578
Full Changelog: 1.2.2...1.2.3
ViZDoom 1.2.2: Fix for Python source distribution missing pybind11, fix manual building¶
Released on 2023-09-27 - GitHub - PyPI
ViZDoom 1.2.2 Release Notes
The aim of this release is mainly to fix some issues with installing ViZDoom on configurations that cannot use binary wheels.
What's Changed
- Create FUNDING.yml by @mwydmuch in #557
- Create CODE_OF_CONDUCT.md by @mwydmuch in #559
- Building and CI/CD fixes by @mwydmuch in #558, #560, #562
- Documentation updates by @mwydmuch in #561, #563, and #564
load_config/loadConfigfix by @mwydmuch in #565
Full Changelog: 1.2.1...1.2.2
ViZDoom 1.2.1: Manylinux wheels, docstrings and argument names in the Python module, and a new documentation website¶
Released on 2023-09-11 - GitHub - PyPI
ViZDoom 1.2.1 Release Notes
This release focuses on improving the user experience by adding support for docstrings and argument names in the Python module, a new documentation website, and, finally, improvements to the building process that allows for prebuilding manylinux wheels. This release does not introduce any changes to the API and is 100% compatible with the previous version.
What's Changed
- Docstrings were added to the Python module by @mwydmuch in #544
- Argument names were added to the Python module by @mwydmuch in #549
- A new documentation website based on Sphinx was created by @mgoulao, @mwydmuch in #540, #551, #554
- Manylinux wheels workflow using cibuildwheel was added by @mwydmuch in #552
- Python 3.7 support was dropped by @mwydmuch in #550
Full Changelog: 1.2.0...1.2.1
ViZDoom 1.2.0: add Gymnasium wrapper, Pickle support, and ARM compatibility¶
Released on 2023-05-12 - GitHub - PyPI
ViZDoom 1.2.0 Release Notes
This release adds official Gymnasium support, support for serialization using Pickle, and ARM compatibility. Besides that, it improves and modernizes the codebase to simply further maintenance of the library.
ViZDoom core API and Gym wrapper remain unchanged in this release. The code using the 1.1.X version should be fully compatible with this release.
New Features and Improvements:
- Added Gymnasium support. The wrapper for Gymnasium 0.28 was added, and from now on it will be an integral part of the library. The old Gym 0.26 wrapper remains as an optional extra. Because of that, we mark this release as the next minor release for the first time in 4 years.
- Added Pickle support.
- The Gymnasium/Gym wrappers now support the serialization of environments via pickle. Now both the environments and their states can be serialized.
- The
GameStateobject and its subobjects, which are returned from C++ byDoomGame.get_state()method in core Python API, now also support serialization. However,DoomGameobject that wraps the game engine cannot be serialized.
- Compatibility with ARM. The library can now be easily compiled and installed on ARM Linux as well as on Apple Silicon.
- Python 3.11 support. The ViZDoom library can now be installed with Python 3.11.
Environments:
The default configurations for all build-in scenarios/environments were unified to use 320x240 resolution (original DOS Doom resolution) as default.
Bug Fixes and Documentation Updates:
This release introduces numerous improvements to the codebase that will simplify further maintenance:
- Pre-commit-hooks with code formatting and checks were added.
- All assembler code was removed. Instead, the C/C++ code that was present in the engine as a fallback is now used instead. Currently, these assembler parts are not bringing significant performance improvements and thus were not worth keeping in our opinion. Because of that, the assembler compiler was removed from the list of dependencies as it's no longer needed.
- Lemon and Zipdir libraries were updated to the newer versions to fix issues with a building project on ARM machines and some Windows configurations.
- Fixed some deprecation warnings in the C/C++ codebase.
- Updated and cleaned-up documentation related to the project building.
- Added a long description for the PyPI package page.
- Added many tests for both core API and the Gymnasium wrapper.
- Cleaned up the codebase and removed unused files, scripts, commented code blocks, and Visual Studio project files.
Full Changelog: 1.1.14...1.2.0
ViZDoom 1.1.14¶
Released on 2023-01-07 - GitHub - PyPI
Changes in ViZDoom 1.1.14
Support for Apple Silicon
- Fixed building on Apple Silicon Macbooks.
Gym
- OpenAI Gym environment wrappers were updated to the Gym v0.26 API version.
ViZDoom 1.1.13¶
Released on 2022-04-18 - GitHub - PyPI
Changes in ViZDoom 1.1.13
Releases
- The pybind11 library and freedoom2.wad are now part of the source release instead of being downloaded during building.
Consts
- Added new consts:
DEFAULT_FPS(=DEFAULT_TICRATE),DEFAULT_FRAMETIME_S(=1.0 / DEFAULT_TICRATE),DEFAULT_FRAMETIME_MS(=DEFAULT_FRAMETIME_S * 1000);
ViZDoom 1.1.12¶
Released on 2022-04-01 - GitHub - PyPI
Changes in ViZDoom 1.1.12
New OpenAI Gym wrapper
- Added a new wrapper for OpenAI Gym.
ViZDoom 1.1.11¶
Released on 2021-11-22 - GitHub - PyPI
Changes in ViZDoom 1.1.11
Python
- Fixed issues with installing/building Python package.
ViZDoom 1.1.10¶
Released on 2021-11-10 - GitHub - PyPI
Changes in ViZDoom 1.1.10
Python Bindings
- Fixed support for Python 3.10
- Removed dependency on Numpy and simplified the process of building Windows wheels.
Input/output
- Added support for tuples and ndarrays as arguments in many functions, where previously only lists were accepted.
ViZDoom 1.1.9¶
Released on 2021-09-30 - GitHub - PyPI
Changes in ViZDoom 1.1.9
Audio buffer
- Added
audio_buffertoStateand related methodsis/setAudioBufferEnabled,get/setAudioSamplingRate,get/setAudioBufferSize.
Save/load methods
- Added
saveandloadmethods that allow saving/loading game to/from a file.
Misc
- Added
viz_bots_pathCVAR that allows specifying path to custom bots configuration.
ViZDoom 1.1.8¶
Released on 2020-10-29 - GitHub - PyPI
Changes in ViZDoom 1.1.8
Objects and sectors
- Added
is/setObjectsInfoEnabled,is/setSectorsInfoEnabledmethods to Python and C++ to enable information about all objects or/and sectors (map layout) present in the current episode/level. - Added
objectsandsectorsfields toGameStatein Python and C++.
Config files
- Added missing GameVariables introduced in 1.1.5 to the Config parser.
- Added missing GameVariables introduced in 1.1.7 to the Config parser.
- Added
objectsInfoEnabled/objects_info_enabled.
Python, Java, Lua
- Dropped support for Python 2.7
- Dropped support for Java bindings
- Dropped support for Lua/Torch bindings
ViZDoom 1.1.8pre¶
ViZDoom 1.1.7¶
Released on 2018-12-29 - GitHub - PyPI
Changes in ViZDoom 1.1.7
Python & Julia
- Added missing
is_multiplayer_gamemethod to Python and Julia binding.
CVARS
- Added
VIEW_HEIGHT,CAMERA_POSITION_X/Y/Z,CAMERA_ANGLE,CAMERA_PITCH,CAMERA_ROLLandCAMERA_FOVGameVariables.
ViZDoom 1.1.6¶
Released on 2018-07-16 - GitHub - PyPI
Changes in ViZDoom 1.1.6
Julia specific
- Julia binding added.
Server state
- Added
getServerStatemethod that returnsServerStateobject.
Multiplayer
- Added timeout for network game synchronization controlled by
viz_connect_timeoutCVAR. - Fixed
viz_spectatorCVAR.
Python specific
- Added Python interpreter version check.
ViZDoom 1.1.5¶
Released on 2018-05-14 - GitHub - PyPI
Changes in ViZDoom 1.1.5
Automap
- Added
viz_am_scaleCVAR (CVAR version ofam_scaleCCMD). - Added
viz_am_centerCVAR (andam_centerCCMD).
Buttons and actions
- Added
getButtonmethod.
Episode recording and replaying
- Added
isRecordingEpisodeandisReplayingEpisodemethods.
GameVariables
KILLCOUNTcounts all kills, including multilayer kills.HITCOUNT,HITS_TAKEN,DAMAGECOUNT,DAMAGE_TAKENgame variables added.
Labels
- Added appending "Dead" prefix to label's name when actor is a corpse.
- Added bounding box information to Label object in
x,y,widthandheightfields. - Added
objectAngle,objectPitch,objectRoll,objectVelocityX/Y/Zfields to Label object.
Windows specific
- Fixed problem with building on Windows 8.1 and 10.
- Added scripts for downloading freedoom2.wad and assembling Python packages.
Rendering
- Fixed minor rendering issues in the depth and labels buffers.
- Fixed order of color values in
RGB/BGRmodes ofScreenFormat.
ViZDoom 1.1.5pre¶
ViZDoom 1.1.4¶
Released on 2017-09-29 - GitHub - PyPI
Changes in ViZDoom 1.1.4
Automap
- Added
am_scaleCCMD.
Scenarios
- Fixed
KILLCOUNTGameVariable for ChainsawMarine indefend_the_centeranddeathmatchscenarios.
Python specific
- Ported Python binding to pybind11 as a replacement for Boost.Python.
- Fixed problems with
pip installdetecting Python interpreter, includes and libraries from different Python versions.
ViZDoom 1.1.3¶
Released on 2017-07-08 - GitHub - PyPI
Changes in ViZDoom 1.1.3
Rendering options
- Added
setRenderScreenFlashesandsetRenderAllFramesmethods. - Added
viz_ignore_render_modeCVAR which disables overriding rendering settings.
GameVariables
- Added
ANGLE,PITCH,ROLL,VELOCITY_X/Y/ZGameVariables.
Missing config keys
- Added support for
DEATHCOUNT,USER31-USER60,PLAYER_NUMBER,PLAYER_COUNT,PLAYER1_FRAGCOUNT-PLAYER16_FRAGCOUNT,POSITION_X/Y/ZGameVariables in the config file. - Added support for
ALTATTACKButton in the config file.
Java specific
- Fixed
makeAction. - Added missing
POSITION_X/Y/ZGame Variables.
Python specific
- Added manual GIL management for better performance when used with Python threads.
Windows specific
- Fixed building for Windows 10.
ViZDoom 1.1.2¶
Released on 2017-06-11 - GitHub - PyPI
Changes in ViZDoom 1.1.2
Multiplayer
- Added
isMultiplayerGamemethod. - Added
viz_respawn_delayCVAR, which allows controlling the delay between respawns in multiplayer games. - Added
viz_spectatorCVAR, which allows connecting to multiplayer games as a spectator. - Maximum number of connected players raised to 16,
PLAYER9_FRAGCOUNT-PLAYER16_FRAGCOUNTGameVariables added.
Missing methods
- Added
isRunning,isDepthBufferEnabled,isLabelsBufferEnabledandisAutomapBufferEnabledmissing methods to Python and Lua bindings.
ViZDoom 1.1.1¶
Released on 2017-03-23 - GitHub - PyPI
Changes in ViZDoom 1.1.1
GameState
- Added
ticfield. GameVariable.DEATHCOUNTfixed.
Lua specific
- Fixed crash when calling
getStatein a terminal state.
Python specific
- Fixed minor memory leak
- Fixed crash when calling
getStatein a terminal state.
ViZDoom 1.1.0¶
Released on 2016-12-23 - GitHub - PyPI
Changes in ViZDoom 1.1.0
Buffers
- Depth buffer is now a separate buffer in state and
ScreenFormatvalues with it were removed -is/setDepthBufferEnabledadded. - Added in frame actors labeling feature -
is/setLabelsBufferEnabledadded. - Added buffer with in game automap -
is/setAutomapBufferEnabled,setAutomapMode,setAutomapRoate,setAutomapRenderTextures,AutomapModeenum added.
GameState
getStatewill now returnnullptr/null/Noneif game is in the terminal state.imageBufferrenamed toscreenBuffer.- Added
depthBuffer,labelsBufferandautomapBufferandlabelsfields.
Rendering options
- The option to use minimal hud instead of default full hud -
setRenderMinimalHudadded. - The option to enable/disable effects that use sprites -
setRenderEffectsSpritesadded. - The option to enable/disable in game messages independently of the console output -
setRenderMessagesadded. - The option to enable/disable corpses -
setRenderCorpsesadded.
Episode recording and replaying
- The option to record and replay episodes, based on adapted ZDoom's demo mechanism -
recordingfilePathargument added tonewEpisode,replayEpisodeadded. - The option to replay demo from other players' perspective.
Ticrate
- The option to set number of tics executed per second in ASNYC Modes.
- New
ticrateoptional argument indoomTicsToMs,msToDoomTics. doomTicsToSecandsecToDoomTicsadded.
Paths
- Paths in config files are now relative to config file.
- setting vizdoom_path and doom_game_path is no longer needed - they default to location(installation) of vizdoom.so.
Others
- ZDoom engine updated to 2.8.1.
- Basic support for multiplayer in PLAYER and SPECTATOR Modes.
- Improved exceptions messages.
- Bugs associated with paths handling were fixed.
- Many minor bugs were fixed.
- Possibility to change scenario wad during runtime (only first map from WAD file).
- Added
viz_debugCVAR to control some diagnostic messages.
C++ specific
- A lot of overloaded methods turned into a methods with default arguments.
getState()now returnsGameStatePtr (std::shared_ptr<GameState>)instead ofGameState.- Buffers are now copied.
- GameState's buffer has now
ImageBufferPtr (std::shared_ptr<ImageBuffer>)type -Buffer (std::vector<uint8_t>). - GameState's gameVariables are now vector of doubles instead of ints.
Lua specific
- Lua binding added.
- Support for LuaRocks installation for Linux and MacOS.
Java specific
- GameState buffers type changed to byte[].
- Performance improved.
- Java exceptions handling fixed.
- Few functions fixed.
Python specific
- Consts added to Python.
- Aliases for
doom_fixed_to_double-doom_fixed_to_floatadded. - Support for pip installation for Linux and MacOS.