Gather 'round, ToGsters,
Bhroom here, coming at you in full effect with a post on Barkley Balancing! While we still haven’t shown all that much in regards to the later parts of the game, and we’re getting there, I thought I’d share some light on some techniques about how we are balancing the game. Also this will allow me to proclaim my affections for that sultry beauty we all know as Microsoft Excel.
Step One: Ask some Questions
- How strong are you at the end of the game compared to the beginning? Double? Quintuple? Define “strong.” Is it just stats? Damage Per Second?
- How much credence are we giving to less tangible combat abilities like dodge distance, overall run speed, random changes to hit or miss?
- When do we think the average player can beat the game? (or game is Open World as well …)
- Finally and most importantly, when will the player feel confident that he or she actually can beat the game?
Step Two: Make Wild Assumptions!
Step Three: Start Up Excel!
Pro Tip: If you have a sequence of 3 or more cells selected, click the little green square at the bottom right of your selection and you can drag it down to automatically add in all your numbers following the sequence above it. Swack!
Now, let’s add in some notes about what is going on at each level.
I arranged the table to not only show where the player is going to be, but also a rough guess as to the “best” enemy they are encountering at that point. Normally ,this would be the NEXT enemy you are encountering since as you gain levels you want a consistent, interesting challenge without, of course, committing the Ultimate Sin of Vidcons: Level Scaling (not actually a sin).
Also in there is a little narrative note about when certain things should be playing out. Even in an open world game, you have to start somewhere … might as well be the “LCP” (or terrible acronym I just made up), the Lowest Common Playthrough.
I call the LCP the basic game, the game that anyone would play without trying to bend or break the rules. Without breaking every pot for every rupee or following every side quest to its end. It’s the standard game, starting at exactly the right level, and playing it while always taking the most logical, most probable, most popular decision at each moment. The safe game. I use this term a lot!
Now, I’m feeling pretty good about this make-believe game. (Especially since I still maintain it is eventually going to be balanced anyways.) And now I know where my enemies are being dropped in and how strong they are compared to the other enemies before and after them. I can continue to tweak this very simple table over and over through development to continue to refine the progression of the game.
Step Four: Decide what to Balance
First So if you’re making an RPG, there are plenty of places to start your balance. Do you figure out how much HP everything has? Or how about the strength of your weapons?
The answer is wherever you want. The amount of HP an enemy has is meaningless without the relative notion of how much damage you can hit it with. HP=1000000 means little when you deal 200000 points of damage on a single hit. That’s only 5 hits!
Aha! We’ve found what actually needs to be balance though! Damage Per Hit! The better question would be “How many times does the player need to hit the Weredog to defeat it?” rather than “Wouldn’t it be so cool if Weredogs had like … 10 million hit points?! That’ll really mindfreak the pundits!”
And that’s not the only number that means something! If it takes 10 hits to beat the Weredog, but the battle system only allows you one hit every 1 ½ minutes, then you’re looking at a 15 minute battle. Is that long? Is that short? Regardless, the balance is now a question regarding TIME and we’re suddenly talking about Damage Per Second.
While DPS is so often obsessed over with MOBAs and everything else that I’ve never actually played, it does do something very beneficial in boiling down the game experience to uses time as an equal (NOT relative) standard throughout all playthroughs of the game. The LCP of your game will show that all of the same enemy at the same time-frame of the game takes the same amount of time to defeat. That sounds boring but on the contrary, that’s very good! You now have a stake in the actual feel of the world. You now have the power to know that when you pit a player against a certain challenge, you can predict what’s gonna happen and in how long.
Step 5: Realize that you should really be balancing your game against Play Time
Hopefully you’ve already done that! Now it’s time to make some lines. And the best way to make lines is with Wolfram|Alpha.
Step 6: Play with Wolfram|Alpha
If you don’t know what this thing is, just go here and start typing in things … anything you want really. The idea is that is uses the power of an incredibly complex computing program called Mathematica to attempt to interpret anything and everything as computable data.
It does fairly well in computing arbitrary ideas like say, “How would a dog see the image of Charles Barkley?”
But it does even a more baller job at showing you how formulas will work on a graph. If you can think back to sophomore math, you can start to apply lines and graphs that project where you want your numbers to go. Take this formula for example:
Pretty simple: you get 15 HP to start and 8HP per level. It’s always wise to start yourself with a base (15) to buffer the bottom end of a weaker character. Also we have a variable for the level, and how much it gains. Wolfram|Alpha shows us this. (Oh there is a Pro Trial that gives you Interactive graphs … it’s worth it for $0 for the trial month or even $5.49 each one after!)
This formula makes a solid little line.
Step 7: Party with Excel
Let’s just run with it and plop it into Excel. Next thing I do is make every constant a variable. So it looks more like this:
Okay now let’s make a new sheet in our Excel form here (in case you didn’t know):
And now I’m going to add my constants. These are actually variables in our formula which means we’ll be able to change these numbers throughout the balance (and game) easily.
ProTip: I use the Cell Style->Input to mark the constants I can change in orange. That way if anyone else looks at my balancer they can easily see what numbers to change.
So now we plot out the 1-30 level and our first formula (which I am calling “Flat8”). Now what I’ll end up doing is writing a formula that pulls in both the constants that I used above and the level variable that will adjust the HP.
So I typed in “=$G$2+A2*$G$3” and you can follow the color coded arrows to what they reference. Excel uses order of operations so I didn’t need parentheses but it probably would be a good idea to have them in.
I also use absolute references (“$”) when I refer to the coordinates of cells that I don’t want to move if I copy that formula to a new cell. The $ locks the Alpha or Numeric coordinate, or both. So that means regardless of where I paste this formula, $G$3 alllways points to my hp_lvl constant. You can also use only 1 absolute reference if you are trying to use a column or row of different values along with the cells you are trying to compute (such as “A$1” would start with A1, but then also copy over to B$1 and C$1 and so on).
One more thing I do that I think everyone working with Excel should do: MAKE THIS A TABLE! Select those two columns, Level and Flat8, and then click Format as Table, select a style and include your headers. Now you’ll have a fancy sortable table here:
ProTip: Be sure to name it in the Design Tab. This will let you reference your columns muuuchhhh easier (instead of continuing to update something like “=B2:B31”, you can just write “=HRplot[Flat8]” and it will always stay current, which is incredibly helpful in large workbooks.)
Now let’s go back to question #1: How strong are you at the end of the game compared to the beginning? Double? Quintuple? … much more?
I’d approach the answer like this: For each factor the end stats grow above the beginning stats, the less player control over those stats becomes apparent, since any one decision does not affect your character performance as much. Some would also say that you get a greater sense of growth if you have something like 100 HP in the beginning of the game and 10000 at the end (think Disgaea), but I would argue that the players acknowledgement of growth can come from even a single digit change as long as it is powerful enough to change the way they play.
By stretching the range stats grow you’ll also have a broader field of numbers to use for each of your enemies as they progress in the balance (this could make the balance EASIER or HARDER however … be wary!)
So there’s a lot of ways this decision can affect your game, and these formulas are going to really show their true capabilities as you start graphing them out. (Since Barkley is an open world game, we are keeping the stats relatively tight, with HP numbers in particular about 4 times larger from beginning to end.) In this example we start with 23 and end with 255 (a holy vidcon number) so around 10 times larger.
Alright this update/tutorial is getting ridiculous, so I might start wrapping this up as “Part 1.” Let’s do one more step!
Step 8: Exponents
These really make your game much more dynamic! We use them a lot in B2 stats and you’ll soon visually see why. If I add in exponents, the returns on something like HP have greater yield the higher the numbers are. I added in this formula:
Or with constants:
Now you'll see that the HP numbers start much lower but begin to grow more and more:
I also added in a “Diff” table that just checks the difference between the values at each level. You can see that at level 11 (Our Halfway Point from before) we are short a whopping 40HP (C13 to D13), but we’re getting 8 per level (E13). Then the second half of the game we are getting a lot more HP per level and by level 22 (End Game) we’ve made it to 193HP, a touch over the 191HP from getting the Flat8. After that, things get wacky and we’re at 336 before you know it!
Step 9: Make a Chart to Impress your Dad
This is as easy as selecting the table, clicking Insert and then perusing the Charts and Recommended Charts areas. Since you’ve named the table, all your labels should be made automatically. You’ll get something like this:
That’s a beeeeauuuuttt!
I think this covers a pretty hefty and possibly completely rudimentary and unnecessary how-to about using one of the world’s most popular programs. But maybe it can help people?!
Does anyone want more? No?! More Barkley you say?!
Did you know?
I used =FLOOR() AND =CEILING() functions (which round numbers down and up) to clean up my data in the table above. You can also use functions to look up and compare and choose data in cells. Much like you’d use in any coding language! This ends up making Excel incredibly powerful and able to crunch and visually represent thousands of numbers and charts instantly.
I could go in and share some of my favorite Excel functions and how to use them, but this update might have killed all interest in my talking anymore. I guess let me know below if you want to see! The next one will be much more concise. Also I’ll share this excel file here. You should be able to download it as you please.