© 2026FindAgent  · @simprr
返回列表
l

linyiLYi/street-fighter-ai

This is an AI agent for Street Fighter II Champion Edition.

⭐

6.5k

Stars

🔱

1.4k

Forks

👁

86

Watchers

📋

58

Issues

PythonApache-2.0创建于 2023/3/27更新于 今天
在 GitHub 上查看
README
由 Gemini 翻译整理

SFighterAI

简体中文 | English | Español

本项目是一个基于深度强化学习训练的 AI Agent,旨在击败游戏《街头霸王 II:特别冠军版》(Street Fighter II: Special Champion Edition)中的最终 BOSS。该 AI Agent 完全基于游戏画面的 RGB 像素值进行决策。在提供的存档状态(save state)中,该 Agent 在最终关卡的第一轮可以达到 100% 的胜率(存在过拟合现象,详见运行测试章节的讨论)。

文件结构

├───data
├───main
│   ├───logs
│   ├───trained_models
│   └───scripts
├───utils
│   └───scripts

游戏配置文件存储在 data/ 文件夹中,项目主程序代码位于 main/ 文件夹中。在 main/ 文件夹内,logs/ 文件夹包含了记录训练过程的终端输出和数据曲线(可通过 Tensorboard 查看),trained_models/ 文件夹包含了不同阶段的模型权重。这些权重可用于 test.py 进行测试,以观察 AI Agent 在不同训练阶段的策略表现。

运行指南

本项目基于 Python 编程语言,主要使用 OpenAI Gym Retro 和 Stable-Baselines3 等标准库。使用的 Python 版本为 3.8.10,建议使用 Anaconda 配置 Python 环境。以下安装过程已在 Windows 11 上测试通过。以下命令均在控制台/终端/Shell 中执行。

环境配置

# 创建一个名为 StreetFighterAI 的 conda 环境,Python 版本为 3.8.10
conda create -n StreetFighterAI python=3.8.10
conda activate StreetFighterAI

# 安装 Python 库
cd [项目父目录]/street-fighter-ai/main
pip install -r requirements.txt

# 运行脚本以定位 gym-retro 游戏文件夹
cd ..
python .\utils\print_game_lib_folder.py

控制台输出文件夹路径后,将其复制到文件资源管理器并导航至该路径。该文件夹包含 gym-retro 中《街头霸王 II:特别冠军版》的游戏数据文件,包括游戏 ROM 文件和数据配置文件。请将本项目 data/ 文件夹中的 Champion.Level12.RyuVsBison.state、data.json、metadata.json 和 scenario.json 文件复制到上述游戏数据文件夹中,并覆盖原文件(可能需要管理员权限)。.state 文件是游戏最高难度下的存档状态,而三个 .json 文件是 gym-retro 的配置文件,存储了游戏内存地址信息(本项目仅使用 [agent_hp] 和 [enemy_hp] 来实时读取角色血量)。

运行程序还需要《街头霸王 II:特别冠军版》的游戏 ROM 文件,该文件不包含在 gym-retro 中,必须通过其他合法途径获取。你可以参考此 链接。

在合法获取游戏 ROM 文件后,将其复制到上述的 gym-retro 游戏数据文件夹中,并重命名为 rom.md。至此,环境配置完成。

注意 1:如果你想手动捕获存档状态或查找游戏中的内存变量,可以使用 gym-retro 的集成 UI。请将 data/Gym Retro Integration.exe 复制到上述游戏数据文件夹的上两级目录(即 retro/ 文件夹)中。

注意 2:如果你想录制 AI Agent 的游戏视频,需要安装 ffmpeg。

conda install ffmpeg

运行测试

环境配置完成后,你可以运行 main/ 文件夹下的 test.py 来测试和体验 AI Agent 在不同训练阶段的表现。

cd [项目父目录]/street-fighter-ai/main
python test.py

模型权重文件存储在 main/trained_models/ 文件夹中。test.py 中默认使用的模型是 ppo_ryu_2500000_steps_updated.zip,它具有良好的泛化能力,能够击败《街头霸王 II:特别冠军版》的最终关卡。如果你想查看其他模型的表现,可以修改 test.py 中的 model_path 变量,将其指向另一个模型文件。各训练阶段模型的表现如下:

  • ppo_ryu_2000000_steps_updated:刚刚开始过拟合状态,具有一定的泛化能力,但尚不足以通关。
  • ppo_ryu_2500000_steps_updated:接近最终的过拟合状态,无法完全压制第一轮,但具备部分泛化能力。有很大几率击败最终关卡。
  • ppo_ryu_3000000_steps_updated:接近最终的过拟合状态,几乎可以压制第一轮,但泛化能力较弱。
  • ppo_ryu_7000000_steps_updated:已过拟合,可以完全压制第一轮。
贡献者
lka
项目信息
默认分支master
LicenseApache License 2.0
创建时间2023/3/27
最近更新今天
GAI 中文摘要

SFighterAI 是一个基于深度强化学习开发的街头霸王2:特别冠军版 AI 智能体。该项目通过直接读取游戏屏幕的 RGB 像素数据进行决策,旨在实现对游戏中最高难度关卡对手的自动化对战与获胜。

基于深度强化学习技术,仅通过视觉输入即可训练 AI 掌握博弈策略。 内置完整的模型训练与测试流程,支持通过 Tensorboard 实时监控训练数据曲线。 提供详细的模型权重文件,允许用户在不同训练阶段观察 AI 的成长与战术演变。 支持 Gym Retro 环境集成,通过自定义配置文件实现对游戏内存变量(如生命值)的实时监测。

该项目适用于对深度强化学习、游戏人工智能以及图像识别感兴趣的开发者与科研人员。其主要场景包括研究 AI 在实时格斗环境下的决策逻辑,以及探索如何通过像素级视觉输入实现复杂的对抗策略。