A fork of gym-retro ('lets you turn classic video games into Gymnasium environments for reinforcement learning') with additional games, emulators and supported platforms. Since gym-retro is in maintenance now and doesn't accept new games, platforms or bug fixes, you can instead submit PRs with new games or features here in stable-retro.
Currently added games on top of gym-retro:
- Super Mario Bros 2 Japan (Lost Levels) - NES
- Hang On - SMS
- Punch Out - NES
- WWF Wrestlemania the Arcade Game - Genesis
- NHL 94 - Genesis
- NHL 94 (1 on 1 rom hack) - Genesis
- Super Hang On - Genesis
- Tetris - GameBoy
- Virtua Fighter - 32x
- Virtua Fighter 2 - Genesis
- Virtua Fighter 2 - Saturn
- Mortal Kombat 1 - Sega CD
PvP games that support two models fighting each other:
- Samurai Showdown - Genesis
- WWF Wrestlemania the Arcade Game - Genesis
- Mortal Kombat II - Genesis
- NHL 94 - Genesis
As well as additional states on already integrated games.
- Atari
- Atari2600 (via Stella)
- NEC
- TurboGrafx-16/PC Engine (via Mednafen/Beetle PCE Fast)
- Nintendo
- Game Boy/Game Boy Color (via gambatte)
- Game Boy Advance (via mGBA)
- Nintendo Entertainment System (via FCEUmm)
- Super Nintendo Entertainment System (via Snes9x)
- Sega
- GameGear (via Genesis Plus GX)
- Genesis/Mega Drive (via Genesis Plus GX)
- Master System (via Genesis Plus GX)
- 32x (via Picodrive)
- Saturn (via Beetle Saturn)
- Sega CD (via Genesis Plus GX)
Experimental (accessible in the fbneo branch)
- Arcade Machines:
- Neo Geo (MVS hardware: 1990–2004)
- Sega System 1 (1983–1987)
- Sega System 16 (And similar. 1985–1994)
- Sega System 18 (1989–1992)
- Sega System 24 (1988–1994)
- Capcom CPS1 (1988–1995)
- Capcom CPS2 (1993–2003)
- Capcom CPS3 (1996–1999)
Full list of supported Arcade machines here
pip3 install stable-retro
or if the above doesn't work for your plateform:
pip3 install git+https://github.com/Farama-Foundation/stable-retro.git
If you plan to integrate new ROMs, states or emulator cores or plan to edit an existing env:
git clone https://github.com/Farama-Foundation/stable-retro.git
cd stable-retro
pip3 install -e .
- NOTE: The Game Boy (gambatte) emulator is not supported on Apple Silicon
Build from source
pip install cmake wheel
brew install pkg-config lua@5.3 libzip qt@5 capnp
echo 'export PATH="/opt/homebrew/opt/qt@5/bin:$PATH"' >> ~/.zshrc
export SDKROOT=$(xcrun --sdk macosx --show-sdk-path)
pip install -e .
Build Integration UI
- build package from source
cmake . -DCMAKE_PREFIX_PATH=/usr/local/opt/qt -DBUILD_UI=ON -UPYLIB_DIRECTORY
make -j$(sysctl hw.ncpu | cut -d: -f2)
open "Gym Retro Integration.app"
Docker image for M1 Macs: https://github.com/arvganesh/stable-retro-docker
'Nature CNN' model trained using PPO on Airstriker-Genesis env (rom already included in the repo)
Tested on Ubuntu 20.04 and Windows 11 WSL2 (Ubuntu 20.04 VM)
sudo apt-get update
sudo apt-get install python3 python3-pip git zlib1g-dev libopenmpi-dev ffmpeg
You need to install a stable baselines 3 version that supports gymnasium
pip3 install git+https://github.com/Farama-Foundation/stable-retro.git
pip3 install stable_baselines3[extra]
Start training:
cd retro/examples
python3 ppo.py --game='Airstriker-Genesis'
More advanced examples: https://github.com/MatPoliquin/stable-retro-scripts
@misc{stable-retro,
author = {Poliquin, Mathieu},
title = {Stable Retro, a maintained fork of OpenAI's gym-retro},
year = {2024},
publisher = {GitHub},
journal = {GitHub repository},
howpublished = {\url{https://github.com/Farama-Foundation/stable-retro}},
}
Windows WSL2 + Ubuntu 22.04 setup guide: https://www.youtube.com/watch?v=vPnJiUR21Og
Game Integration tool: https://www.youtube.com/playlist?list=PLmwlWbdWpZVvWqzOxu0jVBy-CaRpYha0t
Join here: https://discord.gg/dXuBSg3B4D
There is an effort to get this project to the Farama Foundation Project Standards. These development efforts are being coordinated in the stable-retro
channel of the Farama Foundation's Discord. Click here for the invite
Plateforms:
- Windows 10, 11 (via WSL2)
- macOS 10.13 (High Sierra), 10.14 (Mojave)
- Linux (manylinux1). Ubuntu 22.04 is recommended
CPU with SSE3
or better
Supported Pythons: 3.7 to 3.12
Documentation is available at https://stable-retro.farama.org/ (work in progress)
See LICENSES.md for information on the licenses of the individual cores.
Each game integration has files listing memory locations for in-game variables, reward functions based on those variables, episode end conditions, savestates at the beginning of levels and a file containing hashes of ROMs that work with these files.
Please note that ROMs are not included and you must obtain them yourself. Most ROM hashes are sourced from their respective No-Intro SHA-1 sums.
Run this script in the roms folder you want to import. If the checksum matches it will import them in the related game folder in stable-retro.
python3 -m retro.import .
The following non-commercial ROMs are included with Stable Retro for testing purposes:
- the 128 sine-dot by Anthrox
- Sega Tween by Ben Ryves
- Happy 10! by Blind IO
- 512-Colour Test Demo by Chris Covell
- Dekadrive by Dekadence
- Automaton by Derek Ledbetter
- Fire by dox
- FamiCON intro by dr88
- Airstriker by Electrokinesis
- Lost Marbles by Vantage