Skip to main content

ViZDoom is Doom-based AI Research Platform for Reinforcement Learning from Raw Visual Information.

Project description

PyPI version Build pre-commit Code style: black

ViZDoom allows developing AI bots that play Doom using only visual information (the screen buffer). It is primarily intended for research in machine visual learning, and deep reinforcement learning, in particular.

ViZDoom is based on ZDoom to provide the game mechanics.

vizdoom_deadly_corridor

Features

  • Multi-platform (Linux, macOS, Windows),
  • API for Python and C++,
  • Gymnasium/OpenAI Gym environment wrappers (thanks to Arjun KG Benjamin Noah Beal, Lawrence Francis, and Mark Towers),
  • Easy-to-create custom scenarios (visual editors, scripting language, and examples available),
  • Async and sync single-player and multiplayer modes,
  • Fast (up to 7000 fps in sync mode, single-threaded),
  • Lightweight (few MBs),
  • Customizable resolution and rendering parameters,
  • Access to the depth buffer (3D vision),
  • Automatic labeling of game objects visible in the frame,
  • Access to the audio buffer (thanks to Shashank Hegde),
  • Access to the list of actors/objects and map geometry,
  • Off-screen rendering,
  • Episodes recording,
  • Time scaling in async mode.

ViZDoom API is reinforcement learning friendly (suitable also for learning from demonstration, apprenticeship learning or apprenticeship via inverse reinforcement learning, etc.).

Julia (thanks to Jun Tian), Lua, and Java bindings are available in other branches but are no longer maintained.

Cite as

M Wydmuch, M Kempka & W Jaśkowski, ViZDoom Competitions: Playing Doom from Pixels, IEEE Transactions on Games, vol. 11, no. 3, pp. 248-259, 2019 (arXiv:1809.03470)

@article{Wydmuch2019ViZdoom,
  author  = {Marek Wydmuch and Micha{\l} Kempka and Wojciech Ja\'skowski},
  title   = {{ViZDoom} {C}ompetitions: {P}laying {D}oom from {P}ixels},
  journal = {IEEE Transactions on Games},
  year    = {2019},
  volume  = {11},
  number  = {3},
  pages   = {248--259},
  doi     = {10.1109/TG.2018.2877047},
  note    = {The 2022 IEEE Transactions on Games Outstanding Paper Award}
}

or

M. Kempka, M. Wydmuch, G. Runc, J. Toczek & W. Jaśkowski, ViZDoom: A Doom-based AI Research Platform for Visual Reinforcement Learning, IEEE Conference on Computational Intelligence and Games, pp. 341-348, Santorini, Greece, 2016 (arXiv:1605.02097)

@inproceedings{Kempka2016ViZDoom,
  author    = {Micha{\l} Kempka and Marek Wydmuch and Grzegorz Runc and Jakub Toczek and Wojciech Ja\'skowski},
  title     = {{ViZDoom}: A {D}oom-based {AI} Research Platform for Visual Reinforcement Learning},
  booktitle = {IEEE Conference on Computational Intelligence and Games},
  year      = {2016},
  address   = {Santorini, Greece},
  month     = {Sep},
  pages     = {341--348},
  publisher = {IEEE},
  doi       = {10.1109/CIG.2016.7860433},
  note      = {The Best Paper Award}
}

Python quick start

Linux

Both x86-64 and ARM64 architectures are supported. ViZDoom requires C++11 compiler, CMake 3.4+, Boost 1.65+ SDL2, OpenAL (optional) and Python 3.7+. Below you will find instructrion how to install these dependencies.

apt-based distros (Ubuntu, Debian, Linux Mint, etc.)

To install ViZDoom run (may take few minutes):

apt install cmake git libboost-all-dev libsdl2-dev libopenal-dev
pip install vizdoom

We recommend using at least Ubuntu 18.04+ or Debian 10+ with Python 3.7+.

dnf/yum-based distros (Fedora, RHEL, CentOS, Alma/Rocky Linux, etc.)

To install ViZDoom run (may take few minutes):

dnf install cmake git boost-devel SDL2-devel openal-soft-devel
pip install vizdoom

We recommend using at least Fedora 35+ or RHEL/CentOS/Alma/Rocky Linux 9+ with Python 3.7+. To install openal-soft-devel on RHEL/CentOS/Alma/Rocky Linux 9, one needs to use dnf --enablerepo=crb install.

Conda-based installation

To install ViZDoom on a conda environment (no system-wide installations required):

conda install -c conda-forge boost cmake sdl2
git clone https://github.com/mwydmuch/ViZDoom.git --recurse-submodules
cd ViZDoom
python setup.py build && python setup.py install

Note that pip install vizdoom won't work with conda install and you have to follow these steps.

macOS

Both Intel and Apple Silicon CPUs are supported.

To install ViZDoom on run (may take few minutes):

brew install cmake git boost openal-soft sdl2
pip install vizdoom

We recommend using at least macOS High Sierra 10.13+ with Python 3.7+. On Apple Silicon (M1 and M2), make sure you are using Python for Apple Silicon.

Windows

To install pre-build release for Windows 10 or 11 64-bit and Python 3.7+ just run (should take few seconds):

pip install vizdoom

Please note that the Windows version is not as well-tested as Linux and macOS versions. It can be used for development and testing if you want to conduct experiments on Windows, please consider using Docker or WSL.

Gymnasium/Gym wrappers

Gymnasium environments are installed along with ViZDoom. See documentation and examples on the use of Gymnasium API.

OpenAI-Gym wrappers are also available, to install them run:

pip install vizdoom[gym]

See documentation and examples on the use of Gym API. OpenAI-Gym wrappers are deprecated and will be removed in future versions in favour of Gymnasium.

Examples

  • Python (contain learning examples implemented in PyTorch, TensorFlow and Theano)
  • C++

Python examples are currently the richest, so we recommend to look at them, even if you plan to use other language. The API is almost identical for all languages.

See also the tutorial.

Original Doom graphics

Unfortunately, we cannot distribute ViZDoom with original Doom graphics. If you own original Doom or Doom 2 games, you can replace Freedoom graphics by placing doom.wad or doom2.wad into your working directory or vizdoom package directory.

Alternatively, any base game WAD (including other Doom engine-based games and custom/community games) can be used by pointing to it with the set_doom_game_path/setDoomGamePath method.

Documentation

Detailed description of all types and methods:

Additional documents:

Full documentation of the Doom engine and ACS scripting language can be found on ZDoom Wiki.

Useful articles:

Awesome Doom tools/projects

  • SLADE3 - great Doom map (scenario) editor for Linux, MacOS and Windows.
  • Doom Builder 2 - another great Doom map editor for Windows.
  • OBLIGE - Doom random map generator and PyOblige is a simple Python wrapper for it.
  • Omgifol - nice Python library for manipulating Doom maps.
  • NavDoom - Maze navigation generator for ViZDoom (similar to DeepMind Lab).
  • MazeExplorer - More sophisticated maze navigation generator for ViZDoom.
  • Sample Factory - A high performance reinforcement learning framework for ViZDoom.
  • EnvPool - A high performance vectorized environment for ViZDoom.
  • Obsidian - Doom random map generator, continuation of OBLIGE.

Contributions

This project is maintained and developed in our free time. All bug fixes, new examples, scenarios and other contributions are welcome! We are also open to features ideas and design suggestions.

License

Code original to ViZDoom is under MIT license. ZDoom uses code from several sources with varying licensing schemes.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

vizdoom-1.2.0.tar.gz (15.7 MB view details)

Uploaded Source

Built Distributions

vizdoom-1.2.0-cp311-cp311-win_amd64.whl (15.5 MB view details)

Uploaded CPython 3.11 Windows x86-64

vizdoom-1.2.0-cp310-cp310-win_amd64.whl (15.5 MB view details)

Uploaded CPython 3.10 Windows x86-64

vizdoom-1.2.0-cp39-cp39-win_amd64.whl (15.5 MB view details)

Uploaded CPython 3.9 Windows x86-64

vizdoom-1.2.0-cp38-cp38-win_amd64.whl (15.5 MB view details)

Uploaded CPython 3.8 Windows x86-64

vizdoom-1.2.0-cp37-cp37m-win_amd64.whl (15.5 MB view details)

Uploaded CPython 3.7m Windows x86-64

File details

Details for the file vizdoom-1.2.0.tar.gz.

File metadata

  • Download URL: vizdoom-1.2.0.tar.gz
  • Upload date:
  • Size: 15.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.9.13

File hashes

Hashes for vizdoom-1.2.0.tar.gz
Algorithm Hash digest
SHA256 3f69284c91a5f7d754bc438ab5d529d48e7907058bebe601d346ca36f22cef1f
MD5 920b9d14fa357bf1b8eefe482501f885
BLAKE2b-256 4fc51a173600f519d4d9efff7a3affcd27ccbc50ee42ad653299b6c313091338

See more details on using hashes here.

File details

Details for the file vizdoom-1.2.0-cp311-cp311-win_amd64.whl.

File metadata

  • Download URL: vizdoom-1.2.0-cp311-cp311-win_amd64.whl
  • Upload date:
  • Size: 15.5 MB
  • Tags: CPython 3.11, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.0

File hashes

Hashes for vizdoom-1.2.0-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 5ee7bd0473d6bfb285b648c19aeabb4ba2a84700fc217606cdc624a662d377b7
MD5 ce27f9af8f3bad881a69d9a30625910b
BLAKE2b-256 e3aa4cc28f199eb3249777ee03d3e612c25ea11b8d16dbbc327dace86c82bc37

See more details on using hashes here.

File details

Details for the file vizdoom-1.2.0-cp310-cp310-win_amd64.whl.

File metadata

  • Download URL: vizdoom-1.2.0-cp310-cp310-win_amd64.whl
  • Upload date:
  • Size: 15.5 MB
  • Tags: CPython 3.10, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.0

File hashes

Hashes for vizdoom-1.2.0-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a2569f95aa962411ba82bdc98b3aa55b7d8e47f31d8b1bcbcbe0fde38116b551
MD5 283c026f16b0d2383a112c2f897f87ce
BLAKE2b-256 0a58a8ac8344a4f2e12d06233b672cbbaa765e295ce049b1987d5407702a7a68

See more details on using hashes here.

File details

Details for the file vizdoom-1.2.0-cp39-cp39-win_amd64.whl.

File metadata

  • Download URL: vizdoom-1.2.0-cp39-cp39-win_amd64.whl
  • Upload date:
  • Size: 15.5 MB
  • Tags: CPython 3.9, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.0

File hashes

Hashes for vizdoom-1.2.0-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 74b22493976d8e21650c0ca884cc004ebeeb7cd0febf2c3c6307a8d786108568
MD5 494e83e45a86285507334cd2019561c8
BLAKE2b-256 887a91922495973c01fd2bf44d414f9e9e4f07015e8273aa3fab49e9135ecb23

See more details on using hashes here.

File details

Details for the file vizdoom-1.2.0-cp38-cp38-win_amd64.whl.

File metadata

  • Download URL: vizdoom-1.2.0-cp38-cp38-win_amd64.whl
  • Upload date:
  • Size: 15.5 MB
  • Tags: CPython 3.8, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.0

File hashes

Hashes for vizdoom-1.2.0-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 6892d57e63218df48c03be76122a9733a4688a593d0a45622a92d560e0fcb012
MD5 960f73544aff073297c006e5108865b3
BLAKE2b-256 0d6961a8b578158b534b7181003febe8368001138344b30f8f4950ff5ecfcf1c

See more details on using hashes here.

File details

Details for the file vizdoom-1.2.0-cp37-cp37m-win_amd64.whl.

File metadata

  • Download URL: vizdoom-1.2.0-cp37-cp37m-win_amd64.whl
  • Upload date:
  • Size: 15.5 MB
  • Tags: CPython 3.7m, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/4.0.2 CPython/3.10.0

File hashes

Hashes for vizdoom-1.2.0-cp37-cp37m-win_amd64.whl
Algorithm Hash digest
SHA256 f380d40b1111cb3e9d3fa013cea16d6be5f8c9aad8e3e8f769311819dc487678
MD5 feedb79a0f21eb2ba62b7e85058d6f7c
BLAKE2b-256 830894b6b65de91427f53151314bef881e03d66bc69df7d4089b5197fcf80d3f

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page