Skip to content

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

Compare
Choose a tag to compare
@mwydmuch mwydmuch released this 12 May 10:16
· 146 commits to master since this release

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