ChatGPT vs Gemini: the rougher game is the better one
One brief: invent an addictive game in one HTML file. ChatGPT's can drop a wall 0.16 s in front of you; Gemini's never spawns one within 250 px. We still preferred ChatGPT's.
GPT 5.6 Sol (Extra High)vsGemini 3.7 Flash (High)

No single winner
No winner recorded: every requirement here is met by both entries, and what separates them is how they play. Our preference is in the review, and it is not the tidier game.
GPT 5.6 Sol (Extra High)
- Technical score
- 100
- Web app completion time
- not recorded
- Requirements met
- 11/11
Gemini 3.7 Flash (High)
- Technical score
- 100
- Web app completion time
- not recorded
- Requirements met
- 11/11
Word for word, as both models received it
Create the most addictive browser game you can make in a single HTML file. Constraints: - The core mechanic must be understandable within 5 seconds - A game should last between 30 seconds and 3 minutes - The player should immediately want to try again after losing - Include scoring - Include increasing difficulty - Include a high score - Include satisfying visual feedback - Keyboard or mouse controls - HTML, CSS and vanilla JavaScript only - No external assets or libraries Do not make Snake, Pong, Flappy Bird, Tic-Tac-Toe, Breakout, or another obvious clone. Invent an original mechanic. Return only the complete HTML.
Scroll inside the box for the rest of the brief.
Requirements met
| Requirement | ChatGPT | Gemini |
|---|---|---|
| Everything in a single HTML file | Met | Met |
| No external assets, libraries or CDNs | Met | Met |
| Rendered with HTML5 Canvas | Met | Met |
| requestAnimationFrame game loop | Met | Met |
| A score the player can see while playing | Met | Met |
| Difficulty that climbs with the clock | Met | Met |
| High score kept in localStorage | Met | Met |
| Playable from the keyboard | Met | Met |
| Playable with a pointer as well | Met | Met |
| Sound generated in code, no audio files | Met | Met |
| Responsive: viewport set and canvas resizes | Met | Met |
Automated checks
GPT 5.6 Sol (Extra High)
GPT 5.6 Sol (Extra High) · web app
- Total size
- 11.4 KB
- Files produced
- 1
- Outside requests
- None
- Technical score
- 100
Gemini 3.7 Flash (High)
Gemini 3.7 Flash (High) · web app
- Total size
- 59.5 KB
- Files produced
- 1
- Outside requests
- None
- Technical score
- 100
Timings are measured in each provider’s consumer web app, so they include network and interface conditions — they are not model inference latency.
What the numbers leave out
The two title screens are the round in miniature. Orbit Shift opens with one line — “One button. Two orbits. No brakes.” — and a button that says TAP TO BEGIN. Nexus Sling opens with a three-panel tutorial: GLIDE, TETHER, SLING, each with a paragraph under it. The brief asked for a core mechanic understandable within five seconds. One of these needed six words to explain itself and the other needed a manual.
Orbit Shift is 264 lines. You travel round a circle on one of two rings, and one button swaps which ring you are on; gems sit on the rings and red arcs block them. Nexus Sling is 1,868 lines. You steer a core with the cursor, hold to whip-orbit the nearest anchor, release to sling — a tether game, and a genuinely more ambitious idea than the first one.
The ambitious one is the harder one to hold. The tether grabs the anchor nearest the ship rather than the one nearest the cursor, so the thing you are aiming at and the thing you get are two different choices. And the two control schemes the brief allows are not the same game: steer with the mouse and the core covers 671 px in a second; hold an arrow key and it covers 112. The keyboard branch of the movement code is scaled by the frame time and the mouse branch is not, so one of them is roughly six times the other and the faster one also changes with your refresh rate.
Orbit Shift's problem is its spawner, and it is the first thing you meet. The opening set puts a hazard anywhere from 0.48 to 1.23 radians either side of the first gem, and the ring turns at 1.7 radians a second — so a wall can be 0.16 s in front of you when the run starts, and in a quarter of runs there is one in your own lane inside the first second. Nexus Sling's spawner refuses to place a hazard within 250 px of the ship. Same brief, seven minutes apart: one model wrote that guard and the other did not.
There is a second one further in. After eighteen seconds Orbit Shift may add a hazard behind the first, and that one is placed without the separation check the first one gets — it can land on the gem's own angle, in the gem's own lane. We ran its spawn function two hundred thousand times per sample: from twenty seconds in, about 2.3% of sets contain a gem you cannot take without dying, which at that spawn rate is one roughly every thirty to forty seconds of play.
And we would still rather play Orbit Shift. It is the rougher of the two and a seventh of the length, and it is the one that reads in a glance, restarts instantly and asks one thing of you. Both faults above are the kind you can fix in an afternoon — a minimum distance on the first spawn, the same separation check on the second — and neither is a fault in the idea. Nexus Sling's difficulty is not in its spawner; it is in the mechanic, and that is the harder thing to move.










