Skip to games
Hadukis

Writing

Flat armour, and the difficulty cliff it hides

· 4 min read

Briarlight Defense is a tower defense in a forest at night: five towers, each with three upgrade branches, thirty waves, and a Heart Tree at the end of the path. Two rules decide more about how it plays than any tower does. This post is about both, and about the day one of them turned a gentle nerf into a wall.

Rule one: armour is a subtraction

There are two common ways to write armour. As a percentage, it takes a share off every hit — 30% armour means every shot does 70%. As a flat subtraction, it takes a fixed number off every hit, and a hit never does less than one point.

Briarlight uses the flat kind. The Bramble Brute has 6 armour. The Firefly Hive, before any upgrades, fires fast little shots of 5 damage. Against the Brute every one of them does exactly 1. A tower that shreds wolves and spiders does almost nothing to the one enemy built to stop it.

That is deliberate. Percentage armour would make every tower 30% worse against the Brute, and nothing would change about which tower you build. Flat armour splits the towers into ones that hit hard enough to get through and ones that don't, and it makes one damage type special: poison damage over time ignores armour entirely. The Mushroom's spores aren't a way to deal with the Brute. They are the way, and a player who notices that has learned something about the game rather than about a number.

Rule two: a status plus a damage type does something

There are exactly five reactions, and each fits in one line:

  • Storm — a wet enemy hit by lightning: the charge jumps to three more.
  • Thornstrike — a rooted enemy hit physically takes half as much again.
  • Shatter — a frozen enemy hit by magic loses the ice and a chunk with it.
  • Toxic Bloom — a poisoned enemy hit by fire: the cloud goes up and damages everything nearby.
  • Dazzle — fireflies find a slowed target easily.

Five is enough to build a run around and few enough to discover by accident. You find them by watching a number get bigger and a word appear over an enemy, not by reading a guide.

The map is part of the combo

On the first map, the Whispering Woods, a stream crosses the path. Anything that wades through it comes out wet. So the strongest reaction in the game — wet plus lightning — is opened by a piece of the map, not by a tower: put a Firefly Hive on the Spark branch beside the ford, and its charge arcs across a whole bend.

The second map, the Moonwell Glade, has no water at all. The build that carried every early run stops working, and the player has to look at the tower list again. Taking something away turned out to be a cheaper and better second map than adding something new.

The cliff

Here is where flat armour bit back. The later maps reuse the same thirty waves and are meant to be harder than the first, and the obvious way to make them harder was to weaken every tower a little.

It was measured before it shipped. Twelve runs with twelve different random seeds, the same sensible strategy each time:

  • With every tower at 95% damage, all twelve runs finished all thirty waves.
  • At 92%, eight of the twelve died on wave six.

Wave six is where the first armoured enemy arrives. With flat armour, taking a tenth off every tower's damage can take a shot from two points over a Brute's armour to nothing over it — a tower that barely worked against it now does 1 per hit. Three percent of damage was the difference between a fair map and a map most players couldn't pass.

Stranger still, harder settings than that came out easier again: more enemies meant more essence to spend, and the extra tower carried the Brute. A difficulty knob that behaves like that cannot be tuned, only tripped over.

So the harder maps use three knobs that respond smoothly instead: more enemies per wave, more health on everything (which makes enemies slower to kill without touching the armour arithmetic), and less essence, which means fewer towers for the whole run. Even those arrive gradually over the first eight waves, so every map opens at the pace the game was tuned at and the wall at wave six stays where it is. The numbers in the game are the sixth set tried, and each set was chosen by a script that plays full runs on every map with several seeds and prints how far a sensible player got. Nobody argues about a number that can be measured.

The general point

A rule like flat armour is valuable because it creates hard edges: this tower works against this enemy, that one doesn't. The same hard edges mean small changes near them are not small. When a game has a rule like that, test balance changes by running the game, not by reasoning about averages.

Play Briarlight Defense — and try the Spark branch beside the ford.

Filed under gamedev, design, balance.