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 Demo

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,
  • In-game 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

To install the latest release of ViZDoom, just run:

pip install vizdoom

Both x86-64 and AArch64 (ARM64) architectures are supported. Wheels are available for Python 3.8+ on Linux.

If Python wheel is not available for your platform (Python version <3.8, distros below manylinux_2_28 standard), pip will try to install (build) ViZDoom from the source. ViZDoom requires a C++11 compiler, CMake 3.12+, Boost 1.54+ SDL2, OpenAL (optional), and Python 3.7+ to install from source. See documentation for more details.

macOS

To install the latest release of ViZDoom, just run (it may take a few minutes as it will build ViZDoom from source on M1/M2 chips):

brew install cmake boost sdl2 openal-soft
pip install vizdoom

Both Intel and Apple Silicon CPUs are supported. 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/Pip for Apple Silicon.

Windows

To install the latest release of ViZDoom, just run:

pip install vizdoom

At the moment, only x86-64 architecture is supported on Windows. Wheels are available for Python 3.8+ on Windows.

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

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 descriptions of all ViZDoom types and methods can be found in the documentation.

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

Useful articles (for advanced users who want to create custom environments/scenarios):

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, a 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 feature ideas and design suggestions.

We have a roadmap for future development work for ViZDoom available here.

License

The 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.2.tar.gz (15.7 MB view details)

Uploaded Source

Built Distributions

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

Uploaded CPython 3.11 Windows x86-64

vizdoom-1.2.2-cp311-cp311-manylinux_2_28_x86_64.whl (28.0 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ x86-64

vizdoom-1.2.2-cp311-cp311-manylinux_2_28_aarch64.whl (27.8 MB view details)

Uploaded CPython 3.11 manylinux: glibc 2.28+ ARM64

vizdoom-1.2.2-cp311-cp311-macosx_10_9_x86_64.whl (31.1 MB view details)

Uploaded CPython 3.11 macOS 10.9+ x86-64

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

Uploaded CPython 3.10 Windows x86-64

vizdoom-1.2.2-cp310-cp310-manylinux_2_28_x86_64.whl (28.0 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ x86-64

vizdoom-1.2.2-cp310-cp310-manylinux_2_28_aarch64.whl (27.8 MB view details)

Uploaded CPython 3.10 manylinux: glibc 2.28+ ARM64

vizdoom-1.2.2-cp310-cp310-macosx_10_9_x86_64.whl (31.1 MB view details)

Uploaded CPython 3.10 macOS 10.9+ x86-64

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

Uploaded CPython 3.9 Windows x86-64

vizdoom-1.2.2-cp39-cp39-manylinux_2_28_x86_64.whl (28.0 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ x86-64

vizdoom-1.2.2-cp39-cp39-manylinux_2_28_aarch64.whl (27.8 MB view details)

Uploaded CPython 3.9 manylinux: glibc 2.28+ ARM64

vizdoom-1.2.2-cp39-cp39-macosx_10_9_x86_64.whl (31.1 MB view details)

Uploaded CPython 3.9 macOS 10.9+ x86-64

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

Uploaded CPython 3.8 Windows x86-64

vizdoom-1.2.2-cp38-cp38-manylinux_2_28_x86_64.whl (28.0 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ x86-64

vizdoom-1.2.2-cp38-cp38-manylinux_2_28_aarch64.whl (27.8 MB view details)

Uploaded CPython 3.8 manylinux: glibc 2.28+ ARM64

vizdoom-1.2.2-cp38-cp38-macosx_10_9_x86_64.whl (31.1 MB view details)

Uploaded CPython 3.8 macOS 10.9+ x86-64

File details

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

File metadata

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

File hashes

Hashes for vizdoom-1.2.2.tar.gz
Algorithm Hash digest
SHA256 21a69bef1131c5d94dea09bc5c96b5a2779775c1f42ade0b57c740eb9d19915b
MD5 4d635bbc63897fa1ec6b376cb4642905
BLAKE2b-256 eb980cc97b359eba74a78d0f6fe4e9b28d9fa5f5b9138a827873c75b8b584253

See more details on using hashes here.

File details

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

File metadata

  • Download URL: vizdoom-1.2.2-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.2-cp311-cp311-win_amd64.whl
Algorithm Hash digest
SHA256 6a262ac659d7c8749e9f1507e81aadc1a4f01cefb91465b04546df201f04ccae
MD5 8ec325e0a20a6a0b454660e2722b7572
BLAKE2b-256 ca519bdbdc27d49e5e1cbbb239e3c89825b704fe7fec914c5c02644c2241aad3

See more details on using hashes here.

File details

Details for the file vizdoom-1.2.2-cp311-cp311-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for vizdoom-1.2.2-cp311-cp311-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 0a6124e4002d4651905fd3545a0106b13a71d36edfcd46e6cf7060840cda40ac
MD5 5fc149cf8f3aa77617844fc75ae09167
BLAKE2b-256 bb4a4a04a7bc6192b83f5633a1924135381029cad6d5a2e5f04c047e4765950a

See more details on using hashes here.

File details

Details for the file vizdoom-1.2.2-cp311-cp311-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for vizdoom-1.2.2-cp311-cp311-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 122c4d7256adfd1b44dcdb1757331fded85a5ffcb1d988d5dc65a2899ca8d1b4
MD5 3f98ea09e40e1d0ae3baf5637ed2f2f7
BLAKE2b-256 d7f1015546e3fcefaa1d25c36b4c12ecaf81fe23f6a8e946f083feff55d0132f

See more details on using hashes here.

File details

Details for the file vizdoom-1.2.2-cp311-cp311-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for vizdoom-1.2.2-cp311-cp311-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 f57631e2784e8481c8e3dc4931fe13da5a1f50700bc969178c1d5c0659f91ac0
MD5 6300325932ecabb337d4f86f66e701a3
BLAKE2b-256 5f591a4a066bb66ad21248182f390acf7a29fd4c0cb92bed6f7794f1a502ce49

See more details on using hashes here.

File details

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

File metadata

  • Download URL: vizdoom-1.2.2-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.2-cp310-cp310-win_amd64.whl
Algorithm Hash digest
SHA256 a07167af16a7ee04f52a82e1a22b621a3f24c0a2162c0519bfcc43ab96b389a2
MD5 3dd7a0281d09d108ff44b712dcf23790
BLAKE2b-256 41383184f4d0e6e671edfe72ab2a28f2d655fd16d6a8a14c0367140eb9277bed

See more details on using hashes here.

File details

Details for the file vizdoom-1.2.2-cp310-cp310-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for vizdoom-1.2.2-cp310-cp310-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 62b9c3e7f43f0234bf1803994fdbfb1626f320925b645e0257aadc6ef270b984
MD5 c76b5b6d01662dfa07110cc7d82d6d42
BLAKE2b-256 ee399f83c7f8648de0bad57311faa8c3ba1ee3dd011b4ddd8ab7bc7998bcd00f

See more details on using hashes here.

File details

Details for the file vizdoom-1.2.2-cp310-cp310-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for vizdoom-1.2.2-cp310-cp310-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 49180ed13d30109bcd99b38e6b923c5bd74e6bb364add8d46beb5cdf7405fe10
MD5 2d3f366582a91d505db2a693e82ce746
BLAKE2b-256 5b598ab7e6e5a23593b5d2e157e9dd8f44e19daf67a717a063dbe3fdadcf7845

See more details on using hashes here.

File details

Details for the file vizdoom-1.2.2-cp310-cp310-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for vizdoom-1.2.2-cp310-cp310-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 3e2f478e1728702f17b828de0e7ee6bf0e2809c1786ce21f69ce00e4a4da82e0
MD5 160562f595eb406bff5f0796055cbe6e
BLAKE2b-256 0d0ab68f920546b9da3b1d433be605877b691968e37cda11fc941f654a051f91

See more details on using hashes here.

File details

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

File metadata

  • Download URL: vizdoom-1.2.2-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.2-cp39-cp39-win_amd64.whl
Algorithm Hash digest
SHA256 96d0f6eb046acf1e725adf29f7e83cfb1aea7fb6dd871c18acbb8d327911166d
MD5 37a12fda76b10ec5cbe22432e0f1afc1
BLAKE2b-256 369bc3d73330f10e89684271933f24f26eca7ef4895ca1da3e92207d63712bb9

See more details on using hashes here.

File details

Details for the file vizdoom-1.2.2-cp39-cp39-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for vizdoom-1.2.2-cp39-cp39-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 3c8b9a853c46425dc12b45de639a0a55bd55804b4967127e26b08651caf3cc3f
MD5 143f24a0f94de775eca53cf37ce0f7a3
BLAKE2b-256 6950deb3f28dcd8b13843ea4d2f30ed4beae0e609b2e1112eb9ed2ed4a08b5cb

See more details on using hashes here.

File details

Details for the file vizdoom-1.2.2-cp39-cp39-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for vizdoom-1.2.2-cp39-cp39-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 d32766326a5e5d13c79bfa8146e4be580f3efc83a75be086c197dba40b701e6e
MD5 d5f0d1e1af47465fbce567042a547c3b
BLAKE2b-256 080ea800414df0446936227d1bc827b987991d9a02c5a634c3a9531d69e9c823

See more details on using hashes here.

File details

Details for the file vizdoom-1.2.2-cp39-cp39-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for vizdoom-1.2.2-cp39-cp39-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 ef6f0420c8bdf8b5521a219723127ab86e4e7fa242cb5e7779d1c6c9819fea88
MD5 e5019eeb5516e4c7d9e1c40c0b23a898
BLAKE2b-256 f467de52f94d07b36b56c02bfb1b1fdc0b6563624235a6f87e24ac4943a88b43

See more details on using hashes here.

File details

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

File metadata

  • Download URL: vizdoom-1.2.2-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.2-cp38-cp38-win_amd64.whl
Algorithm Hash digest
SHA256 7dd9d3498517e6fd3b8966e28c3e272084eadbafb0e3bd85934471425c0838b8
MD5 e258d2645eedabe556f6914ae288d340
BLAKE2b-256 2ae181c7dd305801cf1e58b3afe7a2662db063cf1f83215820478409b7d4232f

See more details on using hashes here.

File details

Details for the file vizdoom-1.2.2-cp38-cp38-manylinux_2_28_x86_64.whl.

File metadata

File hashes

Hashes for vizdoom-1.2.2-cp38-cp38-manylinux_2_28_x86_64.whl
Algorithm Hash digest
SHA256 cb9f5d15f89cdb054b663af5847866c6763a2502376a1960227ca0c0f4cfff0e
MD5 772dd129512ec0e1b009fc7889d01485
BLAKE2b-256 a8527d32a94c890ae260178dcd24513f52ff24dfd2856830bb837f09d9852e35

See more details on using hashes here.

File details

Details for the file vizdoom-1.2.2-cp38-cp38-manylinux_2_28_aarch64.whl.

File metadata

File hashes

Hashes for vizdoom-1.2.2-cp38-cp38-manylinux_2_28_aarch64.whl
Algorithm Hash digest
SHA256 c2db4bb64025227e64a176462c75571201f79e862d0eda0f8b58c91b5e7b62fc
MD5 10ae685defa64c5f0948f6bb179d9c6f
BLAKE2b-256 e20f52a1d7c724eb9ed39c65294306bdc3e7172b029da2b5e602c958a44f7574

See more details on using hashes here.

File details

Details for the file vizdoom-1.2.2-cp38-cp38-macosx_10_9_x86_64.whl.

File metadata

File hashes

Hashes for vizdoom-1.2.2-cp38-cp38-macosx_10_9_x86_64.whl
Algorithm Hash digest
SHA256 b96c234a5dc0e97588011750dcebbd6c0710725629713db1905ac02bf702ca72
MD5 b177707669c3a8d77583613e8384c2d4
BLAKE2b-256 47083bfda413e8309763359ab4287c60c65f8b8bf9e8a103b3b5386e846e80de

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