about
About
What this is, where it came from, and who did the 2009 original.
Subpixel is a remake of the 2009 Mario AI Competition, rebuilt for 2026 on an engine that reimplements the physics of a certain 1990 SNES platformer — accurate to the subpixel, in pure TypeScript, with the tests to prove it.
2009
The original competition was run by Julian Togelius and Sergey Karakovskiy, built on Markus Persson's Infinite Mario Bros.. You wrote a Java agent, it played procedurally generated levels it had never seen, and it was scored on how far it got. It ran for several years, produced a stack of research papers, and — more importantly for most people who remember it — produced a video.
That video was Robin Baumgarten's A* agent. It won the 2009 Gameplay Track by doing something nobody else did: instead of reacting to what was on screen, it reimplemented the game's physics as a forward model and searched over possible futures, replanning every frame. The result looks less like a player and more like a proof. If you have seen a clip of a Mario-like character moving with impossible precision while a fan of search branches sprays out ahead of it, you have seen it.
Two details from 2009 are worth carrying forward, and we did:
- Agents were scored on hidden levels, and the final ranking was recomputed on a fresh set nobody had seen. Overfitting to a seed set was worthless then and is worthless here.
- The competition gave agents a 22×22 egocentric grid of the level around them. Perception was part of the challenge.
What changed for 2026
The physics are exact, and that is the load-bearing claim. Not "Mario-like" — the movement accumulators, the P-meter, the six collision sensors, cape flight, sprite slots, the camera, the frame counts. Every physics constant in the engine carries a provenance comment pointing at the disassembly address it came from, and the ones that are still only corroborated by community documentation are marked and counted by CI. You can read the whole registry on the physics reference page. If you can demonstrate a case where the engine disagrees with the original, that is a bug report we want and a community prize entry.
We hand you the forward model. In 2009, Baumgarten's edge was building a simulator; in 2026 that is a method call. fork() gives every entrant a clone of the live world to step with hypothetical inputs, budget-limited so search depth is the strategic currency. The meta starts where 2009 ended.
Perception is free; control is the problem. Instead of a 22×22 window, your agent sees the whole tile map and every live sprite. Hiding the level from the player was a 2009 constraint we chose not to reproduce — what is hidden here is the seed set, not the level you are currently playing.
There is a second track. Level generators compete too, scored on how well their levels discriminate between agents of known strength, how accurately they hit a requested difficulty, and how varied they are. Agents are evaluated on generators' levels; generators are evaluated on how well they separate agents. The two sides push on each other.
Your tooling is welcome to do the typing. The SDK, the docs, and an MCP server are built so that "write me an agent that beats difficulty 8" is a reasonable thing to say to a coding assistant. Humans compete on ideas.
Credits
- Julian Togelius and Sergey Karakovskiy — the 2009–2012 Mario AI Competition, its benchmark, and the papers that came out of it.
- Robin Baumgarten — the A* agent that defined what a good entry looks like, and the video that made a generation of people care about search.
- Markus Persson — Infinite Mario Bros., the engine the original competition was built on.
- The disassembly and TAS communities, whose documentation of the reference game's internals made an exact reimplementation possible at all.
This project is an homage, not a re-release. It uses no assets, names, or marks from the reference game: the art is original, the character is deliberately not that character, and the only thing shared with the 1990 original is the arithmetic — which is a fact about interoperability, demonstrated by tests, not a claim on anybody's property.
Open source
The engine, the SDK, the generators, the site, and the scoring worker are all MIT-licensed and public. Physics-accuracy reports are the most-wanted issue type in the repo. Engine pull requests are frozen during the competition weeks for fairness; everything else stays open.