Where the games are

Where I've been for the last two months: building Dave's Arcade, my ultimate personal project.

Five arcade cabinets lined up in a dark room under a glowing neon sign reading Dave's Arcade. From left to right: Drumroll Please in red with a cartoon drummer, Come In, Over in a starry space theme, Sheep Game in the centre painted with green hills and a cartoon sheep and the game running on its screen, Doodle Duel in hand-drawn black and white, and Diggin' Doggos in bright green with a cartoon dog digging up a bone.
Lovingly crafted in Blender, this image took longer to make than some of the games it shows.

It’s been a little over two months since I last wrote a post here. I was fairly prolific for a bit, so what happened? Did I run out of steam? Did the bots finally burn me out?

It’s been the opposite. I’ve disappeared down the biggest me-shaped rabbit hole you can imagine.

If you want to skip to the end, head over to arcade.david-lewis.com. It’s where my AI work and my lifelong habit of making games finally met. Otherwise, let me tell you that story.

How far do I wind back the clock? Hmmm, the 1980s feels too far. That’s the story of a kid getting a ZX Spectrum, then a Commodore 64, then an Amiga, and loving video games. A kid who wrote a letter (yes, a physical letter) to Ocean Software proposing “Duck Game”, a platformer riffing heavily off The New Zealand Story, which Ocean published on the Amiga. (For the record, the people at Ocean were lovely and sent me a letter back, and a free game.) No, too far…

The mid-90s, working out where you type a web address? Too embarrassing.

I know, let’s head to around 1999 and 2000. My first proper job was at a web agency and news website called CWN (Coventry Warwickshire Network), working in a small team of webmasters (I know). This was a great period in my career. The web was taking off and we were making Flash experiences for educational sites. It’s where I made my first online game, an Atari 2600-style game where you had to collect objects against the clock.

That’s the exact point I realised I could make games and reach an audience. The kid who wrote to Ocean could make that damn Duck Game they didn’t pick up!

Alas, Duck Game never came to be, but shortly after leaving CWN I made Sheep Game, and that was huge (for the time). It appeared in magazines and newspapers, and was a runner-up at yell.co.uk’s 2001 Yell Awards. It was a bit bonkers, to be honest: traffic from South Korea ran to hundreds of thousands of users a month.

Ever since then, making games has been my creative outlet. When I’m in my 70s I won’t be doing woodwork. I’ll still be making games, albeit with 100pt fonts and extra-loud sound effects. But over the years it’s been hard to take my ideas and turn them into what I want to make. Since Sheep Game there have been Doodle Duel, Ready to Roll and Too Many Sheep. There have also been countless games that never quite got there.

In 2013 I wrote a post about finding time to make games, and about the struggle to balance making games with finishing them. Setting myself limits helped. But one heading in that post asked “So where are all the games?”, and the line has stayed with me.

Let’s fast forward once more, to August 2026. A friend asked how AI had changed the way I make games, and the honest answer was: not much. So I built an RTS twice to find out, though that post ended up being more about using LLMs to build things with and without specs. Around the same time I was reading up on how companies like the New York Times develop their games, and what technology they use. And frickin’ boom! WHY HAVE I NOT BEEN MAKING GAMES????

Why hadn’t I applied everything I’d learned about working with AI to making web games? Why am I so slow??? Yes, I’d been using Claude with Godot to put together some demos, but I really didn’t enjoy that process. And the NYT research showed me that a company that size uses web technology to deliver most of its games, then bundles them into an app.

So that’s where I’ve been, and I’ve done it: found a way to express myself through web games. It’s the most me project I could pick, and I’m excited to let you in to see where the games are at.

Dave’s Arcade has remastered versions of my old games, such as Sheep Game and Doodle Duel, plus a whole raft of new ones like Sum Total, Fits and Starts and Send and Blend.

I’ve even dabbled in VR, again with web technology. I’ve had a blast developing Come In, Over, best described as Lunar Lander in an escape room!

The arcade in numbers

For anyone who likes numbers, here’s how the arcade came together.

15 games in the first 38 days. The arcade started on 26 September, and the first game, Bongo Bango (since renamed Drumroll Please), went in that same night. By day 38 there were 12 live games, one in development, and two that were built and then retired.

From idea to live in 53 minutes. Fits and Starts holds the record. Jet-lagged and wide awake on holiday in New Zealand, I wrote its spec at 6:07am, and the game was live by 7:00am. Most games went live the same day or the next. Sum Total took 1 hour 14 minutes. Diggin’ Doggos took under 2 hours, though it had a head start.

Most revisions: Sheep Game, with 306 commits. That’s 141 to the game itself and 165 to its design doc. Come In, Over is a close second with 259.

Not every game started from scratch. Three of them built on earlier work:

  • Sheep Game reused artwork from the 2018 version of the game.
  • Doodle Duel benefited from finding the original codebase.
  • Diggin’ Doggos drew on an attempt to remake it about two years ago.

The build so far:

  • 2,741 commits and 986 merged pull requests across three repos
  • About 130,000 lines of TypeScript, backed by roughly 2,500 automated tests
  • 222,000 words of documentation, including 151 written decision records
  • Running cost of about 1 AUD a day for everything, servers included

The stack. TypeScript and React, built with Vite. The 3D games use Three.js (through React Three Fiber, or A-Frame), the 2D ones use Phaser, and the puzzles are plain React. Behind them are a Nakama game server and Postgres on a single Google Cloud VM, with Firebase for hosting and sign-in.

How it was built

Claude Code wrote nearly all the code. I came up with the ideas, designed the games, and decided what went in and what didn’t. Here’s the process I followed with AI:

  • Docs first. Every game starts as a written spec in a separate docs repo, which is the single source of truth. Big decisions are recorded with the reasoning behind them, and the AI checks them before proposing anything that would undo one. Anything still undecided stays that way until I agree.
  • Rules you can test. Each testable rule gets an ID, and CI fails any change that leaves a rule without a test. That covers about 500 rules, tested by unit tests, real-server tests, and browser tests that play through the arcade on two phones or a phone and a TV at once.
  • Guardrails on the AI itself. Hooks stop Claude from finishing a task with code that fails lint or type checks. Written “skills” spell out repeatable processes, such as the order to change three repos in. Scaffolding scripts enforce the arcade’s conventions automatically.
  • AI reviewing AI. Every pull request gets a Claude code review. A “Must fix” on sensitive code (sign-in, storage, security policy) blocks the merge until it’s fixed, and only I can override it.
  • Merge means deploy. No manual release step. The median pull request merged 6 minutes after it was opened.

The process wasn’t designed up front. It grew each time speed caused a problem. When review comments were being ignored, the review gained the power to block. When costs crept up, a cost guard arrived that takes the arcade offline before the bill passes 35 AUD a month.

What’s next

A few technical highlights from the journey deserve their own posts:

  • TV mode. In several games a TV connects to the host game and gives you a big-screen view while you play. Sheep Game, Doodle Duel and Weekly Quiz have it, and Come In, Over uses the same technology for the Guide player.
  • Debugging on more exotic devices like the Fire Stick and Meta Quest. They all run browsers, but each has its own quirks when you’re squeezing out every bit of performance. One phrase for this: draw calls.
  • Removing my own bottlenecks. Blender with MCP, SVGs that Claude and I can animate together, and keeping CI/CD costs down as those free minutes evaporate. Turns out GitHub Actions can really rack up a bill when you dial up the builds.

The arcade is still very much a work in progress, but it’s reached a point where I’m comfortable letting folks jump in and have a play. I hope the games bring a little fun to your day.

Now, about that Duck Game…