All projects

One More Turn

A vibe-coded experiment. A mobile-first strategy game: lead a medieval English settlement, one season per turn.

Year
2026
Status
Live
Stack
  • TypeScript
  • React
  • Vite
  • Laravel
Links
One More Turn's start screen. A row of little houses sits above the title and the line "Lead an English settlement through the generations", with a button to found a new settlement.

What it is

One More Turn is a vibe-coded experiment: a mobile-first browser strategy game, designed for an iPhone held in portrait. You lead a fictionalised medieval English settlement through the generations: harvests, feuds, factions, faith, and the slow rise from hamlet to market town.

Every resident is an individual with kin, memories, grievances and plans of their own. The world advances one season per turn, deterministically, from a world seed you can share.

Why I built it

I have always love turn based games and had this idea for one. I want to push Opus 4.5 and see what it could do in a handful of prompts. I was pleasantly surprised.

Technical notes

  • The server is authoritative: the client sends only the player’s intent.
  • The deterministic simulation, about 10,000 lines of TypeScript, runs as-is under Node behind a loopback service rather than being ported to PHP, so its determinism holds.
  • Each turn runs a 20-phase pipeline. A seeded sfc32 random number generator is split into named streams for each system and character, and Math.random and Date.now are banned by lint.
  • Characters use utility AI that scores actions against their own perception only. They remember the player’s judgements and form factions around shared grievances.
  • Accounts are anonymous-first, and web push notifications go out from a season clock that ticks once a minute.