Building Chaos Rush — Part I: The Yellow Square Genesis
This is Part I of an ongoing series about how a father-son AI experiment became Chaos Rush, an endless platformer for the Apple Watch. What started as a prompt and a yellow square evolved, over months and several AI generations, into a real product with real users. This is how it began.
It all started with a yellow square cast into the void, doomed to die the instant the game began due to a basic AI oversight. Maybe it was a fluke. I pressed restart. Same pattern, same death. Something was off. I told Claude what had happened.
“You’re absolutely right!” it said and proceeded to adjust the player avatar's starting position and platform. When it finished, it assured me it was fixed. I reloaded the browser, and this time the yellow square spawned on a platform. The game was playable. Barely.
“You’re absolutely right!”
This was May of 2025. My 12-year-old son and I decided to see if we could prompt an AI to create an endless platformer-style game, in the spirit of Geometry Dash. This was our meaningless benchmark for each new AI model: could it actually create a playable game? It was a fun distraction that often led to humorous disappointment, at the cost of a few hundred thousand tokens.
We created a prompt for what we wanted: an endless platformer game with coins and obstacles, built using Phaser.js. Claude studied the prompt, started creating files, and after a few minutes gave us a localhost URL we could try in the browser. We clicked the link and were pleasantly surprised by a retro-looking game design with a pulsing logo and a clear start button. In some of our earlier “make a game” prompts, nothing would load. Blackness. So a working intro page was like a good sign. But the delight was short-lived. Upon pressing ‘START’, well, you already know what happened to the hapless yellow cube.
After several back-and-forth iterations with Claude, we had a playable prototype. Was it perfect? Certainly not. There were plenty of glitches, and we worked with Claude to fix the issues as we discovered them. We also messed around with the code itself and changed variables to see how they’d affect the gameplay.
Once we dialed in the basic platformer physics, we came up with ideas for power-ups — things the player could pick up, some good and some you’d want to avoid. A shield to protect you from spikes. A grappling hook to save you if you fell. We added a bomb that would blow up on-screen obstacles, producing a chaotic explosion that obscured gameplay. Claude implemented them all perfectly.
The grappling hook was particularly impressive. I described to Claude what I wanted to happen: if the player is about to fall into the void, the grappling hook should deploy as a line to the nearest platform and retract, pulling the player to safety. Claude nailed it in one shot.
Our feature list continued to grow, and Claude executed every prompt without complaint. We added speed-up and slow-down portals, double-jump power-ups, and magnet power-ups to attract coins to the player. We provided Claude with sound effects to trigger for jumping, coin pickups, power-up pickups, and death. The process was iterative, and occasionally, Claude would break something and require scolding to get back on track. And no endless platformer is complete until it has a thumping EDM track to accompany the fast-paced gameplay chaos. We now had three tracks, randomly cycling with each playthrough.
Together with Claude, we built a playable game that was genuinely compelling and addictive. But could an AI build a full-stack application and not just a stateless, standalone browser game? I told Claude to add an API using FastAPI, a React admin panel, and a PostgreSQL database, and to containerize everything in Docker. This was no small ask. After hours of back-and-forth and debugging, we had added account creation and user logins to the game, along with saved high scores and coin tracking. But what’s the point of coins if you can’t spend them? A shop was necessary where the player could spend their coins on shields and grappling hooks. And who would play a game without glory and competition? Adding a leaderboard to track high scores across all players was essential.
These features required iterative work, back-and-forth with Claude — defining specs, implementing, testing, and revising. It came together over several evenings of work. In the end, we had a fun, endless platformer game with a full-stack backend, user accounts, levels, and a coin economy.
And then we moved on. This was just an exercise in seeing what was possible and enjoying the process. The game was fun, but it didn’t hold my son’s attention as well as Roblox or Rocket League. I had other projects competing for my attention. The repo sat untouched for about 7 months.
Over Christmas break, free of work obligations and wanting to play around with something fun, I started up the Docker container and my son and I played the game again. AI coding tools had matured considerably since we last worked on this game. Claude Code, a powerful coding agent, was now my tool of choice, and Anthropic had recently made Opus 4.5, their most capable model, the default. Then the question hit me: had AI coding tools evolved to the point where they could port this Phaser game to the Apple Watch? We were about to find out.




