Original research

We measured 46 browser games built by AI from one prompt

Everyone has an opinion about whether AI can build a real game now. Nobody had run the games. We loaded every playable one into a real browser at 1440Γ—900 and 390Γ—844, clicked past the menus, and recorded what it actually did. Here is the whole dataset.

Correction, 12 August 2026: we have withdrawn every frame-rate number on this page

This page used to lead with β€œmedian frame time 66.6ms β€” about 15fps” and conclude that most AI-built games are too slow to play. That conclusion was not earned, and the fault was ours. Two independent bugs in our own harness, both found on 12 August:

  1. We measured on a software rasteriser. Our headless Chrome ran with --disable-gpu, so it quietly fell back to Microsoft Basic Render Driver. Re-running one game under both settings: 76ms in software, 30ms on the GPU. The column we stored as the renderer name held gl.VERSION, which reads WebGL 2.0 (OpenGL ES 3.0 Chromium) on both β€” so nothing in the dataset could have revealed it.
  2. On 17 of 46 games we never got past the title screen. The harness captured a frame before and after an automated nudge specifically to detect this, and then never compared the two. Where the nudge did nothing, the β€œframe time while playing” is the cost of drawing a menu.

We have now re-measured all 41 live games on a real GPU, sampling only after the game is open and only where we could confirm something on screen was actually moving. Twenty-one games clear that bar. Their median is 96 ms to draw one frame, against the 66.6 ms we withdrew.

πŸ”΄ So the games are slower than we said, not faster β€” and that is the least comfortable outcome available. We assumed the software renderer had inflated everything and expected to publish an apology and a set of better numbers. The two faults were pulling in opposite directions: software rendering made every game look slower, while sampling frames during menus and loading screens made them look faster. They roughly cancelled, and we published the result as though we had measured it.

The old average was accidentally in the right area. Almost none of the individual numbers were. Measured properly in play, Sunset Circuit moved from 16.7 ms to 137.7 and Kart Royale from 50 to 156.6, while other games moved as far in the opposite direction. Each of those sat on a game's own page as a fact about somebody's work. A roughly-right average built from wrong rows is a coincidence, not a measurement, and it would have gone on being quoted.

What we still cannot do: automatically prove a browser we do not control has reached gameplay. Judging by "did the picture change" accepts a game that merely opened another dialog; judging by "is the picture still moving" rejects a first-person game standing in an empty room, which is exactly what one of these is. We require both, which means we withhold more than we have to β€” twenty games are unpublished here that may be perfectly fine. A withheld number costs us a row; a wrong one costs the person who made the game.

Unaffected throughout and never withdrawn: download size, load time, console errors, phone rendering. Per-game figures are live again on the games we could confirm; the table below stays as the record of what we originally published, struck through.

withdrawnmedian frame time β€” see the correction above
14 / 39ship console errors
38 / 39render on a phone
39games loaded and instrumented

The finding: the failure is the one a critic can't see

These games were built with a method whose core is an independent visual critic β€” a fresh agent that looks at the running game beside a reference and says which is better. It works, and it is the part of the method everyone reproducing it has confirmed.

But it is a visual critic, and a game running at 15fps screenshots identically to one running at 60fps. Frame rate is invisible to a still image, so it is invisible to the judge β€” that argument is structural and does not depend on any measurement. What we can no longer tell you is how badly this particular population falls down, because the numbers we had are the ones withdrawn above. The point survives; our evidence for its size does not.

There is a sharper version of the lesson now, and it is at our expense. We built a page arguing that nobody instruments these games, and then ran the instrument wrong for two weeks β€” in the direction that made our own argument look stronger. A bug that flatters your thesis is the one you will not go looking for. The fix is not more care; it is an assertion that fails the run: read the unmasked GPU string and refuse to record a number when it names a software device.

The assumption that died was ours. We expected phones to be the weak spot. They aren't β€” 38 of 39 render fine at 390Γ—844 and only two overflow horizontally. We were wrong about that before we measured, which is the reason we measured.

Every game, slowest last

Frame time is p50 sampled while playing, after an automated nudge past the menus. Lower is better. Weight is what the browser transferred on first load.

Game names link to our page for that game β€” screenshot, full specs and a play button. The β†— goes straight to the creator’s site.

GameFrame msβ‰ˆfpsKBErrorsPhone
Pastel Nuketown β†— Β· Luckey Systems 16.7~60 345 0 yes
Dream Logic β†— Β· Voidtalker 16.7~60 30 0 yes
Claude\Zombies β†— Β· Justin Whitton 16.7~60 205 0 yes
Workmelt β†— Β· Erik Nomitch 16.7~60 622 0 no
Minimax of Duty β†— Β· sigco3111 16.7~60 503 2 yes
Nerd of Duty β†— Β· Simon Taylor 16.7~60 541 0 yes
Everything Must Go β†— Β· Jeremiah Daws 16.7~60 251 0 yes
Tiro Libre β†— Β· Morfeo Labs 16.7~60 333 2 yes
Nutso Cab-O β†— Β· RE:Skob 16.7~60 9 0 yes
Sunset Circuit β†— Β· Bee.games 16.7~60 259 1 yes
RICHTER β†— Β· Stas Kulesh 33.3~30 2332 0 yes
Wind Waker Game β†— Β· martbln_dev 33.3~30 272 0 yes
Der Koloss β†— Β· Vesper 33.4~30 23197 0 yes
Phantasy Claude Online β†— Β· fauxdufafa_ 33.4~30 2760 0 yes
Kart Royale β†— 50~20 625 2 yes
Dungeon Crawler Carnage β†— Β· Borelli Corp. 50~20 337 0 yes
Yakko Kart β†— Β· pedrour 50~20 185 1 yes
Story in NYC β†— Β· Edzzle 50~20 165 0 yes
Starfall β†— Β· Mike Luan 50~20 429 0 yes
You Always Do This β†— Β· B33fyDan 66.6~15 614 0 yes
Frontline β†— Β· maximus_v0 66.8~15 475 1 yes
Clawd Pop 3D β†— Β· VibezZzCoder 83.3~12 200 0 yes
Whirlwind Ascension β†— Β· Dylan Hsieh 83.3~12 612 0 yes
Hoop D Doop β†— Β· Edzzle 83.3~12 n/a 0 yes
K3-of-Duty β†— Β· OpenGame 83.4~12 3771 2 yes
Sunset Runners β†— Β· Evan Milenko 99.9~10 672 3 yes
Future Bots β†— Β· jonathanAIbr 100~10 238 0 yes
Operation IronHold β†— Β· prasenx 116.7~9 217 2 yes
Claude for Speed β†— Β· hey_madni 133.3~8 16811 1 yes
Codex of Duty β†— Β· luongnv89 133.4~7 1047 2 yes
Skramble β†— Β· Atom Tan Studio 150~7 292 1 yes
Kuru of Duty β†— Β· ravsau 183.2~5 436 0 yes
Sands of the Restless β†— Β· Eddie Belaval 350~3 6969 0 yes
Penguin Peak β†— Β· Jurij 516.7~2 1434 0 yes
Dust Corridor β†— Β· Leon Lin 583.3~2 246 0 yes
Sakura β€” Petals of the Everblossom β†— Β· danmana 700~1 525 0 yes
DESCENT β†— Β· sjwebster-bne 983.3~1 632 2 yes
Rocketball β†— Β· Atom Tan Studio 1200~1 1230 2 yes
Claude of Duty: Phadda β†— Β· Zain Zafar 1433.2~1 1383 0 yes

One self-contained file looks like the better build

Six of the games ship as a single HTML file with no external scripts. The other 33 load a bundle. The single-file group is faster and more phone-proof:

Build shapenMedian frame msMedian KBRenders on phone
Single self-contained file633.46126 / 6
Bundled3366.843632 / 33

Treat this as a signal, not a proof β€” n is 6. Six games is not enough to claim single-file causes better performance, and the causation could easily run the other way: a developer who can fit a game in one file may have built a simpler game. We are reporting it because it is what the data says, with the sample size attached.

How we measured it, and where it is weak

Headless Chrome driven over the DevTools Protocol. Each game got a fresh page, eight seconds to boot, then six rounds of real clicks and Enter/Space to get past loading screens and menus β€” synthetic events do not work, because these games gate start behind input the browser considers trusted. Then a ~10 second requestAnimationFrame sample, a screenshot decoded pixel by pixel, and the console read for errors.

The limits, stated plainly:

Not measurable by our harness:

If you're about to build one

The lesson we took from this is in our prompt generator: it asks the agent for a measured number every round β€” frame time, console, weight β€” alongside the judged one, because the judge cannot see the failure that actually happens. Free, no email.

Open the prompt generator β†’   or give a finished game a permanent home β†’

Method credit: the games here were built with the Gauntlet Loop, published by Matt Shumer after Claude of Duty. The directory of games is his; the measurements are ours. Nothing here is a criticism of the people who built these β€” shipping a playable 3D game in a weekend is the achievement, and the frame-rate gap is a property of the method, not the builders.