Brackenmere / dev log

Posts Building Brackenmere

First person and sword combat

One morning I asked whether we could look through the hero's eyes in the maze. By the next morning first person ran through the whole game, with a sword you can see swing, a gloved fist made from my own reference picture and aim assist that looks up at tall monsters.

G03 6 min read

How shall I tell it?

"Through the eyes of the person"

By the Tuesday morning the hedge maze had a lantern of light around the hero and hedges that hid whatever was round the corner. Looking down at it from the corner, I wondered what it felt like inside. "Is it possible to look through the eyes of the person when doing a maze? I think everything is 3D in there? Can we do a very small prototype (new worktree) to see."

Everything was 3D, so a second camera at head height was cheap to try. The agent built it in a throwaway worktree, with main untouched, and handed it to me to play.

My first note was about the controls, not the view: "I think if you hit the left or right arrow keys, you should turn the eye, not side-step." Then I was sold, and immediately worried about cost. "Okay, let's put this as an option of camera view now throughout the game... Obviously does this work performance-wise? I'm just wondering, when we're in the isometric view, we've obviously simplified and only seen certain elements of models... Is there going to be any performance issues here if we do this?"

The isometric village square with the HUD, and a new Camera View card at the lower right offering Isometric and First person buttons. The selector mockup I approved that morning: a Camera View card, isometric still the default.

Nothing had been simplified for isometric: the same models served both cameras. I replied "approve this design mockup", and the choice went into the town and the maze, remembered between visits.

Under the hood At the village spawn, isometric drew 150 draw calls; first person drew 62 to 126 depending on where you looked. In the maze, eye level could see more hedge than the view from above: up to 8.2 million triangles against 4.8 million.

Measuring frame time was messier. The agent kept losing the mouse during its test and asked whether I was using the computer. I was. "Yes, finish with performance marked partial." Both views held about 60 frames a second at the spawn; everything else was recorded as not verified rather than guessed.

What eye level gave away

A second camera turned out to be an audit of every assumption made for the view from above. By late morning I had a list.

The maze sign was a floating label, which is fine from above and nonsense at eye level: "It's always in my screen if I'm looking at it, even if there's a building in the way. That should be part of the world, I guess." It became a real wooden sign at the gate, hidden by buildings like anything else.

The villagers had never needed to face you. "If I walk up to someone, can they turn towards you and stop walking if there's an option to talk to them?... right now they could have the back to you." Now they do.

Then the big one: "Let's work on first person view now. When I swing the sword I don't really see the sword being swung. Can we make this a lot more realistic and make battles in FP view more engaging / more visually correct."

First-person view in the village square facing Gorak the orc, with Spiger crouched to the left. No hand or sword is visible anywhere on screen. First person before the sword pass: you could fight Gorak, but you could not see what you were fighting with.

First person hid the whole hero so the camera would not sit inside his head, and the sword was in his hand. The fix was a separate little scene drawn over the world: a glove, a bracer and the sword, posed for each attack so the blade arrives as the hit lands. Damage stayed exactly where it was; only the picture changed.

Testing it in a real browser found one more isometric assumption: attacks ignored where you were looking up or down, so you could hit an orc while staring at the sky. Now they check the real direction of your eyes.

Under the hood The camera choice touched 29 files and about 1,450 lines. The test suite went from 120 to 140 that day, and every change came with runtime checks marked PASS or FAIL, including one that caught the sky-swing.

That afternoon I sent two Meshy swords: "can we use one of them for the hero rather than what we've got currently? And can we make sure we store the other one somewhere in our folder structure for use later on?" One went into the hero's hand; the other was optimised and set aside for later.

First-person mid-swing: a pale broad sword with a brass guard sweeps across the view toward Gorak, held in a plain brown block of a hand. Mid-swing with my Meshy sword. You could finally see it, but the hand was a brown block.

"The hand is all wrong"

That evening I wrote my overnight punch list (most of it was about the castle). Two items were first person: "The hand is all wrong. Do you need a meshy.ai or something similar or can we just do better here based on what I have for the character already?" And: "When I walk or run, in first person view, the hand wobbles really quickly up and down and looks all wrong."

The agent replaced the wobble with a footstep rhythm, slower for walking and quicker for a sprint.

I was not really away from the keyboard. Notes kept arriving while it worked. "Can we make the sword a bit 'grittier' and slightly darker?" Then: "I will keep on giving you things as I think of them. Don't prioritise them though, just add them to the queue and work on them when it feels sensible." The next one fixed something I had noticed in every fight: "When I attack monsters, in first person view, can we auto look at the monster. For instance when the goblin attacks I naturally am looking over its head."

For the hand, the agent tried the cheap route first: the hero's own rigged arm, cut down to a forearm and glove. His model had no finger bones, so the fingers could not curl round the grip. I saw an early version and said "Looks weird, keep on going." Two minutes later I sent a picture of the gloved fist I wanted: "Could you take this? I don't mind if we use a slightly different model." The agent turned that picture into a model with Meshy, and the arm experiment was dropped.

Under the hood The fist cost about 33 Meshy credits: a background clean-up, then image to 3D. It came back at 20,000 triangles in a 1.2 MB file, with the old procedural glove kept as the fallback if it fails to load.

The same first-person framing facing Gorak, now with a dark, scratched sword held in a stitched brown leather glove at the lower right. By the end of the night: the gloved fist from my picture and a darker, grittier sword.

Aim assist went in the same night, easing the view onto the monster you are fighting. The next morning I found its limit: "Also on larger monsters / characters, it needs to look up a little." Minutes later it aimed at the head and chest of tall monsters instead of their belts.

First person in the dark hedge maze: tall leafy hedges on both sides, a cobbled path ahead, darkness above, and the gloved hand holding the sword at the lower right. The maze from inside, which is where the question started.

What I took from it

  • Prototype a hunch in a throwaway worktree. Main never saw it until I said yes.
  • A second camera audits the first. Labels, facing, aim and hidden hands were all invisible from above.
  • Presentation is not authority. The sword you see is drawn separately; the combat underneath did not change.
  • When the agent is stuck, give it a picture. One reference beat an evening of rig tweaks.
  • "Partial" is a fine result. Writing down what was not measured beats pretending.

You can now play Brackenmere through the hero's own eyes. Until then you always looked down on the world from above, at an angle. Now there is a choice: the view from above, or first person, as if you are standing in the hero's boots. And when you fight, you can see your sword swing.

Inside the maze

It started with one question. Looking down at the hedge maze, I wondered what it would feel like to be inside it. Could we look through the hero's eyes? The AI helpers built a quick trial version on the side, without touching the real game, and let me play it.

My first note was about the keys: pressing left or right should turn your head, not step sideways. After that I was sold. The choice now lives in a little Camera View card, and the game remembers which one you like.

The isometric village square with the HUD, and a new Camera View card at the lower right offering Isometric and First person buttons. The new Camera View card: pick the view from above or first person.

First person in the dark hedge maze: tall leafy hedges on both sides, a cobbled path ahead, darkness above, and the gloved hand holding the sword at the lower right. The maze from inside, which is where the whole idea started.

What looking from inside showed up

Seeing the world at eye level showed up lots of little things that were fine from above but odd up close:

  • The maze sign was a label floating in the air, visible even through buildings. Now it is a real wooden sign at the gate.
  • Villagers had never needed to look at you. Now they stop and turn towards you when you walk up to talk.
  • You could hit an orc while staring at the sky. Now your swing goes where you are actually looking.

Seeing your sword

The big one was fighting. In first person you could not see what you were fighting with at all.

First-person view in the village square facing Gorak the orc, with Spiger crouched to the left. No hand or sword is visible anywhere on screen. Before: you could fight Gorak, but there was no sword or hand on screen.

Now a gloved hand and the sword are drawn in front of you, swinging so the blade arrives just as the hit lands. How hard you hit did not change, only what you see. I sent in a sword design I liked, and that is what the hero carries.

First-person mid-swing: a pale broad sword with a brass guard sweeps across the view toward Gorak, held in a plain brown block of a hand. The sword finally visible, but held in a hand that looked like a brown block.

The hand was all wrong, and it wobbled up and down far too fast when you walked. The wobble now follows your footsteps, slower when you walk and quicker when you run. For the hand, the helpers tried reusing the hero's own arm, but it had no fingers that could curl round the grip. So I sent a picture of the gloved fist I wanted, and they made it from that. I also asked for a darker, more battered sword.

The same first-person framing facing Gorak, now with a dark, scratched sword held in a stitched brown leather glove at the lower right. By the end of the night: a leather glove from my picture and a darker, grittier sword.

Looking at the monster

In every fight I found myself looking over the goblin's head. Now the view gently turns to face the monster you are fighting. The next morning I noticed it aimed at the belts of big monsters, so now it looks up at their head and chest instead.

What I took from it

Trying an idea on the side first meant nothing was at risk until I said yes. Seeing the world from a new angle showed up problems nobody had noticed from above. And when the helpers were stuck, one picture did more than an evening of fiddling.

Building Brackenmere

G21 5 min read

Sword moves you press on purpose

On 6 October I asked for "slicker moves" and reversed one of the game's own rules: hold Space, press a fresh direction, and the hero throws a named sword move or a two-direction finisher, while a tap still just swings. The same day Space became one button for everything, and the next day the monsters stopped standing still.

Building Brackenmere

G01 6 min read

Day one: a canvas greybox called Brackenmere

Brackenmere started on a Saturday afternoon as a 90-line canvas sketch with one gardener and an old gate. By midnight it was a Three.js village with a sword, a rigged hero, three monsters, people you could talk to and a house with real roof tiles.

Building Brackenmere

G36 6 min read

Goblin raids, kept forgiving

My son voted for goblins running into the village, so the game's one safe place got a fight. The first raid worked in the tests and meant nothing to a player; it took my own walk on the green, a few dictated paragraphs and a day of fixes to make it a raid you notice, can win and can never really lose.