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 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.
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 category: thirteen pieces, from a temple brazier to a single candle.
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).
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 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.
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.