Brackenmere / dev log

Posts Building Brackenmere

Meshy from Nick's own pictures

For nine days every model in Brackenmere came from me clicking around Meshy's website. On 28 September I handed the agents the API with a credit cap, and by the evening 150 models were in, most of them built from one clean picture of one object.

G12 6 min read

How shall I tell it?

From the first day, every model in Brackenmere came the same way: I made it on Meshy's website and dropped the file into a chat. On day one I had asked: "does meshy have an mcp you can use? Or some way for you to use it?" For the next week the answer was me, and the agents kept a list of what they needed.

By 28 September that list was long. That morning I asked: "If I gave you access to meshy api / mcp could you do the meshy assets?" An hour later I opened a cloud session with the key in its secrets: "Can you create 3 models using the API and give them to me to review so we can see if we are creating the right type of scene / art direction etc."

First person in the inn: an iron chandelier, a fieldstone hearth with a stag's head, and the tables The inn on the evening of 28 September: chandelier, hearth and stag all came from pictures.

A script that refuses to overspend

I had typed the wrong cap and corrected it ("200 credits", then "not 100, sorry, typed wrong number"). Before any model, the agent wrote the thing I cared about most: a script that prices a batch of jobs and refuses to run it if the estimate goes over my cap or the balance.

The trial took three pieces from the list (the anvil, the cauldron and the inn fireplace), each made two ways: from the list's text prompt, and from a crop of one of my reference paintings.

Under the hood A textured model costs 30 credits, so the trial was six models for 180 of the 200. Every job writes its prompt, task id and cost beside its model.

What the trial showed

Neither route was good enough, but both failed usefully. The text prompts gave computer-made models; the trial notes call the anvil "orange, glossy, toy-like".

The painting crops looked right, but Meshy builds all it sees. The fireplace arrived as "a miniature room corner: its own floor, stool, stag, candles and baked fire". The cauldron brought its neighbours' plant pots. Worse, anything lit in the picture was baked into the texture, and the game draws its own flames.

I had wondered while it ran: "Im wondering whether I create flat png images of everything we need first that then you can use?" Once I saw the results: "ok so its noted that we produce the images first - is that right?" It was. Every piece starts from a clean picture of that one object, alone on white, evenly lit, nothing burning, and a text prompt is only a fallback.

The anvil

I made a picture of the anvil to that brief. The agent wanted the iron darker and the hanging tools gone; I kept the banded stump because I liked it. Meshy followed it closely, with nothing extra and no light baked in. "ok so weve confirmed if I produce the images, then you take them through the meshy api, that works best," I wrote, and sent a chandelier next: "use the anvil we've just created, its the best by far".

Nick's picture of the anvil on its banded stump, and the same anvil in the forge My picture of the anvil (left) and the model Meshy built from it, in the forge that morning.

Then I looked at the size. "is 1.04Mb game play size - seems very large for an anvil object?" The agent halved it with 512 pixel textures, and I pushed again: "0.52Mb still seems fairly large for a single item in a shop?" It offered two savings: ask Meshy for each item's own triangle budget, since more only adds download, and store every model's shape at lower precision. I took both: "I want everything to work in the cloud - can you start #1 here in the cloud so I can close my laptop?"

By mid-morning both were in the game.

The forge in first person before the Meshy pieces, with a drawn anvil and an arched hearth The forge that morning, before: the anvil and hearth drawn in code.

The same view of the forge after: the anvil on its banded stump and a stone hearth with a hood and chimney The same view that evening.

Then the floodgates

At lunchtime I emptied my downloads folder on them. "So I've got a folder of GLB items. There's a lot in there... That way we don't need to recreate all these through the Meshy API."

There was also a folder of twelve flat pictures I had made with OpenAI. I knew the drop was raw: "none of those are checked for file size or kind of pixel density or number of vertices, so they'll need to be down scaled." On spend I was specific: "I don't want you to run any of those images through Meshy more than once."

Twelve of Nick's flat pictures: three doors, a fireplace, a stag's head, a cauldron, bellows, a lantern, a well, a lamp post, a brazier and a bell post The twelve flat pictures, each run through Meshy once.

Then a practical worry: "Do you think we need the originals anywhere?... I think this is going to grow really quickly." The answer split by source. Bulk drops keep their originals on my Mac; anything made through the API goes into Git LFS, so cloud sessions can rebuild it.

Under the hood The first drop was 111 models: 58 use, 22 maybe, 31 skip, and 1.3 GB of originals came down to about 40 MB shipped. Exports too dense to simplify now go through a headless Blender rebake: the hay bale went from 16.9 MB to 0.23.

Taking me out of the loop

Making each picture was still my job, and the slowest part, so mid-afternoon I handed it over. "Let's create the image first in OpenAI. You can explain it to OpenAI: white background, isolated, no shadows, etc. Exactly what you want, and then take that image as reference from Meshy."

The agents built a concept route: OpenAI draws each object to the staging brief, and Meshy builds from the drawing.

OpenAI's pictures for the concept trial: a smith's forge, a chest without its lid, the lid, and a wayside shrine The concept route's first four pictures, drawn by OpenAI to the staging brief.

After a four-piece trial, the agents queued every static piece still missing and waited on my cap. My answer: "no price cap, lets go".

Under the hood Fifty-four more pieces, from farm animals to the graveyard's lych gate: about $2.59 of OpenAI pictures and 1,620 Meshy credits, each piece built once. Around 650 MB from Meshy shipped as 42.6 MB.

Quality over size

One thing I reversed that day was my own doing. Since my size worries that morning, room props had imported at 512 pixel textures. By the afternoon I had seen enough: "make judgements, I'd rather quality rather than cut to 512px as we've tried that and it visibly looks worse." Fifty-seven models were rebuilt from their originals at 1024.

The saving came from the other idea: the piece I had started in the cloud stored every static model's positions in 14 bits.

Under the hood 101 static models re-encoded; the High download at spawn across all worlds fell from 243.0 MB to 233.3 MB, with pixel-identical shots before and after. Rigged characters keep full precision.

By the evening

"push, merge to main", I wrote just before six. The branch brought 150 Meshy models. Forty-five replaced the drawn pieces they were made for, from the doors and the well to Whisperfen's statues; the rest went into the kit's catalogue.

The inn's hearth and chandelier before and after, side by side The inn from the same spot, morning (left) and evening (right).

What I took from it

Two things. A paid tool in an agent's hands needs its limit enforced by code, not a polite line in the brief. And the input matters more than the prompt: a clean picture of one object beat both words and my paintings.

Every object in Brackenmere, from an anvil to a chandelier, is a 3D model. For the first nine days I made each one myself, clicking around a website called Meshy that turns pictures into models, then handing the files over. On 28 September I let the AI helpers use Meshy directly. By that evening 150 new models were in the game.

First person in the inn: an iron chandelier, a fieldstone hearth with a stag's head, and the tables The inn on the evening of 28 September: the chandelier, fireplace and stag's head all started as pictures.

A spending limit first

Meshy costs money for every model. So before making anything, the helper built the thing I cared about most: a little gatekeeper that adds up the cost of a batch and refuses to run it if it goes over my limit.

What the first try showed

The first try made three objects two ways each: from a written description, and from a crop of one of my paintings. Neither was good enough. The written ones looked plasticky and toy-like. The painting ones looked right but brought along everything around them. The fireplace came with its own floor, stool and candles. Anything glowing in the painting was painted onto the model, even though the game draws its own flames.

So we found the rule that has stuck ever since: start every object from one clean picture of just that thing, alone on white, evenly lit, nothing burning.

The anvil

I made a picture of the anvil that way, and Meshy followed it closely, with nothing extra. "That works best," I wrote. I also asked for the files to be made smaller, so the game downloads faster.

Nick's picture of the anvil on its banded stump, and the same anvil in the forge My picture of the anvil (left) and the model made from it, in the forge.

The forge in first person before the Meshy pieces, with a drawn anvil and an arched hearth The forge that morning, before.

The same view of the forge after: the anvil on its banded stump and a stone hearth with a hood and chimney The same view that evening.

Then the floodgates

At lunchtime I handed over my downloads folder, full of models I had already made, plus twelve flat pictures I'd drawn with an AI image tool. The helpers sorted the lot into use, maybe and skip, and shrank everything down to a sensible size. The rule on spending: each picture goes through Meshy only once.

Twelve of Nick's flat pictures: three doors, a fireplace, a stag's head, a cauldron, bellows, a lantern, a well, a lamp post, a brazier and a bell post The twelve flat pictures, each turned into a model once.

Taking me out of the loop

Making each picture was still my job, and the slowest part. So that afternoon I handed that over too. Now the helpers ask an AI image tool to draw each object to the same plain brief (white background, on its own, no shadows), then send that drawing to Meshy.

OpenAI's pictures for the concept trial: a smith's forge, a chest without its lid, the lid, and a wayside shrine The first four pictures drawn this way.

After a small trial I took the brakes off: "no price cap, lets go". Fifty-four more objects followed, from farm animals to the graveyard gate.

Quality over size

Earlier that day I had worried about file sizes, so some models had been made blurrier to keep them small. By the afternoon I could see it looked worse, so I changed my mind: "I'd rather quality". Those models were rebuilt sharper, and the space was saved in ways you can't see instead.

By the evening

Just before six, it all went into the game. Forty-five of the new models replaced simpler versions of the same things, from doors and the well to the statues in the marsh. The rest are ready for later.

The inn's hearth and chandelier before and after, side by side The inn from the same spot, morning (left) and evening (right).

What I learned

When a helper can spend real money, the limit needs to be built in, not just asked for nicely. And a clean picture of one object beat both words and my paintings.

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

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.

Building Brackenmere

G19 7 min read

The village, laid out three times

In five days I laid Brackenmere's village out three times: stretched over my hand-drawn map at 40 metres a cell, pulled in tight when the walks felt endless, then traced properly at 28 metres. The lesson was that a stylised map is a set of relationships, not a blueprint.