Brackenmere / dev log

Posts Building Brackenmere

The kit: one catalogue of placeable pieces

On 25 September every reusable object, light and effect in Brackenmere moved out of the worlds that first used it and into one catalogue, placed by id, measured, and drawn on a page I could browse. The next day a hamlet built only from those pieces showed where the kit was still weak.

G09 6 min read

How shall I tell it?

By 25 September Brackenmere had seven worlds and a heap of things to put in them, almost none of which could be used anywhere else.

I had been collecting pieces since the first week, always with later in mind. When I swapped the hero's sword: "can we make sure we store the other one somewhere in our folder structure for use later on?" When the agents slimmed the Meshy models down for the game: "we may want to use the models but the back of them in other scenarios, other areas". When I handed over the room furniture on 23 September, I sent "3 folders with various bits in. Including doors, frames, signs, swords, axes, shields, bar items, potions, cabinets, tables, chairs, fireplaces, wood stacks".

The kit catalogue page: a grid of cards, each with a rendered piece, its id, params and measured cost The catalogue page on 26 September: every piece the worlds can place, drawn on its own.

Where things stood

The trouble was where those pieces lived: in the folder of the world that needed them first, often knowing things about it. The signpost read the village's maze gate to find its words; the fountains expected the maze's clearing.

That morning, in one long dictated message to the cloud session, I asked for the tidy-up. I wanted "the items that you've created to go in all these elements, like the wooden signs or the large statues or the rocks or ice or all that kind of stuff" kept in "some kind of catalog that if we were to build a world or a maze up later on, we can take from that catalog easily enough." The word I kept reaching for was opinionated: "We don't want them opinionated about where about the world they live in."

It was the first of three asks, and the one that mattered most: "The code organization, making sure that it's all correct for moving forward when we start to use these objects and I actually start building the game." The second was a Meshy shopping list ("Just maybe produce an artifact. I like artifacts"). The third was a question: "what else do game designers use...?"

Moving house

The first commit was almost all file moves, from src/world into a new src/kit, plus a few cuts so pieces stood alone: the sign takes its text, fountains take any spot.

Then the catalogue. Every piece got one entry with an id like lighting/lantern: its params, footprint, shadow and glow, a measured cost, and what to draw while its Meshy model loads. A world now places a piece by name: { kit: 'lighting/wall-torch', x, z }.

That last field settled a ruling of mine from the code audit two days earlier: "A castle prop whose model fails to load should not keep its collider. It should be removed." Now every entry says what happens.

Under the hood By lunchtime the catalogue held 206 pieces in 15 categories, 95 of them wrapping Meshy models.

Moving a candle out of the inn's code should not change the inn, so a world lends the kit its materials by slot names like rock or iron, and a room of kit candles and shelves still draws as one mesh per material.

Under the hood The check was a before and after of the renderer: draw calls, triangles, lights, shadow casters, materials, shader programs and textures were identical in all 30 world and tier rows. Screenshots matched the old build pixel for pixel, apart from the desert's random dust.

An isometric view into the inn: a long bar, bottle shelves, cabinets, candles on the tables and a stone fireplace The inn after the move. The lights, furniture and fireplace are catalogue placements; the room still merges them.

A page to look at

The agents built /catalog.html: a card for every piece with its id, params and cost, and a turntable where you change its params.

The lighting section of the catalogue: braziers, a campfire, candles, a chandelier, lantern posts, a glowing crystal and a wall torch The lighting category: thirteen pieces, from a temple brazier to a single candle.

The turntable view of the iron lantern, lit on its wall bracket, with editable params below One piece on the turntable. The same lantern hangs on a wall, a post or a chain, depending on its params.

The costs are measured, not written: a script renders each piece alone at High. A test fails if anything in the kit imports a world. The next day that became golden rule 1: "The kit is a world-agnostic jigsaw... Worlds only arrange pieces."

The same afternoon: a world's look as data

While the move ran I asked "whats after that kit re-organisation?", then pasted in a table of techniques from ChatGPT: "I dont want to implement every one of these, but is it worth lining up a couple of these items that would make a big impact. In the right order of 'layering' so we get a good solid base." The kit had already changed how I thought about them: "they need to be properly built so they dont make assumptions on world, but we keep this 'jigsaw' element to the whole build."

I was away that weekend and wary of the bill ("I dont want to work all weekend on this as my claude usage may spiral"), but: "ok lets go, im excited".

So each world got an environment profile instead of numbers scattered through its code: grade, fog, soft shadows, ambient occlusion, particles and one shared wind, which plants, banners, smoke and flames now all sway on.

Bloom became something a material opts into where it is made, and wear went into the catalogue as decals (soot, moss, cracks, damp, puddles).

First person on a fen boardwalk at night: a lit lantern on a wooden post, mist over black water and the moon behind Whisperfen's lantern post, a kit piece, glowing under the fen's own profile of mist and bloom.

Testing it honestly: Kit Yard

The next day, merging all this to main, I asked for more: "any easy world models we can build in prep that we would need in a medieval world (fences, puddles, other buildings etc)." And: "Be thorough and take your time, get it right and clean for the future."

So on 26 September the kit grew a countryside: cottages, barns, a chapel, fences and dry-stone walls, hay, crops, bridges and graves. To test it, the agents built Kit Yard, a hamlet made only from catalogue pieces.

Kit Yard from above: a chapel in its churchyard, cottages along a lane, a stream with a stone bridge, a barn, a post mill and a fenced wheat field Kit Yard on 27 September, after three rounds of fixes.

It was a harsh test, which was the point: the shots showed haystacks that read as spheres, hedgerows like chains of balls and puddles as black blobs bigger than the hero. One fix overshot: a blind reviewer wrote that the hay rick "was meant to fix a sphere; it now reads as a skep". The puddles went from black, to sky blue, to near-black holes, before they settled as muddy water in the ruts.

That evening I checked in: "How's it going? What else is to go". Every fix landed in the kit, so it reached every world: the reeds in Kit Yard's stream drew black from behind, and so did Whisperfen's, and one change fixed both.

First person down Kit Yard's lane between a thatched cottage and a stone cottage, picket fences and flower boxes either side The lane at golden hour. Nothing here belongs to Kit Yard except where it stands.

What I took from it

A day moving code without changing anything you can see sounds like a waste. It was measured as changing nothing, and every world built from now on starts with a shelf of pieces.

Two habits came out of it: make the boundary a test, or the next agent will reach into a world again; and build something real from the kit, because a catalogue page flatters every piece.

By 25 September Brackenmere had seven worlds and a heap of things to put in them: signs, statues, rocks, lanterns, furniture. The trouble was that each one lived inside the world that first used it, and often only worked there. A signpost was tied to the village's maze gate. The fountains expected to be in the maze's clearing.

The kit catalogue page: a grid of cards, each with a rendered piece, its id, params and measured cost The catalogue page: every piece the worlds can use, laid out on its own.

One shelf of pieces

I asked the AI helpers to move everything into one catalogue, like a big box of building pieces that any world can take from. Each piece had to stand on its own and not care which world it ends up in. When I start building the real game, I want to pick things off a shelf.

So every lantern, candle, rock and table now has one entry, and a world just says "put a wall torch here". Nothing in the existing worlds looked any different after the move. That was checked carefully.

An isometric view into the inn: a long bar, bottle shelves, cabinets, candles on the tables and a stone fireplace The inn after the move. It looks the same, but its lights and furniture now come from the catalogue.

A page to browse

There's now a page where I can see every piece, spin it round and change it. The same lantern can hang on a wall, sit on a post or dangle from a chain.

The lighting section of the catalogue: braziers, a campfire, candles, a chandelier, lantern posts, a glowing crystal and a wall torch All the lights: thirteen pieces, from a big brazier to a single candle.

A golden rule came out of it: the pieces are a jigsaw that knows nothing about any world. Worlds only arrange them.

Each world's mood

The same afternoon each world got its own mood settings in one place: colour, mist, soft shadows, glow and one shared wind that plants, banners, smoke and flames all sway in. Wear like soot, moss, cracks and puddles went into the catalogue too.

First person on a fen boardwalk at night: a lit lantern on a wooden post, mist over black water and the moon behind A lantern post from the catalogue, glowing in the fen's own mist.

Putting it to the test

The next day the catalogue grew a countryside: cottages, barns, a chapel, fences, stone walls, hay, crops, bridges and graves. To test it, the helpers built a little hamlet from nothing but catalogue pieces.

It was a tough test, which was the point. Haystacks looked like balls, hedges looked like strings of beads, and puddles were black blobs bigger than the hero. Every fix went into the catalogue, so it improved every world at once.

Kit Yard from above: a chapel in its churchyard, cottages along a lane, a stream with a stone bridge, a barn, a post mill and a fenced wheat field The test hamlet after three rounds of fixes.

First person down Kit Yard's lane between a thatched cottage and a stone cottage, picket fences and flower boxes either side The lane at golden hour, built only from catalogue pieces.

What I learned

A day tidying up without changing anything you can see sounds like a waste. But every world built from now on starts with a shelf of pieces. And building something real from them matters, because a neat catalogue page makes every piece look good.

Building Brackenmere

G07 5 min read

Worlds as data: a mine to prove it, then three worlds in one evening

On 24 September every world in Brackenmere became a piece of data run by one shared runtime. A small dark mine proved a new world needed no changes to the core, and that same evening three agents built a marsh, a frozen temple and a desert tomb side by side.

Building Brackenmere

G38 6 min read

Three new worlds in one night

One evening I asked for three new maze worlds that were not rectangular grids, with movement and emotion, and stepped away. By morning a drowned abbey, a giant's kitchen and a clockwork hall were on main. Then I played them.

Building Brackenmere

G27 6 min read

The Charwood: a new wood every visit

The Charwood, a charcoal burners' wood that is generated fresh for each visit, was built in an afternoon on 13 October and rebuilt that evening because it felt like the hedge maze in different clothes. The fix was a new layout, not more decoration, and playing it changed it twice more.