GHAMRA STUDIOS

· v0.6.0

The boss who narrated its own fight

A turn-based battle: the player, Sera Ashford and Durn Cleft-jaw facing a Hollow Knight and an Ash Hound, each foe's next move named beside it, while Sera calls out that the hound is winding up something big.

The report came back from play: the people in a fight sounded like they were narrating it. A boss described its own battle in the register of a voice-over, when it should have been threatening the person swinging at it.

Nothing about that was the model misbehaving. We had asked for it.

We asked for a commentary

Every foe in a fight can talk, and a model writes what it says. Read back honestly, our prompt asked for a commentary on the fight, not for a person in it. So that is what came back: a calm, accurate summary of the battle, delivered by one of the people in it.

We rewrote our prompt so a foe speaks to someone rather than to the room. A foe now talks to you, to your face, and sounds like it means it. A companion sounds like a companion, not like the enemy on the other side of the line.

A dying boss that sounded resigned

Being hurt needed the same treatment. A foe that is losing and says so quietly is the narration problem in its most convincing costume: technically in character, completely flat. A badly wounded foe now sounds wounded.

Our first version of that fix contradicted itself about how hurt a boss was, and we only caught it by reading what we were actually sending. There is now a test that walks every stage of injury the fight can report, so a badly hurt foe can never be treated as untouched.

The end of the fight needed its own care. Once the last enemy falls, nobody is still trying to win, and a line that says otherwise is wrong in a way players notice instantly. What gets said after the fight is now written for after the fight.

That came to 15 new tests against the combat rules alone, no database, no world. The full suite stayed green at 5,703 of 5,703.

The same day: abilities that lied on screen

Later that evening we fixed the other way a fight’s words could be wrong. Abilities are generated, and an ability’s note is shown to the player word for word when it unlocks. In one live save, eight of fourteen read like a tabletop rulebook: “1d8 + Instinct damage”, “must succeed on a Will save”, “costs 10 mana”. None of those mechanics exist in this game, and the mana one contradicted the cost printed right beside it. That text is now checked on the way out and rewritten, or dropped where a rewrite would not be faithful.

The second lie was about who an ability hits. Every effect of an action lands on the same target, so “all enemies gain rally” is not something the game can do. The engine already quietly redirected a buff away from an enemy, but that rule had been copied by hand into five places and nothing else knew it. The tooltip read “all enemies · raise might by 4” while the caster got the buff. Seven actions in that save read that way.

The rule now lives once, and the effect code, the tooltip and the loader all ask it. The tooltip says “raise your might”. The loader repairs an old action as a save opens, so nothing needed migrating. And it covers the case nothing had handled: an action that only does harm, aimed at your own party, used to really hit your own party. It is now pointed at the enemy.

← All entries