// the find
linyiLYi/street-fighter-ai
This is an AI agent for Street Fighter II Champion Edition.
A reinforcement learning agent (PPO via Stable-Baselines3, running in OpenAI Gym Retro) trained to play Ryu in Street Fighter II: Special Champion Edition purely from raw screen pixels, reliably beating the final boss. It's a research/demo project for people curious about applying deep RL to a classic fighting game, not a library meant to be depended on.
The reward shaping is actually backed by cited work instead of hand-waved: the custom Gym wrapper applies the 'penalty decay' trick from a 2022 IEEE CoG paper specifically to stop the agent from just running away and never attacking. The README is unusually honest about overfitting, giving per-checkpoint behavior at 2M/2.5M/3M/7M training steps and explicitly shipping the best-generalizing checkpoint rather than the one with the flashiest win rate. The agent only consumes RGB frames plus HP values read from memory, no hand-crafted game-state features, so it's a reasonably clean example of vision-based RL on an old console game via Gym Retro.
It doesn't run out of the box: the ROM is omitted for legal reasons, so step one is sourcing a Street Fighter II ROM yourself before any setup instructions matter. The stack is already stale, pinned to Python 3.8.10 and OpenAI Gym Retro, a project the community has largely moved on from in favor of the stable-retro fork, so this only gets harder to set up as time passes. Trained checkpoints (several .zip files, hundreds of MB combined) are committed straight into git history instead of releases or LFS, bloating every clone. 'Running tests' just means watching the model play; there's no automated evaluation harness or scoring beyond eyeballing a few named checkpoints, and the whole project is scoped to one character against one boss on one stage.