ViZDoom
基于经典3D射击游戏Doom的强化学习研究平台,支持Gymnasium接口,助AI从像素级画面学会感知与决策
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
基于经典3D射击游戏Doom的强化学习研究平台,支持Gymnasium接口,助AI从像素级画面学会感知与决策
加载项目详情…
本应用为开源项目,仅供学习研究,请遵守其开源协议。
1993 年,id Software 发布《毁灭战士》(Doom),定义了"第一人称射击游戏"的黄金标准。二十多年后,波兰马伯格大学的研究团队做了一件让游戏史和 AI 史都铭记的事——他们把 Doom 改造成了强化学习的标准实验场,诞生了 ViZDoom。2023 年,项目正式移交至 Farama Foundation(Gymnasium 强化学习库的维护者),进入持续活跃维护期。
这不只是一个"让 AI 打游戏"的项目。它的核心价值在于:提供了一个几乎免费的、接近真实 3D 世界的感知-决策实验平台。在 Atari 游戏上刷分固然爽,但 Doom 的 3D 空间、即时射击、多房间导航,对 AI 的挑战是质的飞跃。
ViZDoom 提供两种核心交互模式:
1. 原生 Python API(底层)
from vizdoom import DoomGame
game = DoomGame()
game.set_doom_game_path("freedoom2.wad")
game.init()
state = game.get_state()
# 访问屏幕缓冲区、深度图、标签图、音频缓冲区等
action = [0, 0, 1, 0, 0] # 向右转
game.make_action(action)
开发者可以直接访问 Doom 引擎渲染出的原始缓冲区:320×240 像素的屏幕画面、自动化地图数据(automap buffer)、游戏物体标签(labels)、扇区几何信息(sectors)。这给了研究者最大的灵活性。
2. Gymnasium 集成(高层) ViZDoom 完整接入了 Farama Foundation 的 Gymnasium 接口,成为 RL 算法评测的标准环境之一:
import gymnasium as gym
env = gym.make("VizdoomDeadlyCorridor-v1")
obs, info = env.reset()
obs, reward, terminated, truncated, info = env.step(action)
env.close()
支持的场景包括:basic.cfg(简单移动)、deadly_corridor.cfg(走廊穿越)、defend_the_center.cfg(防守战)、defend_the_line.cfg(防线守卫)、health_gathering.cfg(资源收集)、my_way_home.cfg(导航挑战)、predict_position.cfg(位置预测)、take_cover.cfg(掩体战术)等,覆盖了从感知到决策的各类任务。

图1:ViZDoom 官方 Logo(Farama Foundation 维护)

图2:ViZDoom 环境渲染的 Doom 场景,AI 仅凭像素级画面做出决策

图3:Deadly Corridor 场景可视化,绿色为走廊,红色为敌人必经区域
ViZDoom 的架构分为三层:
.pyi 类型存根文件,IDE 友好。
构建系统使用 CMake,支持 Linux(GCC/Clang)、macOS(Homebrew 依赖)、Windows(MSVC)。wheel 构建依赖 cibuildwheel,提供 Python 3.9-3.14 的预编译 wheel 包,用户无需从源码编译即可使用 pip 安装。
ViZDoom 不仅是一个工具,更催生了一个完整的学术生态。2016-2019 年期间举办的多届 Visual Doom AI Competition(CIG 会议)吸引了全球顶尖团队参赛。2018 年发表的综述论文 "ViZDoom Competitions: Playing Doom from Pixels"(arXiv:1809.03470)系统总结了竞赛成果,得出重要结论:纯像素输入下,强化学习可以训练出胜任 Doom 的 AI bot,但与人类顶尖玩家仍有显著差距。这一结论对后来 ALM、RT-2 等多模态大模型在游戏/机器人领域的研究有重要铺垫作用。
从 pip 安装(推荐):
pip install vizdoom
Python wheel 已发布,直接安装无需编译。但 C++ 依赖(SDL2、Boost、OpenAL)仍需系统级依赖。
从源码编译: 需要 CMake 3.12+、Boost 1.70+、SDL2、OpenAL。在 Linux 上:
yum install cmake git boost-devel SDL2-devel openal-soft-devel
cmake -B build && cmake --build build
编译难度中等,Farama 提供了详细的 CI/CD 构建流程供参考。
不支持 Docker 快速部署:ViZDoom 需要 ZDoom 引擎原生库,无预构建 Docker 镜像,是其快速部署的主要障碍。
ViZDoom 代表了"游戏 AI 研究平台"这一范式的黄金时代(2013-2020)。它证明了:
随着大模型(VLM/ARM)崛起,Doom 的角色正在从"挑战者"转变为"基准测试平台"——用成熟算法在经典场景上跑基线,与新场景对比效率。ViZDoom 仍然活跃更新(2026 年仍有提交),Farama Foundation 接手后持续维护了其 PyPI 分发和 GitHub CI。
技术标签:C++ / Python / Reinforcement Learning / Gymnasium / ZDoom Engine / Computer Vision / Deep Learning
适用场景:RL 算法研究 / 学术论文基准 / AI 感知-决策实验 / 课程教学