As a fighting game fan and "developer" of one, I often hear about balance. Balancing any game can be a difficult, time-consuming task -- made more complex when asymmetry is involved -- a task that franchises such as Street Fighter, Mortal Kombat, Tekken, etc., still work on and improve with patches and updates throughout the long life cycles of their games.
The indie fighting game I've worked on, Battle High, is no different when it comes to this necessity for asymmetrical balance, but when I look back at the game, I wonder how I could have taken a better, more strategic approach to this. I look at my frame data, the information about each characters' attack; until recently, I didn't really have any, or at least any that was reliable, but I wonder if I could have saved time had I planned it out more carefully from the start. Likewise, it made me wonder how bigger companies plan and design their characters. Does a designer create a frame data spreadsheet and design attacks based on that first or are they given a character whose attacks are made in an initial, conceptual phase and then editted to fit within constraints, defined by existing characters or artwork?
Anyway, I theorize that maybe Battle High's balance could have been better had I approached it from the standpoint of well-designed frame data as early as possible.
I'm going to show some example frame data, but a quick disclaimer: the example data I'm making up is just one way people dictate frame data. Mine is probably more verbose but meant for clarity. So, for my example and simple frame data, I made up the following:
|Standing Light Punch||2||2||3||7|
In the above, for this Standing Light Punch, we have the following information:
- Start Up: the number of frames for the attack to be active
- Active: The number of frames the attack is active or can hit the opponent
- Recover: The number of frames that must pass before the character returns to their initial or idle state
- Total: The sum of the previous three or the entire length of the animation
Now these are just example numbers, but from this, I can determine a lot about the attack, for example, it starts up and recovers relatively quickly. As a designer though, I need a more information to help me balance it against other information.
|Attack||Start Up||Active||Recover||Total||Hit Stun||Block Stun||Damage|
|Standing Light Punch||2||2||3||7||6||2||10|
The three columns added say the following:
- Hit Stun: if the attack succeeds, how many frames the opponent is stunned
- Block Stun: If the attack is blocked successfully, how many frames will the opponent block
- Damage: How much damage does the attack do upon success -- let's assume I'm not utilizing chip damage for the time being.
Now, using these seven numbers, I can derive some important information.
- If the attack succeeds, the opponent will be in hit stun, so when I recover, assuming I hit the oponent on my first active frame, I will have 1 frame to perform a follow-up attack.
- Standing Light Punch won't combo into itself though because it takes longer to start-up than for my opponent to recover
- If they block, however, they will have 3 frames to counter attack -- again, assuming I hit on the first active frame.
Side note: I'm curious if a fighting game has done something where the hit stun is determined by the active frame the attack hit with the idea that the hit stun is consistent regardless of what attack frame the attack lands.
Again, using data like this early on to defne my characters, I wonder if a more balanced experience can be created. Here's a quick example idea:
|Character / Attack||Start Up||Active||Recover||Total||Hit Stun||Block Stun||Damage|
|Connie / SLP||2||2||3||7||6||2||10|
|Marshall / SLP||3||1||3||7||6||2||12|
|Bieliel / SLP||1||3||6||10||9||3||16|
|Jillian / SLP||1||1||1||3||5||2||6|
So comparing characters, Connie and Marshall could be aruged as being balanced. Though Marshall's SLP has a longer start-up and shorter active period, they have the same recovery, hit stun, and block stun. At the same time, to balance this out further, Marshall's SLP does a bit more damage.
Then there is Beiliel who has a very quick startup to his SLP with more active frames, but longer recovery than Connie and Marshall's. To make up for this, its stuns and damage are increased.
Finally there is Jillian. This is when frame data could be used to realize problems early on. I'm trying to define her as my "weak but fast" character, but being only 3 frames total, Jillian's SLP could be considered unreasonably fast, even with the reduced damage and stuns. Did I accidentally create an infinite, especially with how the hit stun is longer than the attack's startup? Then again, new engine features could be introduced to resolve this such as reduced hit stun and/or damage on consecutive hits.
This is only a microscopic cross section of an actual fighting game though. Not only are there usually more characters and many more attacks per character, there are tons of other variables not being taken into account such as range, mix-up potential, pushback, priority, linking just to name a few! Oh, and additional features such as projectiles, throws, guard breaking, and so on continue to complicate this.
Though I raise the question, if a team could figure out all the information of their attacks, could a tool be made that compares and cross references this data, tests out scenerios, and suggests adjustments to create a perfectly balanced game? Wouldn't that be great? I'm not sure. For the most part, developers have this machine already: their players. Why make some complex algorithm to check all of this data when players usually expose it themselves and a patch can be released to resolve it? Of course, there's a risk because if there are too many issues, the game can be considered garbage by the audience and forgotten. Also, frame data isn't all a fighting game is made out of; there are a lot of other areas that affect balance, some areas a spreadsheet can't properly determine.
Outside of the frame data spreadsheet, another way an attack can be balanced is by making it more difficult to execute than others. Does it require one button press? A simple command? A complex command? These can balance things out -- to a degree. It can also aliente casual and beginner players though, and some even argue complex inputs could be hurting the genre as a whole. Regardless, a move could have fast startup, safe on block, and a lot of other positive attributes, but maybe it's hard to execute to help balance it slightly. This is all dependant on the player though, something a spreadsheet can't easily cross reference as there will always be expert who can do any move with their eyes closed and novice players who will never be able to perform certain attacks on cue.
Though frame data may be in the back of some expert players' minds, visual recogniztion of what is going on is arguably more important to help with timing, identify target, when an attack is or isn't active, and a lot more information. How can this help with balance or maybe even hurt it though?
Well imagine this scenerio: 2 characters with identical frame data. One character is easy to recognize and humanoid, the other, an amorphus blob. I theorize that the average player would say that the amoprhus blob is a slightly better character -- well, depending on the animations. If they are hard to read and indentify, while the humanoid character isn't, there could be a slight advantage. Sound is also important, and there is probably a distinct advantage given to a character who is relatively silent versus one that is not -- though having a completely silent character would probably appear to be bad sound design.
Another example of aesthetic balance (or imbalance) concerns alternate costumes in games like Street Fighter. I really like alternate costumes actually, but I can see them causing some confusion or distraction as some are very wild and the character ends up no longer being as recognizable as their iconic default costume. It would be an interesting to do a survey of symmetrical or mirror matches but allow players to pick different costumes and see if a pattern arises, do players who use a certain costume have a tendency to win more often in these mirror matches?
I think one game series that is particularly guilty of having balancing issues due visual inconcisistencies is Guilty Gear -- no pun intended...okay, maybe a small pun intended. Guilty Gear has beautiful characters and animations, but there are inconsistencies that I feel balance the cast in a unique way outside of frame data -- albeit a confusing one at times. The best example of this I can think of in Guilty Gear Xrd is with Milia Rage's Drive attack and I-No's Stroke The Big Tree special attack.
Both attacks look like they come out of the ground, but Milia Rage's Drive attack (left) is an overhead, and attack that can't be blocked when crouching (and yes, I know, all Drive attacks are overheads) while Stroke The Big Tree (right) has to be blocked low. It's these sort of inconsistencies I feel can be a little unwelcoming to new players but at the same time, adding ambguity to a character's attacks could help adjust balancing in their favor.
I think the key question I've heard that demonstrates this issue, heard when playing a game, usually out of frustration, is, "How do I block that?!" Assuming the attack isn't unblockable, if a player is asking this, I feel there is a failure in clear visual recognition or consistency -- or a purposful choice to make an attack ambiguous.
Another area where there can be aesthetic imbalance can be outside of the characters but due to areas such as the stage or environment. An example I see often is from Marvel Vs. Capcom 3. There is a stage that is mostly white. I've heard several reasons why this stage it picked so often: it's bright, runs fast, etc., but I'm always a little suspicious of that when someone picks a character in an all-white costume. Sure, there is some semblance of an outline, and an expert player will probably not have an issue, but maybe they didn't block that low because they couldn't see it due the to high speed and lack of contrast due to the character blending into the environment.
I sometimes even feel that this is a problem with modern game art as a whole. Though we make great strides in realism and beauty, we sometimes have problems with things just getting muddled and lost. This issue could be one reason why the developers of Killer Instinct's latest installment changed the backgrounds a bit between seasons.
Regardless, aesthetic balance is something that no spreadsheet can solve -- maybe you could survey players and if all of them think a low kick looks like a mid kick you can resolve that but that's not the same thing as the frame data I mentioned before, that's focus group and playtesting.
Is Perfect Balance Really the Goal?
So it seems that frame data alone can't perfectly balance a game, and the question remains: is perfect balance really the goal? When I ask this, I think of tier list or character rankings. Not many Battle High tier list exists, if I searched I could probably find one, but if the entire cast was even, if everyone considered average or C, it just feels like it'd be boring. Maybe boring isn't the right word; there are plenty of symmetrical games that people enjoy and are exciting, Nidhogg comes to mind. But if every character is considered equal, why even have more than one character? Haven't I just created symmetrical balance with the illusion of asymmetry?
So, using Battle High's characters, I would say something like the following would be an ideal tier list:
- S Tier: ___
- A Tier: Bryan, Mai
- B Tier: Shinji, Michelle, HW, Principal
- C Tier: Khai, Klein, Ryken, Arvid, Jada, Jiro
- D Tier: Kazuo
- F Tier: ___
A majority of the cast is considered average or slightly above, sure, but there are a few higher ranked characters and a lower ranked one. Now the interpretation as to why some characters are better than others differ on tier lists: win rate, ease of use, power, etc., but having a range I think does a lot of interesting things.
Firstly, it could mean that some characters are easier to use than others, meaning more casual players can be eased into the game. At the same time, there's an interesting satsifcation that can be found when playing a character that is considered "low-tier", meaning the player is so good, that they can overcome player-defined odds and still come out on top.
An example of a failure in balancing I think would result in something like this:
- S Tier: Bryan, Mai, Arvid
- A Tier: ___
- B Tier: ___
- C Tier: Khai, Klein, Ryken, Jada, Jiro, Shinji,
- D Tier: ___
- F Tier: Michelle, HW, Principal, Kazuo
So out of my cast of 13, two characters are considered so good that they win almost every matchup (S-tier) and there are a few so bad they are nearly unplayable (F-tier). The big issue I have with this is, as a designer, excited to see people play the game I worked on, I would get so bored and sad if I saw everyone pick the same two or three characters. I think my audience would too. Why did I even make the remaining fighters if this is the result? Or worse, those S-rank characters are banned for being considered too powerful. Then again, I'm pained when I see people pick the same two or three stages over and over during a tournament stream.
So did you just say that your entire frame data "theory" is pointless?
No! Well not entirely. I think for my next project, if it's a fighting game, I really want to start with balanced -- or at least thoughtful -- frame data. It can help in a lot of ways such as preventing infinites early on.
Likewise, if my audience is really clamoring for frame data, I can just export it to a spreadsheet and say "Here you go!" -- though wouldn't it be deliciously evil to make it an IAP? Just kidding, I would never do that -- well, unless it became the standard, which I hope it doesn't. Then again, if you ever bought a fighting game strategy guide you, in a way, paid for frame data. Also, Mortal Kombat X's command list frame data apparently isn't accurate, but at least they didn't charge players to see it.
I can also see it being useful in production; I'm a solo dev at the moment, doing a majority of my work myself, but if I were to work with an animator, having my frame data defined beforehand can probably help them a lot. If I say, "Hey, Arvid's Standing Light Punch should be 4 frames on startup and take 10 frames total", I have something to reference if I get back a 20 frame animation that takes 16 frames to activate. It can also prevent what I'm dubbing "beautiful cram," when an artist creates something beautiful -- concept, animation, etc. -- prior to a design being delegated, but the entire team loves it so much that you now have to make it fit somehow. If you're defining frame data early, this probably won't be a big deal. You can either adjust the numbers or could argue how it won't work and propose a compromise. "Hey, maybe Flaming Cartwheel Stroke Sparkle could just be a little faster on startup, 7 frames instead of 15? Otherwise it won't combo from any of their existing attacks." Again, curious to how these issues get resolved by more prominient fighting game developers.
At the same time, you can't just focus on frame data. Production needs to move. Could you imagine this KickStarter?
"Hey, so I'm working on a new fighting game. I don't have any concept of the narrative or characters or environments, but my frame data spreadhseet is gorgeous, organized, and genius. I've cross checked and can maybe guarantee my cast of 8, whoever they end up being, is perfectly balanced!"
Also I can already imagine a team of artists and programmers getting irritated, "Ugh, Chris still isn't done with this magical frame data? When do they expect us to start animating and programming? A week before launch?"
Anyway, I think utilizing the concept of frame data early on in production can help prevent some issues. It's not a perfect solution as there are a lot of things that affect balancing outside of frame data, but I wonder if bigger studios utilized this idea -- if they don't already -- it could help reduce the number of patches, especially day one patches, in a game's life cycles. And this concept of frame data, which really boils down to defining specific values for many variables in your game, can probably extend to a variety of genres -- RTS, racing, FPS, etc. -- I just chose fighting games because it's one with which I'm familiar.