Brackenmere / dev log

Posts Building Brackenmere

The living town, written overnight

I gave the agents my biggest brief yet, a town of people with back stories, memories and gossip, told them not to ask me anything, and went to bed. By morning Brackenmere had sixteen characters, four running stories and a simulation that could live through months in a unit test.

G11 6 min read

How shall I tell it?

On 24 September I asked an agent: "How does it work with a cloud session? So if I close my laptop, everything keeps on running." Three nights later I found out. I handed a cloud session my biggest brief yet, went to bed, and woke up to a town.

The village square with the town's people at their posts The square on 27 September, peopled by the living town.

Until then the villagers were set dressing. Elsie the baker walked a small loop by her stall saying "Fresh from the oven! Come and warm yourself by the bakery." She had no past, no friends and no reason to be there.

The brief

Just after midnight, with the performance decisions answered, I asked for it: "let's work on a character driven module where we store character driven long term stories, back stories, memory and the like. For instance Elsie the baker should have a back story, does she have a family? What's her passion in life / what does she like doing etc."

And the part I cared about most: "I want deep rich characters that interact and make up a community and town and mingle and effect each other. How do we design that long term community feel where new characters can come in or be replaced and it all work together?"

The agent came back with a design (character sheets, roles, relationships, memory, gossip, story arcs) and a few questions. I answered them on my way out: "I'm afk now for 7-8 hours so work on the character driven module while I'm afk. Think deeply, think how it works without knowing the world yet and how these characters may come and go and be part of the village ecosystem."

That gave three calls. Dialogue would be hand-written, shaped so an AI voice could take over later. The simulation would be full: people choose what to do from their needs and relationships, not from fixed schedules. And for the lore, the agents would draft the bibles and I would edit them. When it still talked about checking in, I closed the door: "I am afk so go through from spec to build without stopping / don't ask me questions".

What happened while I slept

The first commit, in the small hours, was the spec and a town bible: a history, a calendar with four festivals, sixteen character bibles and four story arcs. Elsie got a voice ("Calls people 'love' only when flustered") and a dream of making the old mill "a Marlow mill again". Her price at the stall: "A story for a bun, that's the price at this stall. Coin's for loaves."

Then came the engine: people who meet, remember and gossip, a drama manager pacing the stories, dialogue chosen by what a person knows, newcomers and departures, and a dev page to watch it all.

The key decision was a boundary. Town code never imports a world, the kit, the UI or Three.js, so an agent could run months of town life in a unit test and check what happened. That is why it could be built unsupervised.

Under the hood By the time it merged that afternoon, src/town was about 11,000 lines in 68 files. The agent logged 99 decisions overnight, each with one line of reasoning.

Elsie's character sheet on the dev town page The dev town page: Elsie's goals, needs, traits and stories.

Gossip was my favourite part. A rumour starts true and gets juicier as it travels: "Elsie saved Tobin the last honey bun again. Third time this week" ends up as "Tobin and Elsie are as good as betrothed. Marta says so."

The honey bun rumour spreading on the gossip tracer The gossip tracer: who heard the honey bun story, and from whom.

The four arcs are a courtship, a recovery from fever, a ranger who never lowers his hood, and a new hand at the forge. One big moment a day at most, and a validator proves no arc can get stuck.

Under the hood A 40-seed sweep tuned the arcs. The courtship takes six to twelve weeks to reach a wedding, and parts on about a fifth of seeds if the hero never gets involved.

Replaceable people

The brief's last question was the hard one. The answer is roles: the forge belongs to "the smith", not to Bram. If Bram leaves, the forge closes, the town talks, and someone takes the role: an apprentice, a relative, or a stranger off the high road.

Bram at his anvil in the forge Bram at the forge.

A newcomer behind the same anvil after Bram has gone The same forge after Bram has left, with a newcomer in the smith's role.

With no one to ask, the agent answered its own open questions, each time taking "the gentle, reversible choice", as the spec puts it. A game day lasts 48 real minutes, and nobody dies. Each is a constant or a line of data, so I could overrule any of it in a sentence.

Into the game

I read the overnight report over breakfast. "This looks good. What's on the agenda for today?" The agenda was the town in the game, and by lunchtime it was there, a clock in the HUD and people walking their plans through the village, the inn and the forge. A blind art review scored them 5.47 out of 10 and called the plain stand-in for newcomers "unacceptable next to the Meshy people". Three rounds took it to 5.83.

The Bracken Arms with the town's people inside The Bracken Arms. The review's complaint: everyone standing, nobody at the set tables.

The afternoon round

The weekend's thread had grown huge, and I asked whether that mattered: "This chat and work now is very large. Does context here come into play?" It did, so after a final "merge to main" I moved to my own laptop and a fresh session that afternoon: "Lets install the ktx, then work through the decisions. Ask me upfront so I can leave you work." Then: "can we relax permissions here so you can stop asking me to allow things?"

Shops opened only while their keeper was at work, so the bakery was open 40% of its day, and a new game began at dawn with the whole town asleep. I picked shops open about 85% of the day and a later start.

Doubling their work drive was not enough: keepers who went to bed early woke in the small hours, dozed off again and slept past midday. The fix was one rule, a sleeper wakes once rested. Emergent behaviour includes emergent bugs.

At the market, the live town sent nobody to Market Row at all, so the agents added four stallholders. The save grew with every person.

Under the hood A unit test measures the town's save after 60 simulated days. Four stallholders took it from about 52 KB to 76.5 KB, against a 64 KB budget.

The village's art could wait: "Some of this will be meshy downloads that I will get on with next week."

What I took from it

The boundary did the heavy lifting: a town that never touches the renderer can be built and tuned overnight with nobody watching. And I was not asked 99 questions; I got 99 answers, each with its reason, any of which I could change.

And a simulation is only as good as what you can see of it. One of my first messages the next morning was "and what urls can I go to to see lots of things?" My kids will never open a relationship graph; they will notice whether the baker remembers them.

The people of Brackenmere are now real characters. Before, they were just scenery. Elsie the baker walked a little loop by her stall saying the same line about warm bread, with no past, no friends and no reason to be there. Now everyone in the village has a story, remembers things, gossips, and gets on with their own lives.

The village square with the town's people at their posts The village square, full of people going about their day.

A town written overnight

I gave my AI helpers my biggest job yet, just after midnight. I wanted deep, rich characters who mix and affect each other, and a village where new people can arrive or leave and it all still works. Then I said I would be away for seven or eight hours, told them not to ask me any questions, and went to bed.

By morning there was a whole town: a history, a calendar with four festivals, sixteen characters and four running stories. Elsie got a voice and a dream: to make the old mill a Marlow mill again. Her price at the stall: "A story for a bun, that's the price at this stall. Coin's for loaves."

What the villagers do now

  • They choose what to do from what they need and who they like, not from a fixed timetable.
  • They meet, remember, and gossip about each other.
  • What they say depends on what they know.

Gossip is my favourite part. A rumour starts true and gets juicier as it travels. "Elsie saved Tobin the last honey bun again. Third time this week" ends up as "Tobin and Elsie are as good as betrothed. Marta says so."

The honey bun rumour spreading on the gossip tracer A behind-the-scenes view of the honey bun rumour spreading: who heard it, and from whom.

The four running stories are a courtship, a recovery from fever, a ranger who never lowers his hood, and a new helper at the forge. They unfold slowly over weeks, with at most one big moment a day.

People can come and go

The hardest question was how to let characters leave without breaking anything. The answer is jobs: the forge belongs to "the smith", not to Bram. If Bram leaves, the forge closes, the town talks about it, and someone new takes over, perhaps an apprentice, a relative, or a stranger off the road.

Bram at his anvil in the forge Bram at the forge.

A newcomer behind the same anvil after Bram has gone The same forge after Bram has left, with a newcomer as the new smith.

With no one to ask overnight, the helpers made their own choices, always picking the gentle option that could easily be undone. Nobody dies, for one. They wrote down every choice with a reason, so I could change any of them in a sentence.

Playing it

By lunchtime the next day the town was in the game, with a clock on screen and people walking about the village, the inn and the forge. Playing it showed up a few oddities. The shops were only open when their keeper happened to be at work, so the bakery was shut most of the day, and a new game started at dawn with the whole town asleep. Some shopkeepers even woke in the night, dozed off again and slept until midday. Now shops are open most of the day, the game starts later, and people wake up once they have had enough sleep. The market was empty too, so four stallholders joined.

The Bracken Arms with the town's people inside The Bracken Arms. Everyone was standing, and nobody sat at the tables yet.

What I took from it

I was not asked lots of questions overnight. Instead I got lots of answers, each with a reason, and any of them I could change. And a living town only matters if you can see it. My kids will never look at a chart of who likes whom. They will notice whether the baker remembers them.

Building Brackenmere

G31 6 min read

Village life: 22 new people, their weeks and how they walk

In one day Brackenmere went from fifteen people in a village of empty houses to thirty-eight with homes, trades, bedtimes and a week of named days, and they stopped walking like chess pieces. The surprise was how empty the old village really was once the agents measured it.

Building Brackenmere

G37 6 min read

Four rooms, built from the pictures I sent

I sent the agents an isometric picture of the inn I wanted, then three more for my home, the Forge and the Apothecary. All four were rebuilt in one evening. It took a second day, and my complaint that the inn felt stale, to make them warm.

Building Brackenmere

G35 6 min read

A world, not a to-do list: the village changes because of you

I played Brackenmere end to end and found an errand chain: talk, fetch, return, repeat. Three AI designers diagnosed it independently, my son voted on their ideas, and by the evening every quest left a mark on the village.