LIAM JOHN DAVISON

AI Driven Game Development

Liam Davison

I promised myself, and my friends, that I would no longer attempt to write a computer game. It always ends in frustration and tears. But a few weeks ago, while idly chatting to an LLM, I suddenly realised that I don't need to write a computer game any more. I can have an AI agent do it for me.

So I fired up and subscribed to Claude Code, and for the past few weeks I've been prompting my way into an implementation of Project Kuiper. First, I - or rather, Claude and I - wrote a Game Design Document. I decided to build the game for the web using SvelteKit and Phaser.JS. No weird tech choices like Kotlin & Godot this time. I then directed Claude Code to plan the development, and off it went.

Very, very quickly I had something working. Over a weekend, Claude Code had achieved all I had ever managed with Kotlin/Godot, and more. Each day, I've prompted a change, a fix, or sometimes just a discussion about gameplay. The development has been split into phases, which implement a particular feature. I've let AI write 99% of the content – the technology tree, the flavour text, the action cards that can be played each turn. Not everything has matched my initial vision for Kuiper, but I've largely been content to let Claude take the lead.

I've been especially impressed with the ability to do large refactors – the sort of thing that a human developer would shake their head at, tut, and try to avoid, not because it's impossible, but because it's a lot of manual work.

For each Phase, I state the problem or direction and have Claude write out a plan which I then review. Sometimes these are broken into sub-phases, ticked off as each is completed. Quite a few of these sub-phases are then deferred as I realise that I haven't scoped out the game elements sufficiently.

The game play is split into three Eras, each with its own game map. Era 1 is on Earth, represented as a hex grid. Era 2 heads into space, near Earth orbit, the moon and the Lagrange points, as a directed graph. I'm not quite sure how Era 3 will be represented. The first Era is now functional, though there are two core features which still need to be fleshed out. I'm keen to see where Claude and I will go with Era 2.

The game is 'winnable' by opening up a wormhole, and it's losable if climate change destroys too much of the map. Both of these scenarios are placeholders for future content.

The source code for the game is available in the Signal repository on GitHub.

Recap of 2025

Liam Davison

Quite a lot of programming in the first half of 2025. Almost none since then. Of my current projects:

  • bascule is in maintenance mode, but continues to be used to drive this website
  • I like API viaduct, but it's only used for cantilever
  • cantilever has never managed to become a feature complete replacement for bascule
  • caternary, the web and android editor for cantilever, kinda works for the basic use cases
  • amber charge tracker gets the occasional update, mostly by AI coding these days
  • project kuiper is dead, thankfully
  • my raspberry pi isn't even switched on; the e-ink display is still stuck showing "14:17 Thu 30 October 2025"

I have found myself lacking enthusiasm and time for any of these projects. Cantilever and Catenary are intimately connected; one can't really work without the other. I don't enjoy UI development, either in the web or in Jetpack Compose for android, and most of the work needed is in the front end. But without a working front end, there's little point on working on the Cantilever website generator code.

For my Amber project, I have added a couple of features, and I used the app every time I charge my car. But the last couple of changes have been written almost entirely using AI coding agents such as Junie, and there's something kinda demoralising about that. I definitely want to continue to explore AI agents, but I think I'd rather do it with something greenfield and probably lower level.

At the back of my mind, there's always this niggling desire to write a computer game. Every time I do, it ends in tears. If I do try again sometime, I must promise not to make it even harder by doing it in Kotlin – I should just learn GDScript and Godot, or C# and Unity. Something practical and widely used with plenty of supporting documentation.

So what do I want to do? What would I like to learn next?

  • Something lower level; perhaps coding in ARM Assembly, or C, or a modern low-level language such as C3, Zig or Rust
  • Continue and extend API Viaduct, but the cold-start times of AWS Lambda functions are too long. Could I recompile the code to run as a native executable? Or perhaps use GraalVM?
  • I'd like to explore public clouds outside Amazon AWS and Microsoft Azure. I'm increasingly dissatisfied with the US-centric nature of the cloud. However, none of the European cloud services are really geared towards serverless applications.
  • Something actually relevant to my work – learn Microsoft Azure cloud, learn C#, learn Terraform and Bicep perhaps. Doesn't sound very interesting though.
  • Resurrect my Raspberry Pi and use it as mini home server, for a local Git server, an advert blocker... Earlier this year I set up a cloudflare tunnel to my Pi and a Gittea server, which synced and backed up my Github repos. Then the SD card on the Pi died :(.

Lots of options. No actual need for any of these things. I hope I can find an engaging and useful project for 2026.