Balancing a run
Once the battle loop and the four bosses were working, the game had all the moves but not really an arc. You could play a round. You could fight a boss. But a “run,” the thing where you chain levels together and feel progress, wasn’t there yet. Every level felt like every other level.
I’ve spent more time on balance than on any individual feature. That’s something I’ve read other solo devs complain about and always assumed was exaggeration. It’s not.
#I didn’t want a difficulty menu
At first, I didn’t want a difficulty setting. No Easy, Normal, Hard. Those always felt like the designer giving up and pushing the decision onto the player. I wanted one game, tuned so that a beginner who’s still finding the home row gets a reasonable early game, and a fast typist gets a real challenge later on, without either of them having to pick anything on a menu.
Typing speed is already a dial the player brings with them. A faster typist clears rounds quicker, reaches harder levels sooner, and gets tested at their own pace. A slower typist settles into the early rounds and has longer to learn. I thought that meant the game could stay on one carefully tuned curve.
Playtesting broke that. Typing is inherently skill-based in a way most games aren’t. A small gap in words per minute can completely change the feel of a round. What felt relaxed to me felt impossible to someone else, and what felt fair to a newer typist felt flat to someone fast. At that point a difficulty menu stopped feeling like a compromise.
#Three modes, three jobs
I ended up with three: Training, Normal, and Expert.
Training took the most thought. The obvious version of a beginner mode is just Normal with the numbers turned down: slower enemies, less damage, easier words. I built that version first. It doesn’t really work.
Making the game more forgiving doesn’t tell you anything about why you’re struggling. It just delays the part where the game punishes you. You can survive a run on reduced damage and come out the other side having learned nothing, because the game never pushed hard enough to show you where the gaps are. You feel like you played well. Your ring finger still can’t find the E key.
So Training watches you. Every round it identifies the weakest key you have and forces that letter into every word until you’ve got it. The word pool is restricted to only the letters you’ve unlocked so far. It strips out the enemy modifiers too, the ones that throw capitalized words or apostrophes at you, because those exist to test players who already have the basics. When you’re still building muscle memory they’re just noise. Training runs go longer than Normal ones as a result, because the difficulty is calibrated to keep you alive and drilling rather than kill you.
Expert is for people who think Normal is warming up. Enemies hit harder, attack faster, missed keys carry extra punishment, and the word pool shifts longer across the board. Your score doubles if you finish.
#Defense
Every enemy has an attack gauge that fills over time. Typing their word knocks it back. How much depends on their defense. A low-defense enemy is fully interrupted the moment you clear its word: gauge drops to zero, you’re safe for a bit. A mid-defense one loses about half and keeps winding up. A high-defense one barely moves; you type the word and the enemy is still coming.
Late in a run you might get all three at once. One you can clear and ignore for a few seconds. One that starts refilling almost immediately. One that’s going to hit you regardless and you’re just trying to time it. That’s what keeps rounds distinct even when the word lengths look similar on paper.
Long word, low defense and short word, high defense pull in opposite directions in a way I didn’t fully plan for but kept. Long word, low defense costs time to kill but stays down once you do. Short word, high defense clears fast but you’re back on it in seconds. Getting that mix right in a round is the actual late-game skill, and I didn’t have to add any new mechanics to get there.
Balance is never really done. Last week I cut one enemy’s word ceiling by a character because Expert was already adding one back. One number in a config file. That’s most of what this work actually looks like.