Sixteen colors are the point, not a starter setting
Pyxel 2.9.9 gives a Python game a small box to live in: 16 colors, 4 sound channels, 3 image banks, and 8 tilemaps. Those limits make the engine easier to hold in your head. A first program calls pyxel.init(), supplies update and draw functions, then starts the loop. Input, primitive drawing, sprites, music, and screenshots all use one compact API.
That constraint is a genuine product choice. Each image bank is 256x256 pixels, and each tilemap has the same dimensions. You can extend the palette, channels, and banks, but Pyxel still steers you toward pixel art and short feedback loops. If your design already calls for high-resolution animation, a scene graph, or 3D assets, choosing Pyxel means fighting the engine before the game exists.
Python code gets an editor, examples, and export commands
Pyxel 2.9.9 installs a pyxel command with practical jobs built in. It can copy examples, run a script, watch a directory, open the resource editor, package an app, and convert that package to an executable or HTML file. The included editor handles images, tilemaps, sounds, and music in Pyxel's own resource format, so a small project can stay inside one toolset.
The learning path is unusually concrete. The FAQ recommends 5 examples in order, beginning with basic setup and moving through palette, drawing, sound, and a jump game. Browser copies of the examples let a new user inspect the result before installing anything. The API reference is separate from the tutorial, which keeps lookup work from overwhelming the first lesson. English and Japanese documentation are both present.
What happened when we ran it
Our sandbox installed the checkout at commit 50f9bd7 in 73 seconds. That pulled 47 packages and occupied 173 MB on disk. The repository itself contained 460 files, roughly 39,134 lines of source, and 26.3 MB of checked-out data. Our measurement setup was a fresh 3-CPU, 8 GB unprivileged Debian container without secrets.
The build also succeeded, finishing in 1 second. Tests did not. Pytest exited with code 4 after 1 second while loading python/tests/conftest.py. Importing pyxel reached pyxel/__init__.py, which tried to load pyxel.pyxel_binding; Python then raised ModuleNotFoundError because that module was absent. The supplied log ends there and does not establish why the binding was missing.
That distinction matters for adoption. The published pip route may behave differently from a source checkout, while contributors need the Python package and its compiled Rust binding to meet correctly. We did not get a passing test suite from this commit, and there were no summary counts to report. Pip-audit found 0 known vulnerabilities among the installed Python packages, which is useful but does not turn the failed test collection into a pass.
Web support is useful, but Code Maker stays single-file
Pyxel 2.9.9 runs in compatible browsers and offers a hosted Code Maker that needs no local installation. Finished apps can go to the web through the launcher, app2html, or HTML custom elements. The release also added browser downloads for saved sound and music and fixed filenames for exported captures, evidence that the browser route receives current maintenance rather than existing as a leftover demo.
The hosted editor has a firm boundary: the FAQ says it does not support multi-file projects and recommends local development for larger work. Desktop development requires Python 3.11 or newer. File loading has another small trap, because calling pyxel.init() changes the current directory to the script's directory. Load a relative file before initialization, or change directories later, and the same path can resolve differently.
Packaging helps solo projects more than large production teams
A .pyxapp bundle can include code and resources, then run through pyxel play or convert to an executable or HTML file. Metadata lives in comments in the startup script. That is pleasantly direct for a game jam or classroom submission. Commercial distribution is allowed under the MIT License as long as the required copyright and license text travels with the software.
Larger teams should account for the project's shape. The README says Pyxel is developed by one person. GitHub showed 17,951 stars and 10 combined open issues and pull requests on September 25, 2026, with a push on the same date. The queue included active work as well as an open report that version 2.9.6 could leave a process hanging after its window closed on Windows 11 Arm64. That report is specific to one platform and version, but teams targeting Snapdragon Windows machines should reproduce shutdown before release.
Version 2.9.9 is active, while the source test path needs proof
Release 2.9.9 arrived on August 12, 2026. Its changelog covers Rust, Pyodide, and PyO3 updates, fixes for web export and editor behavior, and a correction for palette corruption when imported images exceed 256 colors. Recent pushes plus current issue and pull-request activity are better evidence of maintenance than the release date alone.
Pyxel is easiest to recommend when its restrictions save you decisions. The examples, editors, 16-color visual model, and 4-channel audio system form a coherent place to learn or finish a small game. Our failed import keeps the source checkout from earning an uncomplicated engineering endorsement. Install the published package for ordinary use, but make a clean native build and passing test collection a release condition if you plan to modify the engine itself.

