Overview
Patchwerk Prototype Project Page
Once again design work is harder than I thought it was going to be. Before this point, abilities had arbitrary placeholder values just so I could confirm their implementation was correct. Values like cooldown duration, damage/healing dealt, and mana costs will be hugely impactful. However, there are far too many values for me to be able to just guess and keep the heroes reasonable in terms of difficulty and balance. Therefore, I needed to design an algorithm that gave me the ability to generate all these values from a relatively small amount of input knobs. This post focuses on calculating ability cooldowns and calculating the damage of abilities. Healing and mana costs are much more complicated and I’m still finishing them up.
Cooldowns
Ability cooldowns are important because they define how difficult it is to pilot a hero. A hero who needs to cast a spell every 2 seconds to maximize their damage is much harder to pilot than a hero who can output similar damage by casting a single powerful spell every minute. Therefore, I needed a way to define a measurement of how difficult a hero is to play with respect to how frequently they can cast their spells. For this, I used Actions per Minute, or APM.
To illustrate APM, imagine a hero with two spells. One has a thirty second cooldown and the other has a ten second cooldown. You can cast the first spell twice in a minute and the second spell six times in a minute. Therefore, to cast your spells as much as possible, you will need to take eight actions per minute.
It’s not perfect, but by calculating cooldowns based on APM, all the heroes will at least be in the same ballpark in terms of difficulty. The other knob that serves as an input in this calculation is a per-spell APM weight. This allows me to define what share of the hero’s APM “budget” a particular spell should use. Though it might seem counter-intuitive, the higher the APM weight, the lower the cooldown should be, as a shorter cooldown allows a spell to be cast more times in a minute.
Below is a chart that goes through the cooldown calculation for the Beast Mastery Hunter. Suppose we want it to take 36 APM to pilot Rexxar.
Damage
So now that ability cooldowns have been calculated, the next thing to do is calculate the amount of damage abilities deal. I basically just applied the same process as with cooldowns. Whereas cooldowns used Actions Per Minute as an input, damage uses Damage Per Second, or DPS. By defining a DPS budget for each hero, I can similarly define a set of weights to determine what share of the hero’s DPS budget each spell should use.
There are two spells that were left out of the cooldown calculation: Auto Attack and Summon Misha. Both of these abilities require basically no player intervention to deal their damage, the damage happens pretty much automatically. But this damage still needs to be considered as a part of the hero’s DPS budget. I don’t bother to calculate damage for these abilities, instead I leave the answer in terms of DPS so I use it to figure out damage later after playing around with a few different auto attack speeds for Rexxar and Misha.
So the chart below goes through the damage calculation for Rexxar; supposing we want heroes to deal 140 total DPS (for easy math).
Coming Next
Cooldowns and damage were relatively easy to do once I thought about the problem. Healing and mana have gone through multiple revisions now and turned out to be much harder to figure out. They’ll be coming up next.