Skip to content

Releases: Farama-Foundation/ViZDoom

ViZDoom 1.3.0: Mature Farama Release

11 Feb 11:11
c8e0a31

Choose a tag to compare

ViZDoom 1.3.0 Release Notes

Highlights of this release

  • Farama General Standards compliance - ViZDoom now meets Farama General Standards for projects
  • Original Doom levels - added as Gymnasium environments
  • New methods for setting rewards for common actions like kill/item pickup/secret discovery/frag/death/level etc.
  • Audio buffer and notification buffer - access in-game audio and messages and notifications in both original and Gymnasium APIs
  • Python 3.13 & 3.14 support
  • Better docstrings and type hints via .pyi file
  • Semantic segmentation - category labels now available for objects in labels buffer

What's Changed (since 1.2.4)

Core

  • Remove signal trapping by ViZDoom thread by @mwydmuch in #599
  • Add kill/item/secret/frag etc. reward methods by @mwydmuch in #611
  • Add notification buffer to a state (text that contains in-game messages and notifications, available both in original and Gymnasium API) by @mwydmuch and @melnimr in #636, #654, #655, #657, #674, #675, and #658
  • Add ViZDoom Python interface file to aid an IDE for hinting by @Trenza1ore in #620, #625, and #667
  • Add category as label attribute that can be used for semantic segmentation by @Trenza1ore in #626
  • Add option to set configuration using config string or dict (DoomGame.set_config) by @mwydmuch in #664
  • Add getters for some DoomGame attributes by @mwydmuch in #665
  • Rename ViZDoomOpenALSoundException to ViZDoomNoOpenALSoundException by @mwydmuch in #646
  • Refactor and make ServerState more efficient by @mwydmuch in #646

Gymnasium

  • Add support for truncation in Gymnasium wrapper based on episode timeout by @mwydmuch in #587, and #614
  • Binary buttons now use MultiBinary action space by @mwydmuch in #615
  • Add the audio buffer to the observation state in Gymnasium wrapper by @melnimr in #623

OpenAI Gym

Scenarios and environments

  • Add original Doom levels as Gymnasium environments by @mwydmuch in #662 and #676
  • Unified configurations (resolution, rendering, etc) for all default environments and bump their version from v0 to v1 by @mwydmuch in #662
  • Update freedoom to version 0.13 by @mwydmuch in #613

Determinism improvements

  • Make animated textures to reset at the beginning of each episode to ensure screen buffer determinism (make envs with animated textures deterministic) by @mwydmuch in #672
  • Make audio backend to restart at the beginning of each episode to ensure audio buffer determinism by @mwydmuch in #673

Audio buffer

Automap buffer

  • Add an option to use sprites with automap (DoomGame.set_automap_render_objects_as_sprites) by @mwydmuch in #671
  • Fix automap rendering issues by @mwydmuch in #672

Documentation

Examples

  • Add example benchmarking the VizDoom as Gymnasium vectorized env by @melnimr in #616
  • Update learning_stable_baselines3.py to support audio and notifications buffers by @melnimr and @mwydmuch in #638, and github.com//pull/674

Building, tests, CI/CD, and dependencies

New Contributors

Full Changelog: 1.2.4...1.3.0

ViZDoom 1.3.0rc1: Original Doom levels, Python 3.14

08 Feb 06:28
ac49a1f

Choose a tag to compare

ViZDoom 1.3.0rc1 Release Notes

This is the release candidate for ViZDoom 1.3.0 version.

What's Changed

New features

Determinism improvements

  • Make animated textures to reset at the beginning of each episode to ensure screen buffer determinism (make envs with animated textures deterministic) by @mwydmuch in #672
  • Make audio backend to restart at the beginning of each episode to ensure audio buffer determinism by @mwydmuch in #673

Docs

Building, tests, CI/CD, and dependencies

Full Changelog: 1.3.0.dev3...1.3.0rc1

ViZDoom 1.3.0.dev3: New notifications buffer, audio buffer improvments, label categories for easy semantic segmentation, maintenance

22 Oct 08:12
c115c8f

Choose a tag to compare

ViZDoom 1.3.0.dev3 Release Notes

This is the third dev release before the final 1.3.0 release.

What's Changed

New features

  • 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 an 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

  • Added the HASARD benchmark to the third-party projects list by @TTomilin in #639

Tests

  • Exception tests, rename ViZDoomOpenALSoundException -> ViZDoomNoOpenALSoundException, refactor ServerState, doc updates by @mwydmuch in #646

Building

Workflows

New Contributors

Full Changelog: 1.3.0.dev2...1.3.0.dev3

ViZDoom 1.3.0.dev2: Freedoom 0.13, truncation support, MultiBinary buttons

29 Jun 21:44
75c740a

Choose a tag to compare

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

29 May 11:55
fbc05eb

Choose a tag to compare

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

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

20 Aug 10:37
17479b9

Choose a tag to compare

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

16 Dec 00:56
b31b75a

Choose a tag to compare

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 int type but not for np.int types, when action_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_args methods 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

27 Sep 19:01
9b873c8

Choose a tag to compare

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

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

11 Sep 18:51
ee1bf9c

Choose a tag to compare

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

Full Changelog: 1.2.0...1.2.1

ViZDoom 1.2.0: add Gymnasium wrapper, Pickle support, and ARM compatibility

12 May 10:16

Choose a tag to compare

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 GameState object and its subobjects, which are returned from C++ by DoomGame.get_state() method in core Python API, now also support serialization. However, DoomGame object 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