For most of its early life Kindlefall had one hero, the Ember Knight, and everything about combat was tuned around him: a steady three-hit combo, a forward roll, the Emberbolt on a slow-charging resource of three flames. Then the overnight sprint added three more, and later that same night a fifth. This post is about how five characters share one game, and about the system that makes every run different: boons.
The five
| Hero | Weapon and verbs | Dodge | Spell |
|---|---|---|---|
| Ember Knight 100 HP | Sword and shield, a steady three-hit combo | Forward roll | Emberbolt |
| Barbarian 140 HP | Great axe; hold attack for a crushing overhead | Shoulder charge | War Cry |
| Rogue 80 HP | Twin daggers; stab them in the back | Shadow dash | Throwing knives |
| Pyromancer 80 HP | Three magic arrows, then a fireball; a Frost Wave on its own button | Ash step | Emberbolt; hold for a Meteor |
| Hollow 95 HP | Rusted greatsword; no flasks, souls heal it | Collapse into a bone pile | Bone shards |
Technically, a hero is one entry in a table. The Knight lives in player.js; the others are content modules that register into HEROES: a model, stats, a combo table (animation, timing, damage, arc, range, lunge, knockback per swing), a dodge style and a spell. When a hero needed something the core didn't have, the core grew a generic hook rather than a special case. The Hollow needed a spell of its own, a way to survive a killing blow, and no flasks, so the core gained hero.cast, hero.cheatDeath and hero.noFlask. The Pyromancer needed a cooldown ability on another button, so it got hero.ability. Each hook is a few lines in the core, and the hero module does the rest.
The Hollow
The fifth hero is the strangest and, we think, the best. An undead Ember-born skeleton, retinted warm with ember eyes and a coal glowing in its ribs. It has no flasks: every soul it picks up heals it. Its dodge collapses it into a pile of bones that slides along the floor and snaps back together. And once per floor, a killing blow doesn't kill it. An ember ring fills, it's invulnerable for a couple of seconds, and it reassembles at 40% health with a shockwave. The trophy for that is called "Not Yet".
The Pyromancer, three times
The Pyromancer is the hero who changed most because of playtesting, so she gets her own section in part 5. Short version: she started as a mage who swung her staff in melee, which the playtest called "kind of dumb", and became a ranged caster with arrows and fireballs. Then the playtest said she was "squishy", and she got a Frost Wave that shoves everything back and shatters projectiles. Then the Meteor became a real molten boulder, and the Frost Wave a frozen breaker that stands as a wall for about a second and a half. Then a relic, Heart of the Sun, that turns the charged Meteor into a channelled beam.
Boons: the heart of a run
Clear a fight and a shrine rises: three cards, pick one. That's the whole interface, and it's where every run becomes its own. The boon table started with 14 entries. Today it has more than 200, counting duos, relics, hero-only boons and the Wayshrine blessings that side rooms grant.
Schools and colours
Boons belong to schools, and the school sets the card's colour: Blade (sword), Ember (fire and the bolt), Grace (dodge and movement), Vigour (health and defence), and Pact, which is strong with a price. Glass Cannon. Blood Magic. Berserker's Oath: faster and harder, but your dodge recovers twice as slowly. The playtest loves Pacts, and the roadmap still says so: "More Pacts". The overnight sprint added a Storm school (Chain Lightning, Static Charge, Conductor...), and later an Arcane set for heroes who don't use a blade.
Duos and relics
A Duo only appears when you already own both halves; Scorchmark, Juggernaut, Ember Tide. Relics are legendary and only appear in the vault before each boss, two cards, take one: Spirit Ash summons a knight who fights beside you, Ancestor Mask, a Bomb Satchel, Witch Time.
Three decisions that shaped it
Two presses to take a card. Early on, the first press on a card was silently eaten by an input guard meant to stop accidental picks. The playtest found that having to confirm felt good. So it became deliberate: the first press lifts the card and makes it glow with "press again", the second takes it, and moving the stick or pressing B cancels.
Rarity you can't see. When boons got Common, Rare and Epic ranks (a boon's numbers roll by floor, better odds deeper), the cards showed the rarity. A few minutes later they didn't. The reasoning: players would always take the rarest card. Now the numbers on the card are the only tell, and you judge a boon by what it does.
Hand-made icons only. We tried a set of medallion icons from game-icons.net. They looked fine, and they needed attribution. The rule was no assets that require credit, so they came out, and every icon in the game is a hand-built SVG in one house style: crisp layered shapes, a dark outline, gradient shading, one highlight. The upside nobody expected: you can make as many as you need, and there are now well over a hundred.
Fit the kit
With five heroes, a shared pool breaks. A boon that makes "sword hits" burn is useless to a Pyromancer who fires arrows; a flask boon is dead weight for the Hollow, who has no flasks. So offers are filtered by what each hero's kit actually has (bolt, flask, roll, melee...), melee-less heroes get the Arcane set instead of Blade, and each hero has its own exclusive boons: the Knight's Shield Wall and Battle Standard, the Barbarian's Blood Rage, the Rogue's Ambush and Venom, the Pyromancer's Ember Motes and Inferno Wall, the Hollow's Glutton for Souls.
Balanced by a simulator
Nobody can hand-test 200+ boons across five heroes. The Boons team built a simulator instead: a few thousand simulated bot fights with random legal builds, then a look at what was over- or under-performing. Tempest Oath, Lightning Rod and Shield Bash came down; dead boons that never actually fired (Shield Wall, Backstab, Meteor Shower) got fixed so they do. The Rogue's backstab started at 2.2x, went to 1.75x when the sims showed the Rogue doing about 2.4 times the Knight's boss damage, and the Sprint #2 sims, which still had the Rogue at about 1.5 times the Knight's boss damage, took it to 1.5x. The sims also produced five builds to try, our favourite being the "Ember Choir Pyromancer": Ember Motes, Inferno Wall, Circling Embers, Wheel of Fire, Ember Wisp and Crown of Cinders. The notes call it "the best fireworks".