Brackenmere / dev log

Posts Building Brackenmere

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.

G07 5 min read

How shall I tell it?

By 24 September Brackenmere had the village, the hedge maze, the castle and three rooms you could walk into. Each had been added by hand, and each had reached into the core of the game to get there. I had asked for the castle almost on a whim: "Let's create another maze example and call it maybe I don't know the castle or something." Its torches, doors, ladder and pit all taught the shared code something new about castles.

A first-person view across golden sand at sunset: an obelisk carved with symbols, palms, and the dark doorway of a tomb cut into a striped sandstone cliff. The Sunscorched Reach on the night it was built: the tomb of the sun kings, on High.

Where things stood

The simplification audit on 23 September showed the cost. One of my answers to it: "The camera zoom being overridden in every world is not intended." Each world was a special case. That evening, after a castle door I had opened blocked my way back, I was already thinking ahead: "When we build a maze later on we will have to ensure we dont make blockable issues." The plan from the first week was mazes the game makes itself: "I'm not going to handcraft every single maze. That should just be procedural driven." A game that builds its own worlds cannot have each one wired into the core.

Into the cloud

24 September was also the day I stopped working only on my laptop. First I wanted the decks cleared: "Everything on main here, committed and pushed to GitHub? We basically at a clear slate now?" Then: "I want to work in the cloud even when I close my laptop. And also, I've been given $250 worth of free credit." And, to be sure: "So if I close my laptop, everything keeps on running." The rest of the day ran in one cloud session working through numbered phases: the asset diet, faster tests, then what the handoff called the jigsaw kit.

Phase 4a: a world is a definition

Every world became a definition: a profile (fog, light, sky, HUD words), bounds, spawn, portals, the features it wants and a build function. One runtime switched systems on from the definition. Combat, the HUD, weather, doors, climbing and pursuit stopped knowing which world they were in and started taking data.

Under the hood main.ts shrank to eight lines: resolve the URL, start the runtime. Every renderer counter came out identical in every world and tier, before and after.

Phase 4b gave everything you press E on one interaction registry, and props one placement format, checked object by object against the old build. Nothing moved.

A mine to prove it

Then the test of the idea: a new world that touched no existing system. The agents built a stub mine, linked from nowhere: a dark tunnel of castle stone on a 3 m grid, one goblin, a few crates, a glowing crystal and a ladder home.

The castle from the isometric camera: a small lit room of honey-coloured stone with a wall torch, the hero in the middle and the rest of the keep in darkness. The castle, built by hand two days earlier.

First person in the old mine: a narrow stone tunnel lit only by the hero's lamp, a wooden ladder on the right wall and darkness ahead. The old mine: the castle's pieces, arranged as data, lit by the hero's lamp.

Beyond its own three files it touched eight, mostly one-line list entries, and its three new needs (a lamp that follows the hero, walk-up portals, any world opened from the URL) became general features. The architecture notes end with an honest list of what a real mine would still need: rock instead of stone blocks, colliders that are not rectangles, more than one floor.

The same merge carried a decision of mine pulling the other way. The spec had said every world starts fresh; I overrode it for belongings, so gold, rucksack and equipment travel with you through a save and a ledger. Worlds became separate data; the hero became one thing moving between them.

Three worlds in one evening

The mine landed in the early evening. Heading to bed, I asked for three new worlds, each with its own feel, and told the agents not to cut corners on the textures. Each was built by its own agent in parallel, and by midnight all three had landed.

Whisperfen from the isometric camera at night: a grassy island in black water with dead willows, lily pads, a signpost, a lantern on a wooden dock and the hero's lamp glowing orange. Whisperfen at the landing: the hero's lamp and the first lantern.

Whisperfen is a marsh at night, boardwalks through fog under a low moon. Each of six lanterns you light pushes the fog back; wisps lead you to chests that rise from the mud, and when all six burn the drowned causeway lifts out of the water.

Frostpeak Hollow is a frozen temple under an aurora. Braziers thaw chests sealed in ice, and on the black-ice mere the hero slides and turns slowly.

First person in Frostpeak Hollow: green and violet aurora over snowy peaks, fluted columns and a lit doorway in temple ruins, and a chest frozen in a block of ice on the right. Frostpeak Hollow. The chest on the right waits for its brazier.

The Sunscorched Reach is a canyon tomb at golden hour: pressure plates pressed in the mural's order, then three bronze mirrors to carry a sunbeam to the vault. Its colossi were sculpted in code, not Meshy. Each world has its own tests: the causeway rises, the ice thaws, the mirrors have one solution.

The agent's summary was honest: "they have real atmosphere and working puzzles, but some views are sparse. The desert dunes are fairly empty, and Whisperfen is very dark in isometric view."

What went wrong: three agents, three of everything

Parallel building only worked because worlds were data: no agent edited another's world. But nothing stopped them reinventing the same tools. All three wrote a pool of lights lent to the nearest flames, a way to make things you press E on, and their own texture noise. The merge that night folded the Reach's mirrors and light pool into the shared hooks, and the notes gained a section that opens: "Use these rather than adding new ones."

Under the hood The three worlds downloaded 17.3 MB (Whisperfen), 28.7 MB (Frostpeak) and 23 MB (the Reach).

The scenery pieces (fog, still water, night sky, ice, fire, pressure plates) were the real prize.

The Brackenmere worlds launcher page: cards for Whisperfen, Frostpeak Hollow, Sunscorched Reach and The old mine under "New worlds", then the village, the inn, the forge, the apothecary, the hedge maze and the castle. The launcher page added at the end of the night. Nothing in the game links to it.

What I took from it

A stub you never ship can be the most useful world in the game. The mine was dark and pointless to play, and it proved that a new place costs a layout and a builder, not surgery on the core. Then three agents could build three worlds in an evening. What it did not stop was duplication: separate worlds still need a shared toolbox, or every agent makes its own.

Three new worlds arrived in a single evening: a foggy marsh at night, a frozen temple under the northern lights, and a desert tomb at sunset. What made that possible was a change underneath the game, and a gloomy little mine built just to prove it worked.

A first-person view across golden sand at sunset: an obelisk carved with symbols, palms, and the dark doorway of a tomb cut into a striped sandstone cliff. The Sunscorched Reach on the night it was built: the tomb of the sun kings.

Every world was a special case

By then Brackenmere had the village, the hedge maze, the castle and three rooms you could walk into. Each one had been added by hand, poking into the heart of the game to get there. But I never meant to hand-build every maze. One day I want the game to make its own, and it can't do that if every world is wired in by hand.

A world is a recipe

So my AI helpers changed how a world is made. Each world is now like a recipe card: what the fog, light and sky look like, where you start, where the doors lead, and what it needs, such as fighting or climbing. The rest of the game reads the card, instead of knowing about each world. Nothing you could see changed.

A mine to prove it

The real test was a new world that didn't touch anything else. The helpers built a small, dark mine that nothing linked to: a stone tunnel, one goblin, some crates, a glowing crystal and a ladder home. It was made entirely from pieces of the castle, arranged differently.

The castle from the isometric camera: a small lit room of honey-coloured stone with a wall torch, the hero in the middle and the rest of the keep in darkness. The castle, built by hand two days earlier.

First person in the old mine: a narrow stone tunnel lit only by the hero's lamp, a wooden ladder on the right wall and darkness ahead. The old mine: the castle's pieces, rearranged, lit by the hero's lamp.

I also made one decision of my own: your gold, backpack and equipment now travel with you from world to world.

Three worlds in one evening

Heading to bed, I asked for three new worlds, each with its own feel. Three helpers built one each, side by side, and by midnight all three were in.

Whisperfen from the isometric camera at night: a grassy island in black water with dead willows, lily pads, a signpost, a lantern on a wooden dock and the hero's lamp glowing orange. Whisperfen: the hero's lamp and the first lantern.

  • Whisperfen is a marsh at night. Each lantern you light pushes the fog back, and when all six burn, a sunken path rises out of the water.
  • Frostpeak Hollow is a frozen temple under the northern lights. Lit fires thaw chests sealed in ice, and on the black ice the hero slides.
  • The Sunscorched Reach is a desert tomb. You step on stones in the order shown on a wall painting, then turn three bronze mirrors to carry a sunbeam to the vault.

First person in Frostpeak Hollow: green and violet aurora over snowy peaks, fluted columns and a lit doorway in temple ruins, and a chest frozen in a block of ice on the right. Frostpeak Hollow. The chest on the right waits for its fire to be lit.

Three of everything

Because each world was its own recipe, the three helpers never got in each other's way. But nobody stopped them each inventing the same tools, so the game ended up with three ways of doing the same jobs. That night the duplicates were folded together.

What I learned

A world nobody will ever play can be the most useful one in the game. The mine was dark and pointless, and it proved a new place can be added without rebuilding the heart of the game. Then three worlds could be built in one evening. But separate worlds still need a shared toolbox, or every helper makes its own.

Building Brackenmere

G09 6 min read

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.

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.