跳转到主要内容

ViZDoom是基于Doom的AI研究平台,用于从原始视觉信息中进行强化学习。

项目描述

PyPI version Build and test pre-commit Code style: black

ViZDoom 允许开发仅使用视觉信息(屏幕缓冲区)玩《Doom》的 AI 机器人。它主要用于机器视觉学习和深度强化学习的研究。

ViZDoom 基于基于 ZDoom 引擎提供游戏机制。

ViZDoom Demo

功能

  • 多平台(Linux、macOS、Windows),
  • Python 和 C++ 的 API,
  • Gymnasium/OpenAI Gym 环境包装(感谢 Arjun KG Benjamin Noah BealLawrence 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 上进行严肃的(耗时和资源密集型)实验,请考虑使用 DockerWSL 与 Linux 版本。

Gymnasium/Gym 包装器

体育馆环境与ViZDoom一起安装。请参阅文档示例,了解如何使用Gymnasium API。

还提供了OpenAI-Gym包装器,要安装它们,请运行

pip install vizdoom[gym]

请参阅文档示例,了解如何使用Gym API。 OpenAI-Gym包装器已被弃用,将在未来的版本中移除,以支持Gymnasium。

示例

  • Python(包含使用PyTorch、TensorFlow和Theano实现的示例学习示例)
  • C++

Python示例目前最为丰富,因此我们建议查看它们,即使您计划使用C++。API在语言之间几乎相同,唯一的区别是Python使用snake_case,而C++使用camelCase来表示方法和函数。

原始Doom图形

不幸的是,我们无法将原始Doom或Doom 2游戏图形与ViZDoom一起分发。如果您拥有原始Doom或Doom 2游戏,可以将Freedoom图形替换为将doom.waddoom2.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 (15.9 MB 查看哈希值)

上传时间 源代码

构建版本

vizdoom-1.2.4-cp312-cp312-win_amd64.whl (15.5 MB 查看哈希值)

上传时间 CPython 3.12 Windows x86-64

vizdoom-1.2.4-cp312-cp312-manylinux_2_28_x86_64.whl (28.1 MB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.28+ x86-64

vizdoom-1.2.4-cp312-cp312-manylinux_2_28_aarch64.whl (27.9 MB 查看哈希值)

上传时间 CPython 3.12 manylinux: glibc 2.28+ ARM64

vizdoom-1.2.4-cp312-cp312-macosx_14_0_arm64.whl (29.2 MB 查看哈希值)

上传时间 CPython 3.12 macOS 14.0+ ARM64

vizdoom-1.2.4-cp312-cp312-macosx_12_0_x86_64.whl (30.9 MB 查看哈希值)

上传时间 CPython 3.12 macOS 12.0+ x86-64

vizdoom-1.2.4-cp311-cp311-win_amd64.whl (15.5 MB 查看哈希值)

上传时间 CPython 3.11 Windows x86-64

vizdoom-1.2.4-cp311-cp311-manylinux_2_28_x86_64.whl (28.1 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.28+ x86-64

vizdoom-1.2.4-cp311-cp311-manylinux_2_28_aarch64.whl (27.9 MB 查看哈希值)

上传于 CPython 3.11 manylinux: glibc 2.28+ ARM64

vizdoom-1.2.4-cp311-cp311-macosx_14_0_arm64.whl (29.2 MB 查看哈希值)

上传于 CPython 3.11 macOS 14.0+ ARM64

vizdoom-1.2.4-cp311-cp311-macosx_12_0_x86_64.whl (30.9 MB 查看哈希值)

上传于 CPython 3.11 macOS 12.0+ x86-64

vizdoom-1.2.4-cp310-cp310-win_amd64.whl (15.5 MB 查看哈希值)

上传于 CPython 3.10 Windows x86-64

vizdoom-1.2.4-cp310-cp310-manylinux_2_28_x86_64.whl (28.1 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.28+ x86-64

vizdoom-1.2.4-cp310-cp310-manylinux_2_28_aarch64.whl (27.9 MB 查看哈希值)

上传于 CPython 3.10 manylinux: glibc 2.28+ ARM64

vizdoom-1.2.4-cp310-cp310-macosx_14_0_arm64.whl (29.2 MB 查看哈希值)

上传于 CPython 3.10 macOS 14.0+ ARM64

vizdoom-1.2.4-cp310-cp310-macosx_12_0_x86_64.whl (30.9 MB 查看哈希值)

上传于 CPython 3.10 macOS 12.0+ x86-64

vizdoom-1.2.4-cp39-cp39-win_amd64.whl (15.5 MB 查看哈希值)

上传于 CPython 3.9 Windows x86-64

vizdoom-1.2.4-cp39-cp39-manylinux_2_28_x86_64.whl (28.1 MB 查看哈希值)

上传于 CPython 3.9 manylinux: glibc 2.28+ x86-64

vizdoom-1.2.4-cp39-cp39-manylinux_2_28_aarch64.whl (27.9 MB 查看哈希)

上传时间 CPython 3.9 manylinux: glibc 2.28+ ARM64

vizdoom-1.2.4-cp39-cp39-macosx_14_0_arm64.whl (29.2 MB 查看哈希)

上传时间 CPython 3.9 macOS 14.0+ ARM64

vizdoom-1.2.4-cp39-cp39-macosx_12_0_x86_64.whl (30.9 MB 查看哈希)

上传时间 CPython 3.9 macOS 12.0+ x86-64

vizdoom-1.2.4-cp38-cp38-manylinux_2_28_x86_64.whl (28.1 MB 查看哈希)

上传时间 CPython 3.8 manylinux: glibc 2.28+ x86-64

vizdoom-1.2.4-cp38-cp38-manylinux_2_28_aarch64.whl (27.9 MB 查看哈希)

上传时间 CPython 3.8 manylinux: glibc 2.28+ ARM64

vizdoom-1.2.4-cp38-cp38-macosx_14_0_arm64.whl (29.2 MB 查看哈希)

上传时间 CPython 3.8 macOS 14.0+ ARM64

vizdoom-1.2.4-cp38-cp38-macosx_12_0_x86_64.whl (30.9 MB 查看哈希)

上传时间 CPython 3.8 macOS 12.0+ x86-64

由 ... 支持的