ViZDoom是基于Doom的AI研究平台,用于从原始视觉信息中进行强化学习。
项目描述
ViZDoom 允许开发仅使用视觉信息(屏幕缓冲区)玩《Doom》的 AI 机器人。它主要用于机器视觉学习和深度强化学习的研究。
ViZDoom 基于基于 ZDoom 引擎提供游戏机制。
功能
- 多平台(Linux、macOS、Windows),
- Python 和 C++ 的 API,
- Gymnasium/OpenAI Gym 环境包装(感谢 Arjun KG Benjamin Noah Beal,Lawrence Francis,和 Mark Towers),
- 易于创建自定义场景(提供视觉编辑器、脚本语言和示例),
- 异步和同步单人及多人模式,
- 速度快(同步模式下高达 7000 fps,单线程),
- 轻量级(几 MB),
- 可定制分辨率和渲染参数,
- 访问深度缓冲区(3D 视觉),
- 自动标记帧中可见的游戏对象,
- 访问音频缓冲区(感谢 Shashank Hegde),
- 访问演员/对象列表和地图几何形状,
- 离屏渲染,
- 记录剧集,
- 异步模式下的游戏时间缩放。
ViZDoom API 对强化学习友好(也适用于从演示学习、学徒学习或通过逆强化学习进行学徒学习等)。
Julia(感谢 Jun Tian)、Lua 和 Java 绑定在其他分支中可用,但不再维护。
引用方式
M Wydmuch, M Kempka & W Jaśkowski, ViZDoom 竞赛:从像素中玩《Doom》,IEEE 游戏交易,第 11 卷,第 3 期,第 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}
}
或
M. Kempka, M. Wydmuch, G. Runc, J. Toczek & W. Jaśkowski, ViZDoom:基于《Doom》的视觉强化学习 AI 研究平台,IEEE 计算智能与游戏会议,第 341-348 页,希腊圣托里尼,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 快速入门
版本 1.2.3 及以下版本与 NumPy 2.0+ 不兼容。要使用 NumPy 2.0+,请将 ViZDoom 升级到版本 1.2.4+。
Linux
要安装 ViZDoom 的最新版本,只需运行
pip install vizdoom
支持 x86-64 和 AArch64(ARM64)架构。Linux 上有 Python 3.8+ 的 wheel。
如果您的平台(Python 版本 <3.8,低于 manylinux_2_28 标准的发行版)没有 Python wheel,pip 将尝试从源代码安装(构建)ViZDoom。从源代码安装 ViZDoom 需要 C++11 编译器、CMake 3.12+、Boost 1.54+、SDL2、OpenAL(可选)和 Python 3.8+。有关更多详细信息,请参阅 文档。
macOS
要安装 ViZDoom 的最新版本,只需运行
pip install vizdoom
支持 Intel 和 Apple Silicon CPU。预构建的 wheel 可用于 Intel macOS 12.0+ 和 Apple Silicon macOS 14.0+。
如果您的平台(Python 版本 <3.8,较旧的 macOS 版本)没有 Python wheel,pip 将尝试从源代码安装(构建)ViZDoom。在这种情况下,使用 Homebrew 安装所需的依赖项。
brew install cmake boost sdl2
我们建议使用至少 macOS High Sierra 10.13+ 和 Python 3.8+。在 Apple Silicon(M1、M2 和 M3)上,请确保您正在使用 Apple Silicon 的 Python/Pip。
Windows
要安装 ViZDoom 的最新版本,只需运行
pip install vizdoom
目前,Windows 上仅支持 x86-64 架构。Windows 上有 Python 3.9+ 的 wheel。
请注意,Windows 版本不如 Linux 和 macOS 版本测试得好。它可以用于开发和测试,但如果您想在 Windows 上进行严肃的(耗时和资源密集型)实验,请考虑使用 Docker 或 WSL 与 Linux 版本。
Gymnasium/Gym 包装器
体育馆环境与ViZDoom一起安装。请参阅文档和示例,了解如何使用Gymnasium API。
还提供了OpenAI-Gym包装器,要安装它们,请运行
pip install vizdoom[gym]
请参阅文档和示例,了解如何使用Gym API。 OpenAI-Gym包装器已被弃用,将在未来的版本中移除,以支持Gymnasium。
示例
Python示例目前最为丰富,因此我们建议查看它们,即使您计划使用C++。API在语言之间几乎相同,唯一的区别是Python使用snake_case,而C++使用camelCase来表示方法和函数。
原始Doom图形
不幸的是,我们无法将原始Doom或Doom 2游戏图形与ViZDoom一起分发。如果您拥有原始Doom或Doom 2游戏,可以将Freedoom图形替换为将doom.wad
或doom2.wad
放入您的当前工作目录或vizdoom
包目录。
或者,您可以通过使用set_doom_game_path/setDoomGamePath
方法指向任何基础游戏WAD(包括其他基于Doom引擎的游戏和自定义/社区游戏)来使用它。
文档
所有ViZDoom类型和方法的详细描述可在文档中找到。
有关ZDoom引擎和ACS脚本语言的完整文档可在ZDoom Wiki上找到。
有用的文章(针对想要创建自定义环境/场景的高级用户)
出色的Doom工具/项目
- SLADE3 - Linux、MacOS和Windows上出色的Doom地图(场景)编辑器。
- Doom Builder 2 - 另一个出色的Windows Doom地图编辑器。
- OBLIGE - Doom随机地图生成器,PyOblige是它的简单Python包装器。
- Omgifol - 用于操作Doom地图的Python库。
- NavDoom - ViZDoom的迷宫导航生成器(类似于DeepMind Lab)。
- MazeExplorer - ViZDoom的一个更复杂的迷宫导航生成器。
- Sample Factory - ViZDoom的高性能强化学习框架。
- EnvPool - ViZDoom的高性能向量化环境。
- Obsidian - Doom随机地图生成器,OBLIGE的延续。
- LevDoom - ViZDoom中包含视觉复杂度难度级别的泛化基准。
- COOM - 提供具有不同目标的任务序列的ViZDoom持续学习基准。
贡献
该项目在我们的业余时间维护和开发。所有错误修复、新示例、场景和其他贡献都欢迎!我们也欢迎功能想法和设计建议。
我们可以在这里找到ViZDoom未来开发工作的路线图。
许可证
ViZDoom的原始代码受MIT许可协议保护。ZDoom使用了来自多个来源的代码,并采用了不同的许可方案。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定选择哪个,请了解更多关于安装包的信息。
源代码分发
构建版本
vizdoom-1.2.4.tar.gz 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bf60251ae66c1a05dbf7a66e3bd3c46c7842b272dcfd38a0db7ce2904edfbc2d |
|
MD5 | a0cf353e0258b10051a32602e2de7683 |
|
BLAKE2b-256 | c3b068e2ae7d48d8420402db35c404c6b699f3d0d018153660ef0235e1ca8691 |
vizdoom-1.2.4-cp312-cp312-win_amd64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | cff1ae7c6d728958e297272b7357060906f59962838790bc82103ed377414786 |
|
MD5 | 74c091ce2dfdbd760e9ec89f006dd311 |
|
BLAKE2b-256 | 587ff81bd4f9f5bd26fa7bc7ccb3a59580a630cdbce3e74a7c3eec8d53e6a00c |
vizdoom-1.2.4-cp312-cp312-manylinux_2_28_x86_64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c7daa5b1f45ba916b219713de7d80c35f235cec843b161ac080a0c8b4849eee2 |
|
MD5 | ce098a509f03c5343db6e562b55cd832 |
|
BLAKE2b-256 | 7b408c374710e99fd91d94e9a2885a9c6cecef5414cef44838781797819f2e27 |
vizdoom-1.2.4-cp312-cp312-manylinux_2_28_aarch64.whl 的哈希值
算法 | 哈希摘要 | |
---|---|---|
SHA256 | bad3f070841395acaf5d1c09cca95d1aa6cc86a6c23ae1477e48f378364acee9 |
|
MD5 | 13f2d3905bdadff6587605a4d32c9269 |
|
BLAKE2b-256 | 35d8b4fba3318e4104c0e3fd934269627fc0d68d15c610393b1644c926dd1878 |
哈希值 用于 vizdoom-1.2.4-cp312-cp312-macosx_14_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | f3f3365f11d99bdb7ef164a78d5f51299947c544faf477384d7bd983fef456fe |
|
MD5 | ecae5e86b6aa899739fe8bc10d03850b |
|
BLAKE2b-256 | 059b3f7e2a4d79431bcf2eb8d2afc11c125a6efad5127bb778d271ac8cc46055 |
哈希值 用于 vizdoom-1.2.4-cp312-cp312-macosx_12_0_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 3d9ebc9074157fed67860758158eebacf0646bcea24359acfe7d9ad711528a0c |
|
MD5 | 228464116e644f39f08d715ac96e5a12 |
|
BLAKE2b-256 | f56e1e489d3a9db1cb083255c6024717f5fa2a7ef67b65247cfc9e116e489375 |
哈希值 用于 vizdoom-1.2.4-cp311-cp311-manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | ce3ecb23abb5c3e58213f1ce12bdf30be9bb856a94b9d86610ac378be712c0fd |
|
MD5 | e69bbc770e9f7934614d2495c70d7390 |
|
BLAKE2b-256 | 2e2afb6d8dffa72cc84fc965f6a5c5c0265575a43edf5f25175c0603816404be |
哈希值 用于 vizdoom-1.2.4-cp311-cp311-manylinux_2_28_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 6247cca5e3a5d2e7db0239a9528a13c372ac9da70c84ea472b72ed94cac622ac |
|
MD5 | 7ecac27b3464573b0c614ec0fe83904e |
|
BLAKE2b-256 | 44e348fb3b048bf9ec5fa5b856ed607fdd2f6c4b4543dc8cd0a9c305086be6ae |
哈希值 用于 vizdoom-1.2.4-cp311-cp311-macosx_14_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 8e1937448853fb288ae7bfe1da7e64ebea178143df85bb68ede18c077abd4244 |
|
MD5 | 832980aa4b6ed714a7a2b08363c3ba95 |
|
BLAKE2b-256 | 938e44546ebaadac170ad906ed6eb068f2a283895843d7d248f60f971656d013 |
哈希值 用于 vizdoom-1.2.4-cp311-cp311-macosx_12_0_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a585a56e04a74658585ef36a12abae21b99da834aff888ff317670bbd0f23fbe |
|
MD5 | 823a70301fe73c1856a4afa0f3fb89d7 |
|
BLAKE2b-256 | 057d378e2d7901335ae6e5c697581298bbe15f63dfb18a818364a7cdb368653b |
哈希值 用于 vizdoom-1.2.4-cp310-cp310-manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 866d01582af7dec6e78e77faf1a5b10f3b6ac25f252b31c994c7715cd4c891b3 |
|
MD5 | 162005f38122c082c0b13fe9a1eafa10 |
|
BLAKE2b-256 | b9b85ff438b30b8eeda480c94caa4e05fb4f85f3023d5606722bd6915ae11f36 |
哈希值 用于 vizdoom-1.2.4-cp310-cp310-manylinux_2_28_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | fda75e11d9015f12fff65cc36e9c2e6940902cd5b61e60be00fa66190be418b8 |
|
MD5 | c5f68e7f2ba05ec946658b8b8223656a |
|
BLAKE2b-256 | 1c275e4eb90a16b6ab67ef3a491ae00e9255aa6e3c365165925ba6146b1b553e |
哈希值 用于 vizdoom-1.2.4-cp310-cp310-macosx_14_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | a9cd8b99abf09764439f2a82ee87f2d9df86e784774bb0d1fd560e5c801faa34 |
|
MD5 | 0d34fe587dd1d2f492044105a7a0c31e |
|
BLAKE2b-256 | d6b85006d6db6265572d70bd758f2dcfb52ac9aadc770149d2a81204eb0227a0 |
哈希值 用于 vizdoom-1.2.4-cp310-cp310-macosx_12_0_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b37ebc5e6c0c3e585bf5d4c0d2b7deeab96742e01fda92e19ceb2fbd0bd629b7 |
|
MD5 | ae7232e8aed458c1dfcf7464ed911a30 |
|
BLAKE2b-256 | 5b25b3294f7189fb47e8ace818ec677e880859c950477ea0cca581f1e3d8e97f |
哈希值 用于 vizdoom-1.2.4-cp39-cp39-manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 7c2089e5b3d43f4e4f04a83b46a81bd196545c704daf18c978959cad54a2bfa6 |
|
MD5 | 2cba31cb5d703ceafc189980fe884649 |
|
BLAKE2b-256 | 2be8b439a776acf8ada88c138e0e0053bc43ea849e39010497ee548d04ff15b4 |
哈希值 用于 vizdoom-1.2.4-cp39-cp39-manylinux_2_28_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | c77c2caa7fe5aa2566b19d605259b3f8e0ee5436416aff6e527caea4b46803db |
|
MD5 | 5c577da3c37e12933208825537e66c16 |
|
BLAKE2b-256 | 8d54cf49a142012b7f552c16765db83d8357620de376ae08dd60207f00df0e69 |
哈希值 用于 vizdoom-1.2.4-cp39-cp39-macosx_14_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 51daad393d694e34a0341aafe51875f20b25883f6db558846b49574e6cbd8c25 |
|
MD5 | 72fbc0b3ab31fa476df640eb8096e684 |
|
BLAKE2b-256 | 839e8e72250f0d0d8187a97d33b142acc3f8b7217202020fa268c45bfd27acce |
哈希值 用于 vizdoom-1.2.4-cp39-cp39-macosx_12_0_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | aa4b926d8b2a98e76f0079f962f952e2f3f3c02b61adbca2c13225164bab9d68 |
|
MD5 | dce983b7db5e80049d2e413ddcf436b6 |
|
BLAKE2b-256 | 448ebed39b93a1123fc43d9624cbf00a0603200d34b606b4d187203a76aaafe8 |
哈希值 用于 vizdoom-1.2.4-cp38-cp38-manylinux_2_28_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 24c3da03a12013a0a23dbc657a136dc8c0ea773b661023345d926e9ff6f0b868 |
|
MD5 | 9aae02382c73f4c0af60cb745e2d18c1 |
|
BLAKE2b-256 | 79a14f7fc7a534e2828269f28017f8d0ddc8a6415085baf54a670fca9a9947cc |
哈希值 用于 vizdoom-1.2.4-cp38-cp38-manylinux_2_28_aarch64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | aa223d1cfb50996199d08ce7fb1e0e912c73015932d2f766361e3e054ad88450 |
|
MD5 | 9d13d7b5566824858e0cb15d22d323bd |
|
BLAKE2b-256 | 656dd10c29e3ce5b04ce1d0bbad3984d846e92d0754468055c45b483c0bdf413 |
哈希值 用于 vizdoom-1.2.4-cp38-cp38-macosx_14_0_arm64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | dab47d191c43d48dd8d3e95b93cf5e3922d7569be9c3cb9a44063dbe14b60b27 |
|
MD5 | 006e9e71db1895dab4a179b1bdec4ca0 |
|
BLAKE2b-256 | 4ebba50eac79666a3a7a37edec810b9655ee07e550e1b6453809306715931690 |
哈希值 用于 vizdoom-1.2.4-cp38-cp38-macosx_12_0_x86_64.whl
算法 | 哈希摘要 | |
---|---|---|
SHA256 | e6b14a2ae19d3d4438456ccd5b9f97e283d32462540fc7ececa7d661280be02b |
|
MD5 | e82787681b197bb2a6c7e128b7a8673d |
|
BLAKE2b-256 | 19445eb00f892ddb77e3ce09bb2990ff4e25dae5778e0265106d2c15ee3058f7 |