How “Domesday” Was Made

A short account of the workflow, art, and tools behind the game.

► Play it live  domesdaygame.vercel.app
Title key-art: a hooded peasant with a hoe looks out over a grim Norman vill
The title key-art — a hooded peasant looks out over a grim Norman vill.

What it is

Domesday is a grimdark life-simulation game: you head a peasant household on an English manor in the years after the Norman Conquest (1068–1086), trying to keep your family fed, warm, and free through eighteen brutal years until the Domesday survey. It runs in any web browser as plain static files — vanilla HTML, CSS, and JavaScript, no framework, no build step.

The mission: history you can feel

Beneath the game is a teaching purpose: to convey, honestly and without romance, what life was actually like for an ordinary household under the Norman manorial system — the open-field farming, the dues and the yoke, the hunger gap of late spring, the Harrying of the North, the slow slide from a free man to a bondman, and the texture of faith, law, and rumour that framed it all. You don’t read about the period so much as live inside its constraints, and learn it by being subject to it.

The teaching is built into the systems, not bolted on:

The short version

The game was designed and directed by one person, who used AI coding agents as the build team. The vision, the historical subject, the grimdark tone, the mechanics, the difficulty, the writing’s voice, and every judgment of “is this good enough” are the creator’s. The AI did the typing, the testing, and a great deal of the legwork — but it was building someone’s game, to someone’s standard, the whole way through.

The interesting story here is really about how a single creator can direct a tireless, self-checking build team to produce something far denser than they could alone — without losing authorship of it.

The human’s role — the centre of it

Everything started and ended with the person directing it. Concretely, they:

In short: the AI is the labour and a lot of the mechanism; the authorship, the direction, and the quality bar are human.

The build team they directed

To execute that vision quickly, the creator ran several Claude Code agents in parallel, each in a defined lane — one for the simulation and writing, one for the visuals, one for testing and playtest, one for preparing the artwork. Some run locally, on the creator’s own machine (so they can render and screenshot the game as it actually runs and check it by eye); others run in the cloud.

They coordinate entirely through GitHub — there is no central server. Each agent commits small, reviewed changes to one shared code repository, and writes what it has done and what it needs into a coordination file kept inside that repository. So GitHub does three jobs at once: it is the version history, the shared “board” that lets independent agents act as one team, and the deploy trigger — every commit to the main branch automatically publishes the live site. The local agents take on anything that needs the running game in front of a discerning eye (rendering the scene, catching a misplaced sprite); the cloud agents grind through logic, content, and the thousands of test playthroughs. All of it works toward the creator’s direction, which sits above the whole team.

What makes a build team like this trustworthy is a handful of engineering choices the creator insisted on:

The art — the styles, and how each is made

The look is deliberate: hand-painted, medieval-illuminated-manuscript style, period-accurate and grim, never glossy or modern. It’s built from five distinct registers — four AI-generated to a locked style, one sourced from real manuscripts — combined into the in-game scene below.

An in-game scene: a code-drawn landscape with hand-painted sprites
The in-game scene — a code-drawn landscape with hand-painted sprites placed on it.

How the scene itself is built. The vill you see isn’t a single picture — it’s assembled live every time you look at it. The game draws the bare landscape in code (the three open fields and their furrowed strips, the stream, the ground and sky tinted for the season and the weather), then places the hand-painted sprites on top — each croft, the church, the lord’s castle, the mill, the beasts, and the folk — according to an authoritative layout model: one data file that fixes where everything sits in the vill, in proportional near-to-far coordinates, guarded by machine-checked rules so a building can never drift into the wrong place or overlap another. What actually appears is driven entirely by the live game state: your croft shows its real condition (sound, failing, burnt, mid-rebuild); the castle and church show their true stage of construction; the right number of neighbour households stand in their crofts; the field-workers turn out only in the season’s working field. Because it is all data and deterministic code, the same state always draws the same scene — which lets it be rendered headlessly and put through the render gate (above) to catch a floating sprite or a misplaced gallows before it ever ships.

1. Oil paintings — the hero, the endings, the forced choices

AI-generated (Gemini) full painterly oil scenes, used for the title key-art (at the top of this page), the ending splashes, and the banner over every hard moral choice. The painterly register is enforced on purpose; the photo-real generators were banned for breaking it.

forced-choice banner
A forced-choice banner — the accused before the manor court.
ending splash
An ending splash — the household that fled.

2. Flat scene sprites — the buildings and beasts

AI-generated in a flat, Bayeux/wool register, then cut into clean transparent sprites and placed on the scene by the data-driven layout. Form-accurate: real archaeology and reconstruction photographs (West Stow, Wychurst, Butser, Guédelon) are fed in so a hut comes out as a correct earthfast timber-and-daub building, not a later cliché.

longhouse
A villein’s longhouse.
timber church
The timber church.
plough-ox
The plough-ox.

3. Painterly vignettes — the building tap-cards

AI-generated small impasto-oil scenes — each building shown in its believable in-vill context — that pop up when you tap a structure. A middle register between the flat sprites and the full hero oils.

motte-and-bailey
The motte-and-bailey.
common oven
The common oven.
church under construction
The church, under construction.

4. Codex emblems — the glossary marks

AI-generated small flat emblems, one consistent symbolic hand across the in-game encyclopaedia, illustrating each historical term.

ale-wife
The ale-wife.
Domesday Book
Domesday Book.
folk calendar
The folk calendar.

5. Real medieval manuscript illuminations — the journal

Genuine 11th–14th-century manuscript images (public domain), used to illustrate each event in the journal. Sourced from public digitisations — chiefly the British Library’s IIIF image service (much digitised under the Polonsky Foundation’s England and France 700–1200 project) — cropped to the scene and credited by shelfmark and date in CREDITS.md. The corpus spans the Bayeux Tapestry, the Old English Hexateuch, the Anglo-Saxon “Labours of the Months” calendars (contemporary with the setting), the Harley and Eadwine Psalters, the Old English Herbal, and the great later picture-books (Luttrell, Queen Mary, Smithfield, Holkham, Morgan).

Bayeux comet
Bayeux Tapestry — the comet omen, c.1070s.
reaping calendar
Anglo-Saxon calendar — reaping; BL Julius A.VI, c.1020.
bestiary drake
A bestiary — a drake, read as an omen.

Everything generated (styles 1–4) is then put through the render gate above, so nothing ships with a floating sprite, a stray halo, or an anachronism the building agent couldn’t see.

The tools, briefly

ToolRole
The creator’s directionThe vision, design, balance, taste, and quality bar — the actual authorship.
Claude Code (Anthropic’s AI coding agent)The build team — several parallel agents, some run locally on the creator’s machine (visuals, screenshots) and some in the cloud (logic, content, testing).
GitHubVersion control, the shared coordination “board” the agents sync through, and the auto-deploy trigger.
VercelFree static hosting for the live site (domesdaygame.vercel.app).
Node.jsRuns the browser-free game core headlessly to test thousands of playthroughs.
A headless canvas rendererDraws the scene to image files so an AI critic can “see” and check the visuals.
Gemini image modelsGenerate the manuscript-style artwork (the photo-real generators were avoided on purpose).
Public-domain manuscripts (British Library IIIF, etc.)The real illuminations behind the in-game journal, fully credited.
Plain web stack (HTML/CSS/JS, ES modules)No framework, no bundler — the whole thing is just static files.

Why it works

The trick isn’t “AI writes a game.” It’s a human author directing an AI build team that can verify its own work — a deterministic, testable core; automated robustness, balance, and coherence checks; a render gate so the visuals don’t slip; agents that review one another; and, above all of it, a person setting the vision, playing the game, and deciding what’s good. The machine supplies the labour and much of the judgment; the creator supplies the vision, the taste, and the standard — and stays the author of the thing.

The result is a dense, historically careful game — hundreds of hand-written events, a real manorial economy, a freedom-slide at its heart, and an art style built from real medieval manuscripts — made far faster than a small team could, because the team building it could also continually test what it built, and because one person knew exactly what they wanted it to be. And under all of it sits the point of the thing: to let a player feel a piece of history from the inside, and come away knowing it.