- Train models on retro games
- Pit two models against each other on PvP retro games such as NHL94, Mortal Kombat or WWF Wrestlemania: The Arcade Game
- Play against an improved AI opponent
- Emulator Frontend library using Pytorch C++ to able to play with or against stable-retro models in apps like RetroArch
- MLPs
- Nature CNN (from DeepMind)
- Impala CNN (from DeepMind)
- Combined Input models (image + scalar)
Experimental:
- Attention MLPs
NHL94 (1 on 1) | Wrestlemania: The Arcade game | Virtua Fighter 1 |
---|---|---|
![]() |
![]() |
![]() |
Tested on Ubuntu 22.04/24.04 and Windows 11 WSL2 (Ubuntu 22.04 VM)
Requires:
- Python 3.7 and up
- gymnasium
- stable-baselines3
- stable-retro (fork of gym-retro)
sudo apt update
sudo apt-get install python3 python3-pip git zlib1g-dev libopenmpi-dev ffmpeg cmake
sudo pip3 install -U virtualenv
virtualenv --system-site-packages -p python3 ~/vretro
source ~/vretro/bin/activate
git clone https://github.com/Farama-Foundation/stable-retro.git
cd stable-retro
pip3 install -e .
pip3 install "stable_baselines3[extra]" pygame torchsummary opencv-python timm
Windows WSL2 + Ubuntu 22.04 setup guide: https://www.youtube.com/watch?v=vPnJiUR21Og
You need to provide your own roms
In your rom directory exec this command, it will import the roms into stable-retro
python3 -m retro.import .
Note: Airstriker is a public domain rom and is already included in stable-retro
python3 train.py --env=Airstriker-Genesis --nn=CnnPolicy --num_env=8 --num_timesteps=1_000_000 --play --hyperparams=../hyperparams/default.json
C++ lib using Pytorch that runs models inside emulator frontends like retro arch to override player input. Which means you can play against a smarter opponent at NHL94 for example or let the AI play with you in COOP or play for you.
See README for build and install instructions