ViZDoom

ViZDoom

AI视觉强化学习平台,支持多平台与多语言

ViZDoom平台基于ZDoom引擎,可通过视觉信息训练AI玩Doom游戏,适用于视觉学习和深度强化学习研究。支持Linux、macOS和Windows平台,提供Python和C++ API以及Gymnasium/OpenAI Gym环境封装。该平台具备自定义场景创建、同步和异步多玩家模式、可调分辨率和渲染参数,还支持3D视觉和音频缓冲区访问。

ViZDoom强化学习深度学习视觉学习APIGithub开源项目

PyPI version Build pre-commit Code style: black

<p align="center"> <img src="https://yellow-cdn.veclightyear.com/35dd4d3f/a208bd05-47c0-4021-baac-5a4306c1d678.png" width="500px"/> </p>

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

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

ViZDoom Demo

特点

  • 多平台支持(Linux,macOS,Windows),
  • Python 和 C++ API,
  • Gymnasium/OpenAI Gym 环境包装器(感谢 Arjun KG Benjamin Noah BealLawrence FrancisMark Towers),
  • 易于创建的自定义场景(提供视觉编辑器、脚本语言和示例),
  • 支持异步和同步单人和多人模式,
  • 快速(在同步模式下单线程运行速度可达 7000 fps),
  • 轻量(几 MB),
  • 可自定义分辨率和渲染参数,
  • 可访问深度缓冲区(3D 视觉),
  • 自动标注帧中可见的游戏对象,
  • 可访问音频缓冲区(感谢 Shashank Hegde),
  • 可访问演员/对象列表和地图几何结构,
  • 屏外渲染,
  • 支持录制游戏剧集,
  • 异步模式下的游戏时间缩放。

ViZDoom API 对于强化学习非常友好(也适合于示范学习、学徒学习或反向强化学习学徒等)。

Julia(感谢 Jun Tian),Lua 和 Java 绑定可在其他分支中找到,但不再维护。

引用

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}
}

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 快速开始

Linux

要安装最新版本的 ViZDoom,只需运行:

pip install vizdoom

支持 x86-64 和 AArch64(ARM64)架构。 在 Linux 上为 Python 3.8+ 提供了 Wheels。

如果您的平台没有可用的 Python 轮文件(Python 版本 <3.8,多数发行版低于 manylinux_2_28 标准),pip 将尝试从源代码安装(构建)ViZDoom。 从源代码安装 ViZDoom 需要 C++11 编译器,CMake 3.12+,Boost 1.54+ SDL2,OpenAL(可选),以及 Python 3.7+。更多详细信息请参见文档

macOS

要安装最新版本的 ViZDoom,只需运行(在 M1/M2 芯片上它可能需要几分钟,因为它会从源代码构建 ViZDoom):

brew install cmake boost sdl2 openal-soft pip install vizdoom

支持 Intel 和 Apple Silicon CPU。 我们建议至少使用 macOS High Sierra 10.13+ 及 Python 3.7+。 在 Apple Silicon(M1 和 M2)上,确保您使用的是 Apple Silicon 的 Python/Pip。

Windows

要安装最新版本的 ViZDoom,只需运行:

pip install vizdoom

目前,Windows 上仅支持 x86-64 架构。 在 Windows 上为 Python 3.8+ 提供了 Wheels。

请注意,Windows 版本未经过与 Linux 和 macOS 版本同等的测试。 它可以用于开发和测试,但如果您希望在 Windows 上进行严肃的(耗时和资源密集型)实验, 请考虑使用 DockerWSL 使用 Linux 版本。

Gymnasium/Gym 包装器

Gymnasium 环境随 ViZDoom 一起安装。 请参见文档示例 以了解 Gymnasium API 的使用。

OpenAI-Gym 包装器也可用,要安装它们,请运行:

pip install vizdoom[gym]

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

示例

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

目前 Python 示例最丰富,所以我们建议即使您计划使用其他语言,也可以先查看它们。API 对所有语言几乎相同。

另请参见 教程

原版 Doom 图形

遗憾的是,我们无法与 ViZDoom 一起分发原版 Doom 图形。 如果您拥有原版 Doom 或 Doom 2 游戏,您可以通过将 doom.waddoom2.wad 放置在您的工作目录或 vizdoom 包目录中来替换 Freedoom 图形。

或者,任何基本的游戏 WAD(包括其他 Doom 引擎游戏和自定义/社区游戏)都可以使用,通过set_doom_game_path/setDoomGamePath 方法指向它即可。

文档

详细的 ViZDoom 类型和方法描述请参见文档

ZDoom 引擎和 ACS 脚本语言的完整文档请参见 ZDoom Wiki

有用的文章(适用于希望创建自定义环境/场景的高级用户):

超赞的 Doom 工具/项目

  • SLADE3 - 一款适用于 Linux、MacOS 和 Windows 的出色 Doom 地图(场景)编辑器。
  • Doom Builder 2 - 另一款适用于 Windows 的出色 Doom 地图编辑器。
  • OBLIGE - Doom 随机地图生成器,PyOblige 是其简单的 Python 封装。
  • Omgifol - 优秀的 Python 库,用于操作 Doom 地图。
  • NavDoom - 用于 ViZDoom 的迷宫导航生成器(类似于 DeepMind Lab)。
  • MazeExplorer - 更复杂的 ViZDoom 迷宫导航生成器。
  • Sample Factory - 为 ViZDoom 提供的高性能强化学习框架。
  • EnvPool - 为 ViZDoom 提供的高性能矢量化环境。
  • Obsidian - Doom 随机地图生成器,OBLIGE 的延续项目。
  • LevDoom - ViZDoom 中通用化基准测试,具有视觉复杂度的难度等级。
  • COOM - ViZDoom 中的持续学习基准测试,提供具有多样目标的任务序列。

贡献

这个项目在我们空闲时间维护和开发。欢迎所有错误修复、新示例、场景和其他贡献!我们也对功能创意和设计建议持开放态度。

我们为 ViZDoom 的未来开发工作提供了一个路线图,请访问这里

许可

ViZDoom 原始代码使用 MIT 许可。ZDoom 引用了几种来源的代码,具有不同的许可方案

编辑推荐精选

音述AI

音述AI

全球首个AI音乐社区

音述AI是全球首个AI音乐社区,致力让每个人都能用音乐表达自我。音述AI提供零门槛AI创作工具,独创GETI法则帮助用户精准定义音乐风格,AI润色功能支持自动优化作品质感。音述AI支持交流讨论、二次创作与价值变现。针对中文用户的语言习惯与文化背景进行专门优化,支持国风融合、C-pop等本土音乐标签,让技术更好地承载人文表达。

lynote.ai

lynote.ai

一站式搞定所有学习需求

不再被海量信息淹没,开始真正理解知识。Lynote 可摘要 YouTube 视频、PDF、文章等内容。即时创建笔记,检测 AI 内容并下载资料,将您的学习效率提升 10 倍。

AniShort

AniShort

为AI短剧协作而生

专为AI短剧协作而生的AniShort正式发布,深度重构AI短剧全流程生产模式,整合创意策划、制作执行、实时协作、在线审片、资产复用等全链路功能,独创无限画布、双轨并行工业化工作流与Ani智能体助手,集成多款主流AI大模型,破解素材零散、版本混乱、沟通低效等行业痛点,助力3人团队效率提升800%,打造标准化、可追溯的AI短剧量产体系,是AI短剧团队协同创作、提升制作效率的核心工具。

seedancetwo2.0

seedancetwo2.0

能听懂你表达的视频模型

Seedance two是基于seedance2.0的中国大模型,支持图像、视频、音频、文本四种模态输入,表达方式更丰富,生成也更可控。

nano-banana纳米香蕉中文站

nano-banana纳米香蕉中文站

国内直接访问,限时3折

输入简单文字,生成想要的图片,纳米香蕉中文站基于 Google 模型的 AI 图片生成网站,支持文字生图、图生图。官网价格限时3折活动

扣子-AI办公

扣子-AI办公

职场AI,就用扣子

AI办公助手,复杂任务高效处理。办公效率低?扣子空间AI助手支持播客生成、PPT制作、网页开发及报告写作,覆盖科研、商业、舆情等领域的专家Agent 7x24小时响应,生活工作无缝切换,提升50%效率!

堆友

堆友

多风格AI绘画神器

堆友平台由阿里巴巴设计团队创建,作为一款AI驱动的设计工具,专为设计师提供一站式增长服务。功能覆盖海量3D素材、AI绘画、实时渲染以及专业抠图,显著提升设计品质和效率。平台不仅提供工具,还是一个促进创意交流和个人发展的空间,界面友好,适合所有级别的设计师和创意工作者。

图像生成AI工具AI反应堆AI工具箱AI绘画GOAI艺术字堆友相机AI图像热门
码上飞

码上飞

零代码AI应用开发平台

零代码AI应用开发平台,用户只需一句话简单描述需求,AI能自动生成小程序、APP或H5网页应用,无需编写代码。

Vora

Vora

免费创建高清无水印Sora视频

Vora是一个免费创建高清无水印Sora视频的AI工具

Refly.AI

Refly.AI

最适合小白的AI自动化工作流平台

无需编码,轻松生成可复用、可变现的AI自动化工作流

下拉加载更多