Atari ALE, but make it Python and slightly janky
A reinforcement learning gym that swaps C++ ROMs for PyGame sprites so you can train agents without leaving the Python ecosystem.

What it does
PyGame Learning Environment (PLE) wraps simple PyGame games—Pong, Snake, and others—in an API that clones the Arcade Learning Environment interface. You instantiate a game, pass it to PLE(), and your agent gets screen RGB arrays, action sets, and rewards in a familiar loop. It runs headless for servers and displayed for debugging.
The interesting bit
The value is the deliberate imitation: if you know ALE, you know PLE. No C++ toolchain, no MAME ROM hunting, just pip install and you’re iterating on agents in pure Python. The author explicitly wants practitioners focused on models, not environment plumbing.
Key highlights
- API mirrors the well-known Arcade Learning Environment (ALE)
- Ships with several built-in games; actively accepting PRs for more
- Headless mode via
SDL_VIDEODRIVER=dummyfor remote training - Dependencies are minimal: numpy, pygame, pillow
- Citation-ready BibTeX provided for research use
Caveats
- Documentation is marked WIP; some details may require reading source
- No tests exist yet, per the public TODO list
- Parallel learning (one agent, many game copies) is planned but not implemented
- Library generalization beyond PyGame (e.g., Pyglet) is aspirational
Verdict Good for RL students and researchers who want a lightweight, hackable alternative to ALE without leaving Python. Skip it if you need production-grade vectorized environments or mature docs; this is a research convenience tool, not a framework.