// the find
kitao/pyxel
A retro game engine for Python
Pyxel is a Python game engine that deliberately constrains you to retro console limits: 16 colors, 4 sound channels, 256x256 max resolution. The core is written in Rust with SDL2, exposed to Python via PyO3 bindings, and it also compiles to WASM for browser play. It targets hobbyists and game jam participants who want PICO-8/TIC-80 vibes but prefer Python over Lua.
The Rust core means the 'Python game engine' framing doesn't come with the usual Python performance ceiling — the hot path is native. WASM support is a genuine differentiator: you can publish finished games directly to a URL without asking players to install anything. The bundled editors (image, tilemap, sound, music) are built into Pyxel itself using Pyxel, which is a good dogfooding signal. Test suite uses reference screenshot comparisons against actual rendered frames, which is the right way to test a graphics engine.
The 16-color palette limit is a feature for some and a hard wall for others — there's no escape hatch for UI overlays or HUD elements that need more color depth. Single maintainer since day one; the project runs on GitHub stars and ko-fi, so bus factor is 1 and the roadmap is whatever one person feels like doing. Audio is limited to the internal synthesizer plus basic OGG playback; if you want MIDI, tracker modules, or procedural audio beyond the built-in MML syntax, you're out of luck. The Python API is synchronous and single-threaded by design, so any blocking logic in your update() stalls the whole game loop — there's no async story.