Distilling Skills -- DQ2 Progress Report for December 2021

Instead of stringing out skill point bonuses, it's way more fun if we concentrate the benefits.

Distilling Skills -- DQ2 Progress Report for December 2021

Howdy Defender's Quest fans! Hope you had a good holiday season. December is always a tough month to get stuff done, but I'm pleased to report we do actually have some interesting updates for this month!

The new build is up on steam for our early backers, version 0.0.27. Linux build is still put off until next month, but the good news is I got a new SSD for Christmas that I'll be putting to good use to install a fresh Linux distribution on.

Testers and DQ2 staff like Anthony and James have all pointed out that the skill points system could use a bit more "oomph." What we really want is for every choice to feel really meaningful and immediately apparent on the battlefield. It's just not super exciting to get +2% to whatever.

It'd also be nicer if everything was easier to understand with an immediately clear value proposition.

The issue right now is that every skill bonus can have up to six points invested in it, with the last one counting triple. This means the marginal benefit of investing a single skill point is typically 1/8th of the maximum benefit of whatever the bonus is. Most bonuses are pegged at making the parent skill 50% better in some way when maxed out, so one skill point gives you +6.25% more utility, on average. Whee.

Anthony and others have suggested I give out fewer skill points, and make each investment count for a lot more. So why not go from six skill points to three? Sid Meier once said: "double it or cut it in half," emphasizing that you'll find the right balance point faster by making big changes than small incremental steps. In the end I did Sid one better: I cut it down to a third. Now it only takes two points to max out a skill bonus.

This actually works really well in practice and solves a whole ton of issues with the skill bonus system. For one, the previous situation where each incremental upgrade is divided into 1/8th chunks made it really hard to implement certain kinds of bonuses. Sure, you can slice "more damage" as thinly as you want, but more quantized bonuses like "add an extra shot to this projectile attack" didn't work as well. I'd fix this by making those skills require two points to invest in whereas others only took one. But the problems didn't end there. With certain status effects (such as bleed), the main benefit is realized by just having them available at all, which incentivizes the player to put exactly one point into it and then ignore it forever. Bottom line, the fine slicing made it really tricky to balance diverse kinds of bonuses.

But the worst problem of all was situations where 1/8th of a bonus was worthless, but 8/8ths of a bonus was overpowered. Players would get one point of the skill bonus to try it out, not notice much difference, and conclude it wasn't worth using. You could fix this by increasing the marginal gain per point, but then you blow out the other end of the scale. And sure, you can fix that by making the marginal gain nonlinear and with diminishing returns... but now you're piling hacks on top of hacks, and you have to maintain all these really annoying and complicated spreadsheets. Also you have to communicate all the underlying stats to the player in a way that helps them make the right decision.

Turns out, it's simpler and more fun to just divide every skill bonus in two: half power and full power. Not only does this make it so a single skill point gives you an immediate and obvious advantage on the battlefield, as soon as you've invested one point, you're suddenly only one more point away from maxing out the skill! In the old model where it takes six points to max out you feel like it will be this enormous long slog you never get around to. At every turn, I find myself saying, "why not front-load more fun stuff? Why hold back?"

Another advantage is that it makes balance a lot easier. Instead of tracking and balancing six steps per bonus per skill per character, I'm balancing two.

It helps with character identity as well – you'll recall a while back we evolved the "Eliminator" into the "Assassin," putting poison and negative status effects at the heart of their identity. With only two points to invest in poison, it's much easier to make sure that the poison is strong enough out of the gate to make the character's purpose and identity clear – put them at the front of the map so the poison can have time to do a substantial amount of damage.

Before, I was having to balance that initial dose of poison against not blowing out the maxed-out level of poison. Now I can much more easily balance the two most important states – the first point you invest, and the last. Simple.

This works especially great on bonuses that used to cost two points because they weren't easily divisible – things like adding strikethrough, or extra bolts of chain lightning:

Instead of having to wait to save up two points just to get a chance at striking an extra target, now a single point gives you up to two extra targets. This is an entirely different value proposition. You see, typically you're either shooting at a single target, or a group. Piercing a single target isn't super valuable as you'll likely hit nothing else after. But if you're hitting a group, with enough pierce you could hit a lot of extra targets. So giving you a +2 pierce for one point is suddenly pretty tempting, whereas a mere +1 for a cost of two whole points feels like a bad deal.

Likewise, juicing up the collector so that a single point gives you not one but two extra units to deploy feels especially good. In no time you can fill the air with little flying balls of death!

Another thing I've gotten from testers is that although it's nice to see the DPS readouts and whatnot, a lot of people just want a high-level summary that's instantly digestible. Look at this first row of bonuses for the White Hats' "Zerk" character, for instance. The whole point of this column is you can invest in a bit more damage in all situations, or more damage in certain situations:

So why not just say that right at the top?

Before you had to glance down to the damage and DPS calculations and flip back and forth to understand that you got twice as much damage output from the situational bonuses as you did from the general one. Now we just tell you as simply as possible.

I've found the new headline summary draws your attention more, so that the DPS/damage/wait readout becomes more of a secondary "details for nerds" kind of view, which feels like an appropriate balance.

Another thing the new "two bits" system enables is way clearer implementation of status effects. Before I had to juggle multiple variables (potency, duration, chance of being inflicted) to get eight individual steps to balance appropriately, now I can just set how strong I want it to be at full power and cut it in half.

But cut what in half? What I've settled on for most status effects is a 50% chance of infliction at half power, and 100% chance at full power. In practice this means every other enemy gets the dose after you put your first point in. This has the most visually obvious difference on the battlefield – at zero points none of the guys are on fire, at one point half the guys are on fire, and at two points they're all on fire. Fun!

Given this is a tower defense game, a lot of the statistical effects come out as a wash at scale – doing half as much damage, but twice as often or to twice the targets, gives you about the same amount of little white numbers at the end of the day. Yes, there's strategic wrinkles depending on which levers you pull, but as a baseline I feel its best to pick a difference that is immediately obvious rather than one that is "just as effective" but isn't as immediately clear to the player that "something new is happening."

Finally, I'm unwinding one of my last remaining attempts to be clever – shared weapon classes between defenders. This was an early design decision that has become increasingly obsolete and constraining as the characters settle into specific identities. The final nail in the coffin was the Zerk needing a larger range, which suggests some kind of a bladed polearm rather than a sword. Giving each of the main 8 characters their own weapon makes it a lot easier to design and balance the item drops, and make the choices clearer to the player. In the current build the Assassin and Jumper still use the same weapon class, but I'll split those apart in the next build too since they've now diverged considerably.

As big a change as all this was, I was surprised to find that it didn't massively upend the level balance. There's still some things to be figured out, like fine-tuning exactly when skill points drop. It used to be one per level, but now it's every other level starting at level 3. However, given that it only takes two points to max out a skill, you can now max skills out much faster. I'll need to adjust the endgame balance to make sure things work out long-term, but that's next month's problem and also not too scary. And honestly I feel like the old skill point schedule was too stingy and was stringing the player along for too long.

Hopefully these changes help make skill choices more interesting, with more immediate feedback in battle, and all around just more fun!