Thirty percent a minute is a promise you can't keep
· 4 min read
Husktide is a survivors-style game: you walk, your weapons fire on their own, the swarm grows, and you pick an upgrade every time you level. A run is built around thirty minutes: at 30:00 the Harvester arrives. Reaching it with a finished build is the goal the game sets you.
The original design brief said, in one line, that enemy health should grow by 30% per minute, with no cap. It sounds like a reasonable difficulty curve. It is not one, and the arithmetic is worth doing once.
What 30% a minute actually means
Thirty percent a minute, compounded, is 1.3 multiplied by itself once per minute. After five minutes that is 3.7 times the starting health — steep, but fine. After thirty it is about 2,600 times.
A beetle that takes two hits at the start would take roughly five thousand at the end. No build can deliver that, so the second half of every run was not hard, it was mathematically impossible. The goal the game states — reach 30:00 — could never be met. A curve like that doesn't reward a good build; it simply decides the minute you die.
The curve now
Health still compounds at the full 30% for the first five minutes, because that is where the game should ramp fast and the player's build is growing just as fast. After minute five it grows linearly instead, adding 62% of the minute-five value every minute.
At 30:00 that works out to about 61 times the starting health instead of 2,600. Still a wall, and meant to be one — but a wall a finished build can climb.
Why one curve for every enemy is wrong
The second problem was subtler. With a single curve applied to everything, the small fodder enemies stop dying in one hit somewhere around minute eight, and that is the moment the genre stops feeling like itself. Mowing through a carpet of tiny things is half the pleasure. When the carpet starts taking three hits each, the screen fills up, the player stalls, and it feels like the weapons got worse.
So each enemy type now has its own exponent — a number that says how much of the global curve it feels. The fodder feels very little of it; the elites feel almost all of it. At 30:00, ignoring the smaller bonus that tracks your level:
- The Crawler, the smallest thing in the swarm, goes from 7 health to about 20. It still dies to almost anything.
- The Razor Wasp goes from 12 to about 68.
- The Soldier Beetle goes from 20 to about 260.
- The Weaver Spider goes from 52 to about 1,700.
- The Hive Brute goes from 130 to over 7,000.
The fodder stays fodder, the elites become walls, and the late game is about dealing with walls while the carpet keeps coming — which is what the late game of this genre should be.
Keeping the numbers honest
Every one of these values lives in one block at the top of the game file, not scattered through it. The run length, the enemy cap, the growth rate, the five-minute switch and the linear rate sit next to each other with a comment explaining why each has the value it has. When a curve is spread across a dozen places, somebody changes one of them and nobody can say what the game now does at minute twenty.
Balance changes are measured before they are argued about: the game loop can be stepped by hand from the console, which lets us run a clock forward and read what an enemy's health will be at any minute without playing to it.
The general point
A difficulty rule that fits in one sentence is attractive precisely because it fits in one sentence, and compounding growth is the easiest one to write. It is also the one most likely to break a game quietly, because the first five minutes — the part everybody tests — feel exactly right. Do the multiplication out to the end of the run before shipping it.
Play Husktide and see how far toward 30:00 your build gets.
Filed under gamedev, design, balance.
