This Cyber Monday Tuts+ courses will be reduced to just $3 (usually $15). Don't miss out.
Last time, we examined RPG balance from a mile-high perspective. In this segment we dig a bit deeper, by first determining the base stats of our protagonist and using the results to calculate meaningful derived stats, applicable in combat. We'll then take an in-depth look at how to balance one party member with another, even if they favor completely different types of combat. By the time the smoke clears, we'll have achieved basic party balance within our soon to be best-selling game, Final Trigger.
Party members in traditional turn-based RPGs typically didn't have rigidly defined class roles. As such, all of their stats were at least partially relevant. Simultaneously jacks-of-all-trades and masters-of-one, party members usually excelled in one area of combat, be it fighting, casting or healing. With that in mind, we'll model Final Trigger's protagonist to benefit his party most when slashing away with a sword.
In our model we choose the following base statistics:
- Magic Defense
For simplicity, we'll also assume our character is level 20, and that our allies are the same.
Since our hero most closely resembles a warrior, his stats should reflect those of someone physically imposing, capable of withstanding a few hits, not too fast, and somewhat weak against magic. All numbers considered equal, a fairly accurate starting point for our protagonist - let's call him Chroud (see what I did there?) - would be:
- Strength: 50
- Speed: 25
- Stamina: 40
- Spirit: 20
- Defense: 40
- Magic Defense: 15
We call these numbers Chroud's base statistics because they are used to derive stats that will determine our effectiveness in combat.
Derived calculations generally take place behind the scenes. We determine them by manipulating our base stats in meaningful ways. The results are then used to determine our overall effectiveness in battle. In Final Trigger, the derived stats are:
- Attack Power
- Seconds Per Turn, or ATB Speed
- Dodge %
- Hit Points
- Magical Power
- Physical Damage Negated (%)
- Magical Damage Negated (%)
Obviously, you could go a lot further with this, but for illustrative purposes, this is more than enough. Feel free to experiment.
Now we have to equate each of our base stats with a derived stat. This should be a fairly intuitive process. For instance, it would make sense for Strength to be correlated with Attack Power, so let's start there.
Determining Attack Power
First, determine what kind of numbers you would like to see on the screen. If you're a fan of old-school RPGs, then you probably favor dealing massive amounts of damage. Others might prefer smaller, more precise increments. Whatever the case, our system is designed with flexibility in mind, and caters to any preference. In Final Trigger we'll walk the middle line.
For simplicity, we'll merely multiply Strength by a constant of 10 to determine Attack Power.
Attack Power = Strength * (constant)
That gives us an Attack Power of 500. But it would be pretty boring to hit enemies for the same exact amount every round. Therefore, we're going to introduce some randomness to shake things up:
Attack Power = (Strength * (constant)) +/- 10%
Now, Chroud's Attack Power will be somewhere between 450 and 550. Of course, depending on how much randomness you want to introduce into your system, you can always use a higher or lower percentage. (But do keep in mind that it's harder to balance a highly randomized combat system.)
Determining Seconds Per Turn and Dodge %
These two are a bit trickier. We know that they're based on Speed, but we can't exactly multiply Speed by a constant to determine Seconds Per Turn and Dodge Rate. Trust me, the results would be disastrous.
What we do know is that our base ATB Speed and Dodge Rate shouldn't vary too much from the beginning to the game to the end. Of course we want them to improve slightly, but not so much that they're exploitable at higher levels. Since we ruled out manipulating Speed directly, it would make sense to first derive a simple Speed Coefficient:
Speed Coefficient = Speed / Level
Our character's Speed Coefficient is his Speed (25) divided by his Level (20), or 1.25. In order to keep our new coefficient in balance with our objectives, we should run a simulation that determines its value at different levels and at various base speeds.
Something like this:
From our model we can deduce that by increasing Chroud's Base Speed by about 2 points per level, our Speed Coefficient will go up ever so slightly as we level, which is what we want. The model itself is overly simplistic and a bit flawed, but it's close enough to give us a foundation in which to work off.
We now feel comfortable calculating Chroud's Seconds Per Turn (SPT). Note that since our Speed Coefficient goes up as we level, and we want our SPT to go down, we should divide a constant over our coefficient. This will be the easiest way to achieve optimal results.
Seconds Per Turn = (constant) / Speed Coefficient
I've chosen 15 for my constant, but you can choose any number you like. Note that higher constants will result in more time between turns, and are better suited for casual RPGs. Final Trigger is relatively fast-paced, and the 12 seconds needed at level 20 for our ATB bar to fill up suits us just fine. At level 50, this time will be reduced to slightly under 9 seconds.
Dodge % is even easier to figure out - just multiply the Speed Coefficient by a constant. Your only limitation would be to pick a reasonable constant, since accidentally choosing a large one would result in a Dodge Rate over 100 percent. Not good.
Dodge (%) = Speed Coefficient * Constant
We can use similar equations to figure out the rest of Chroud's derived stats. For instance, Stamina could be converted to Hit Points merely by applying a multiplicative constant. As you can plainly see, it doesn't require a Masters in Mathematics to come up with a stat system that works.
With that said, our statistics do not take into account the effects of gear, buffs, weapon procs and miscellaneous items that provide special effects. These are things you will ultimately have to consider. What it does do is offer a strong foundation from which you can determine your character's relative power and defense at any point in his or her progression.
Balancing One Party Member Against Another
One of the fundamental mistakes RPG developers make when balancing their games is to forgo internal party balance. Does anyone remember using Relm from Final Fantasy VI? I certainly didn't. Why even create a character if it's never going to be used? As RPG developers it is our obligation to make each one of our beloved characters viable in combat. And a good way to do this is to measure each secondary character against our protagonist. Based on our calculations from the previous section, Chroud's stats at level 20 are as follows:
Our second character - we'll call her Jane for lack of ingenuity - is a scepter-wielding Mage. Jane's hobbies include long walks on the beach, playing video games and burning her enemies alive. Since we are not biased developers, let's give Jane the same amount of base points as Chroud, but distribute them so that they make sense for a caster:
Since both of our characters are offensively minded, their DPS will have to be balanced so that they do relatively the same amount of damage. If we assume that Chroud will always attack with a Sword and Jane with an offensive spell, then our calculations are easy:
Chroud's DPS = Attack Power / ATB Speed
Jane's DPS = Magical Power / ATB Speed
Based on our calculations, Jane's DPS is 50 to Chroud's roughly 42. That's a bit uneven, but pretty much in balance. But there's a problem: whereas Chroud can theoretically attack with his Sword forever, Jane will eventually run out of MP if she casts too many spells. To make matters even more complicated, some of Jane's spells are going to be stronger than others. Thus, we cannot calculate her DPS using Magical Power alone. Instead, let's delve a bit deeper.
In most RPGs, caster types would be presented with a virtual avalanche of spells, especially by the time they reached the endgame. While many of these spells were granted automatically as a character leveled, games like Final Fantasy VI allowed each character to learn as many spells as they desired - all that was required was patience. However, those with an affinity for casting always did more damage with their offensive spells, and better healing with their supportive ones. This was by design.
Final Trigger will therefore not use Magical Power as a firm indicator of DPS, but as a variable. With it, we can determine the power of each individual spell. In the spirit of limiting the amount of work we have to do, we'll only give poor Jane three spells. One will be a single-target, cheap-to-cast, low-damage Fireball. The second will be a higher cost, more powerful version of the same spell. In the spirit of old-school RPGs, we'll call it Fire 2. And lastly, we'll give Jane an AoE spell called, oh I don't know... Meteor.
Assuming a Magical Power of 500, the Power and DPS of each spell will function as follows:
Now, the first question you might be asking yourself is why Fire 2 costs three times as much to cast as Fireball, yet only does double the damage. It's a valid concern. The short answer is that while Fireball is more Mana efficient, Fire 2 is more battle efficient. Liken it to the difference between a boxer's jab and uppercut. Jabs do less damage but require less exertion, while uppercuts are certainly more exhausting, but can potentially be used to knock out an opponent with one devastating punch.
In other words, if Fire 2 cost 4 MP to cast, there would never be a need to cast Fireball. In Final Trigger, the objective is to encourage intelligent resource management. However, if you would prefer to render Fireball obsolete once you learn Fire 2, you can certainly do so.
Getting back to our example, Meteor is clearly only for use against large groups of enemies. Against a single target, it does only approximately the same damage as Fireball at a significantly higher cost.
Calculating the DPS of each individual spell is one thing, but determining Jane's average DPS is an entirely different animal. In order to do so, we would need to know how much MP she has, how many Mana restoring resources she is carrying and whether MP is restored after every battle or only by visiting the Inn. Because Jane is capable of AoE, we'd also like to know the average amount of enemies the party is fighting at one time, and how many turns, on average, it takes to defeat said enemies. Since we haven't determined that yet, we'll content ourselves with approximating Jane's average DPS for now, and worry about the more extraneous conditions later.
Do this by first figuring out each spell's Damage Per Mana (DPM) Point. In order to calculate DPM for Meteor, we'll assume that Jane is only casting it when there are between three and five enemies on the battlefield, for an average of four. The results are as follows:
Assuming each spell will be cast with equal frequency, we determine that Jane will spend an average of 6.67 MP per round with each point dealing approximately 15 damage. Multiplying the two numbers it can then be deduced that Jane does a whopping 100 DPS, which is a great deal more than Chroud.
However, Jane's Mana pool is limited, and there is no way she will be able to maintain this DPS without either consuming resources, or via another means of Mana replenishment. If Jane runs out of Mana, her DPS drops by 80 percent, all the way to 20. Her reliance on MP ultimately brings her overall DPS down, but does it go down enough to be in balance with Chroud's?
We know that Chroud's base DPS is 50, and that Jane's is approximately 100 when she has MP and 20 when she does not. Thus in order to figure out the perfect ratio of magical to physical attacks for Jane's DPS to equal her counterpart's, we use the following system of equations:
50 &= 100x + 20y\\
x + y &= 1
If you're not at all familiar with algebra, that's okay. The best way to approach this equation is to first solve for \(x\) on the bottom equation:
\[x = 1 - y\]
Now take that result, and plug it into the top equation:
\[50 = 100(1-y) + 20y\]
Solve for y:
50 &= 100 - 100y + 20y\\
-50 &= -80y\\
y &= 5/8
And plug that value into the bottom equation to solve for x:
x + (5/8) &= 1\\
x &= 3/8
From this we can conclude that Jane would have to be out of Mana over 62 percent (5/8ths) of the time for her DPS to match that of Chroud's. What we're really saying is that Jane's spells are overpowered - so much so that in order for her to be reduced to the level of a puny Warrior, her Mana resources would have to be extremely scarce. Taking this approach would lead to balance, but not the kind of balance we hoped to achieve.
So What Can We Do About It?
The beauty of our system is its flexibility. If we want to make a player stronger or weaker, there are multiple ways to do so. In our case, we would like for Jane to be able to cast more spells and still remain relatively in balance with Chroud. To do this we can:
- Reduce the Mana cost of her spells.
- Give her another spell.
- Increase her Mana pool.
Both the first and third approach seem like viable options. If we reduce the cost of Jane's spells by between one-third to one-half, her DPS will remain the same, yet she'll do more damage per Mana point spent. She also increase the amount of spells she can cast before her Mana runs out. Alternatively, by increasing her Mana pool, Jane's DPM will not increase but she'll still be able to perform more casts. Thus, after some tinkering around, we should be able to achieve a balance that works and makes sense.
And really, that's what balancing a turn-based RPG, or any RPG, is all about: playing around with numbers until you find something that works. It doesn't necessarily have to be perfect or pretty, nor does it need to implement advanced math. As long as no one party member is significantly more or less powerful than any other, you've achieved a measure of success.
In this article, we examined turn-based RPG balance from the perspective of individual party members. Before you tackle this type of balance, I suggest that you ask yourself the following questions:
- What are my base stats? What are my derived stats?
- Do the party members fall under specific class categories? If so, what are they?
- What kind of numbers do I want to see on screen - big ones or small ones?
- How much of a factor do I want randomness to play?
- Is the scope of my game realistic, or will I end up spending months balancing my game?
Final Trigger proved to be less complicated than RPGs from the early 1990s, yet it still took an entire article just to achieve rudimentary balance between two classes. We didn't even touch upon enemy balance, AI and advanced resource management. Realistically, in order to truly test the balance of your game, you should develop a coded modeling system that allows designers to plug in a series of values. It will speed the balancing process up significantly - otherwise you'll be forced to use an Excel spreadsheet or equivalent. But the principles explored above will go a long way towards getting you into the balance mindset.