Balancing Multiplayer Games, Part 3: Fairness
In asymmetric games, we have to care about making all our different starting options fair against each other in addition to making sure the game in general has enough viable options during gameplay. That means each character in a fighting game and each race in a real-time strategy game should have a reasonable chance of winning a tournament in the hands of the right player. For collectable card games and team games like Guild Wars and World of Warcraft’s arenas, we should instead say that at least “several” possible decks and class combinations should be able to win tournaments.
Self-Balancing Forces
To make this semi-impossible task easier, we should use self-balancing forces if possible. This will let us go nuts with diverse options while building in some fail-safes to protect us from unknown tactics that players might develop in the future. I’ll give examples of this from two games: Magic: The Gathering and Guilty Gear XX.
In Magic, the various game mechanics such as counterspells, direct damage, healing, and so on, are divided amongst five colors. Players can build decks with as many of these five colors as they want, but the more colors they include, the harder it is to have the right mana to actually play the various colors of spells.
Consequently, decks are forced to specialize, which gives them inherent weaknesses. The color red, for example, has no way to destroy enchantment cards, so even if a red deck ended up being strong, it has a built-in weakness (it must either accept that it can’t destroy enchantments, or weaken its consistency by trying to incorporate another color that can). Also, each color has two enemy colors, and those enemy colors often include cards that are specifically powerful against their enemy colors. Again, if a red deck became too powerful, there will be blue and white cards that keep red in check, at least somewhat.
Finally, when Wizards of the Coast prints a new set with new mechanics, they usually include a card or two that are tuned to be fairly weak, but that specifically counter the new mechanic. I think they hope that these specific counters are not needed, but if the metagame becomes completely overwhelmed by the new mechanics, then there are at least some fail-safes the metagame can use to fight the new mechanic.
For example, Magic's Odessey block focused on new mechanics involving the discard pile (called the "graveyard" in Magic), and the card Morningtide could remove all cards from all graveyards. If players started getting too tricky with their graveyards, Morningtide was a counter. It practice, this counter wasn't really needed though. Later on, Magic's Mirrodin block focused on artifact cards. The card Annul could counter artifacts (and enchantments) for only one mana, and the card Damping Matrix prevented artifact abilities from working. In Mirrodin's case, the artifact mechanics really did get pretty out of hand. Annul and Damping Matrix were good ideas, but even stronger failsafes were needed during Mirrodin.
This is really a similar concept to Yomi Layer 3 that I mentioned in part 2. The idea is to build in counters to the game so that even if some things end up more powerful than you expected, the game is resilient enough that players can deal with it.
Guilty Gear is a very important example for its fail-safe systems. I described that game’s system in detail in this article, but here’s a quick refresher.
Guard Meter
Every time you hit the opponent, their “guard meter” goes down. The lower it is, the shorter their hitstun is. That means that even if a string of moves is an “infinite combo”, meaning that once you land the first hit, you could keep hitting them forever, their shorter hitstun eventually lets them block to escape the combo.
Progressive Gravity
When you are juggled in the air during a combo, the gravity applied to your character gets greater and greater over time. So even if a combo could juggle forever somehow, the victim’s body falls faster and faster over time, which would eventually ruin the infinite juggle.
Green Blocking
Imagine an attack sequence against a blocking opponent where do a few hits in a row that leave you pushed back, too far away to continue. But when you get to the last hit, you cancel it with a special move that makes your character move forward. After that, you repeat the sequence and force the opponent to block forever. In case this type of lock-down trap exists, Guilty Gear heads it off at the pass with a feature I call “green blocking.” While blocking, you can use some of your super meter to create a green force field that pushes the opponent pretty far away from you, letting you ruin the spacing of his trap.
Each of these features is designed to solve a problem that the designers didn’t even know they had. They just know that if the game ever ended up in a state of infinite combos or juggles or lockdowns, that some fail-safe features need to save them. Also, these fail-safe features freed them to design incredibly varied and extreme characters. No matter how crazy a character is, or how scary this rushdown tactics ended up, the designers knew that this defensive system of fail-safes shared by all characters would keep things at least somewhat in check.
Playtesting and Course-correcting
Whether or not your game has fail-safe systems, at some point you have to design a diverse set of characters / races / whatever, make each one coherent and interesting, then have the confidence that you’ll sort out the balance problems in playtesting. All the theory in the world will not save you from playtests, of course.
You need to start tuning the game, and react and learn as you go. Do not let a producer turn tuning into a fixed list of items that you are accountable for checking off, one by one. It’s an organic, continuous process that keeps going until you need the ship the game. Playtesting lets you discover things you couldn’t have predicted ahead of time, and you should be open to those discoveries. The goal isn’t to make the exact game you originally envisioned, because your original vision did not take into account all the things you learned from development and playtests. When you or the testers discover nuances or unexpected properties, you have the chance to build around those and incorporate them into the game’s balance.
The Tier List
During the balancing of Street Fighter, Kongai, and my card game called Yomi, I used a similar approach with playtesters. I think this approach doesn’t really depend on the genre, and the key idea is managing the tier list.
The term “tier list” is, I think, a term from the fighting game genre. It means a ranking of how powerful each character is from highest to lowest, but it also accepts that such a list cannot be exact. Instead of ranking 20 characters from 1 to 20, the idea is to group them together into “tiers” of power. Remember that if a divine being handed you a 100% perfectly balanced game, that players would still make tier lists. You should accept the existence of these lists from players as a given, and its your job to manage this list.
In Kongai and Yomi, I even gave the players a template for the tier list that is most useful for me as a designer. First, I tell them to think of three tiers: top, middle, and bottom. Then I tell them about the two “secret tiers” that I hope are empty.
0) God tier (no character should be in this tier, if they are, you are forced to play them to be competitive)
1) Top tier (don't be afraid to put your favorite characters here. Being top tier does not necessarily mean any nerfs are needed)
2) Middle tier (pretty good, not quite as good as top)
3) Bottom tier (I can still win with them, but it's hard)
4) Garbage tier (no one should be in this. Not reasonable to play this character at all.)
My first goal of balancing is to get the god tier empty. Of course some character will end up strongest, or tied for strongest, and that is ok. But a “god tier” character is so strong as to make the rest of the game obsolete. We have to fix that immediately because it ruins the whole playtest (and the game). Also, the power level of anything in the god tier is so high, that we can’t even hope to balance the rest of the game around it.
My next goal is get rid of the garbage tier characters. They are so bad that no one touches them, and it’s usually pretty easy to increase their power enough to get them somewhere between top, middle, and bottom. If they are somewhere in those three tiers (which gives you a lot of latitude actually), at least they are playable.
Public Tier Lists
I really like it when playtesters all see each other’s tier lists. The debate this spawns is very useful for me to read (or overhear in person) and for the playtesters to sort out their ideas. Sometimes when someone put a character unusually high or low on the list, I dug deeper to find out that player really did know something most of the rest of us didn’t. Other times, that player is just crazy and the rest of the testers are happy to point that out. It’s also good to see what kind of consensus the testers come up with, like if they all rank a certain character as the worst, for example.
The biggest landmark moments in each of the games I balanced was when the tester communities consistently gave tier lists with no characters in the god tier or garbage tier. Once you’ve achieved that, the next goal is to compress the tiers. That means that you want the difference between the best and worst characters to be as small as possible. Notice that that means even if you have the same characters in the bottom tier that you did a month ago, you might have dramatically improved the game if all those “bad” characters are really only a hair worse than the tier above, rather than way worse.
Adjusting the Tiers
In all the games I balanced, I used the same approach of letting the top tier set the benchmark power-level. In Street Fighter, I already had an established top tier as a starting point from the previous game, but in Kongai and Yomi, it was somewhat accidental who ended up in the top tier. But early on, after the god tier was removed and it was pretty clear which characters / decks were top, I allowed that to be the target power level. In other words, the characters in that tier are “how the game is supposed to be.” Again, I didn’t plan exactly who would be here, but I accepted how it ended up and worked with it. So if the top tier is the target, it’s the bottom tier you should adjust the most. If the top tier is the intended power level, you don’t really want to mess up the good things you have going there. Instead, boost the bottom characters up and compress the tiers as much as you can, so you get the worst characters just barely below or equal to the best characters.
There are some psychological factors that I saw over and over again while making these adjustments. The first is that whenever I make a move or character worse (aka “nerfing”), players overreact. Sometimes that top tier creeps a little too high in power, or an otherwise average character ends up having something unexpected that’s crazily good, or a character has a move that really reduces the strategy in the game and needs to lose that in exchange for gaining something else. There’s lots of reasons for nerfs.
I’ll use some made-up numbers to convey the general idea here. Imagine a move is at power level 9 out of 10, and that’s just too good for that character. Time and time again, I saw that if I made the power level an 8 out of 10, playtesters would complain that the move was worthless and put the character down at least one tier. This happened consistently, and even in the cases where 8 out of 10 was still too powerful and it really needed to be a 7. For some reason, players in every game seem unable to grasp the concept that a top tier character who is made slightly worse can still be a top tier character.
This is one of the cases where I think you just can’t listen to the playtesters. Ignore their first reactions to nerfs, let them play it more and get used to it, let them see if they can still be successful with the new version of the move, then take their feedback on that move or character more seriously.
The other psychological effect to know about is what happens when you increase a move’s power. I learned about this Rob Pardo’s lecture on balancing multiplayer games at the Game Developer’s Conference, and I tried it on all the games I balanced, and I think Rob is right. He said that if you have a move that you’re not really sure how to balance, make it too powerful. If you make it too weak, then you run the risk of no one using it at all. Then, when you slightly increase its power, none of the testers will notice or care. They already decided that move is weak. Then if you make it slightly more powerful still, they still won’t care. Even when you inch it up past the reasonable level of power, it’s hard to get it on people’s radar and that makes it really hard to know how to tune the move.
Instead, Pardo said to start with the move too powerful. Then everyone will know about it and care about it. I did exactly this with T.Hawk, Fei Long, and Akuma in Street Fighter HD Remix, because I had trouble figuring out their power levels. Each one of those characters was the best character in the game at some point in development, and that meant I got lots of feedback from testers about these characters. It also gave me a sense of where the top of the scale even was. Sometimes my “too powerful” versions of a character would end up waaaaay too good, or sometimes just barely too good. By knowing where the upper limit was, it helped me pick appropriate power levels more quickly. That said, I did have to deal with the inevitable cries that follow all nerfs, but that just goes with territory here.
Illusions in Tiers
Another point from Rob Pardo’s speech on multiplayer games was not to balance the fun out of things. I’m very conscious of this as well. Don’t just think about the game as some abstract set of numbers that has to line up. You also have to think about how people will perceive it and whether it’s actually fun. Pardo said that he likes the player to feel like the tools they have are extremely powerful, even though they are actually fair.
An example of this in one of my games is Tafari, the Trapper in Kongai. Tafari’s main ability is that the enemy cannot switch characters while fighting him. Switching characters is one of the game’s main mechanics, so fighting him is like playing rock, paper, scissors with no rock. It seems, at first glance, ludicrously powerful. But from the start, I gave Tafari several weaknesses and he loses many fights if he ends up having to fight on even footing. He’s best when you bring him in against an already-weak character to finish them off.
I knew Tafari was not too powerful. I tested him with many experts and they tended to rank him as middle tier once they got the hang of him. As we added new testers over time, probably nearly 100% of them claimed that Tafari was too strong. I refused to change him though and after a year of testing, the best players still ranked him as middle tier, while inexperienced players still ranked him as top. Tafari is an illusion.
I’m telling you this because you have to be very careful with feedback in cases where you intentionally made something feel more powerful than it actually is. It’s a success if you can pull that off though, because Tafari makes the game more interesting, creates lots of debates, and at the end of the day, he is balanced.
Counter Matches
In addition to the tier list, you should also be thinking about all the specific matchups. Street Fighter HD Remix, for example, has 17 characters and 153 possible matchups. For the version of Street Fighter before HD Remix, experts tend separate the characters into four tiers (none of them are god tier or garbage tier), and they place Guile in the respectable second tier. Even though that means Guile’s power level is acceptable, he is severely disadvantaged in two specific matches: Vega and Dhalsim. Is it ok that an overall good character gets countered by two specific characters? Not really.
If these were weapons in an FPS or units in an RTS or characters in team-based fighting game, then it might be acceptable. You pick up weapons in an FPS after the game starts, so their balance doesn’t need to meet the hard requirements of an asymmetric game. And units in an RTS and characters in team-based fighting game are examples of local imbalances, which are fine (it’s the races and teams that need to be balanced). But in Guile’s case, you lock in your choice of Guile at the start of the game, then you are stuck with him the entire game, so it really is a problem if he has some bad counter matches, even though players rate him fairly highly overall.
It’s really tricky to adjust anything in an asymmetric game though. How can we help Guile in just the Dhalsim match without affecting all the other matches? There’s no easy answer here, but I advise you to really solve the problem, rather than copping out.
My real solution to this problem was two-fold. First, for reasons unrelated to this particular match, I changed the trajectory of Guile’s roundhouse flash kick. This happened to help a bit against Dhalsim’s fireballs, so we’ll count that as a lucky accident. Second, one of Guile’s problems is that Dhalsim’s low punches can go under Guile’s Sonic Boom projectiles and hit Guile from across the screen, with no repercussions. I changed Dhalsim’s hitboxes so that Dhalsim now trades hits in this situation, rather than cleanly hits. This change has virtually no affect on any other match, so it’s a real solution to the problem.
A cheating solution would have been to special case this match and give Guile more hit points. This sounds attractive because you don’t have to worry about messing up other matches, but this non-solution feels really artificial. It messes with players’ expectations and intuitions about how many hit points Guile has.
A similar cop out would be to create a giant table in an RTS of every unit versus every unit and special case how much damage they all do to each other. Again, it messes with player intuition about how damaging each unit is, and creates and invisible, wonky system. I know you’re going to be tempted to use these types of special case solutions when balancing asymmetric games, but try your hardest to avoid them.
Conclusion
Start your design with some self-balancing forces and fail-safes if you can. Then go wild and create all your game’s diversity, then start the long road of playtesting. As you learn more from playtesting, change your course as you go. Start keeping track of tiers, first by fixing the god tier, then by fixing the garbage tier. Then compress the tiers so that even the bad characters are only slightly worse than the best characters. Finally, fix all the counter-matches you can by actually solving the puzzle, and avoiding cop out solutions.
Reader Comments (7)
Quote: "I think this approach doesn’t really depend on the genre, and the key idea is managing the tier list."
I beg to differ. I'm going to refer to the genres of TRPG, aka tactical online games (ie Dofus Arena) and classic TBS games (ie wesnoth, fantasy wars), excluding 4X games.
In such games it is certainly possible that a match is between 2 (or more) sides composing each out a number of characters and that the efficiency of each character possibly fielded is based for a huge part on the rest of the team. Making it near impossible to measure the exact strength of a character (instead it's relative to the rest of the play). Example very simple: archers may be very good in game x, but a team of archers will get decimated fast. Other example: a character with an extremely strong attack that is very hard to place (short range, bad mobility) will be great in a team that brings a lot of mobility but rubbish in all the other teams.
Also note that it's certainly not necessary to make each character exactly as popular (some may be more specific).
I don't claim it is like this in every game in that genre, but I'm confident this theory counts for the biggest compititive games focusing on turn based strategy.
Asking the community in those games to make a tier list will probably result in a list of all obviously outclassed characters - and a list with the rest as in such games the efficiency of each "viable" character is that subjective. So while it's technically possible, it probably won't help you all that much, just looking at the statistics will give you the same information.
But as those genres are pretty minuscule (in the west at least, they're extremely popular in Japan/Korea) it probably doesn't matter anyway. As every rule has an exception...
I don't see why TRPG characters can't be fitted into the tier structure, since the two examples that Sirlin used (Magic and Kongai) are both games that utilizes a degree of customization where the card/character's effectiveness does depend on the rest of your deck/team.
Tier lists are usually built where the unit in question is tossed up against a generic range of situations and then weighted based on the probability of the situations and the effectiveness of the unit in such situations. For example, if archers can decimate slow moving infantry, then that's a plus for archers. Get crushed easily by cavalry? That's a minus. If the weakness and advantage that the archers give in the aforementioned situations are about even and the probability of archers facing infantry or cavalry are just about even, then you'd put archers in the middle tier.
If the archers are doing extremely well against the infantry and can, even if disadvantaged, trade decent hits with a cavalry charge, then the archers would conceivably go up the tier list. If the archers can effectively kite all kinds of units to death, then maybe it'd hit top tier or even god tier, depending on the percentage of team comps it can dominate.
As for situational units, the assumption is that the player would bring in the necessary support that would give the unit its greatest effectiveness (why bother bringing in the slow heavy hitter if there's no units to support its mobility?). This would lock up a section of your army composition and can be considered a disadvantage, especially when it forces you to bring in support that can be generally controlled/countered. If the inflexibility outweighs the effectiveness of the hits from the slow heavy hitter, then the hitter would sink toward bottom tier; if the required support is not a big burden and the extra heavy hits are devastatingly useful in a good percentage of situations, then the unit might hit top tier.
The tier lists are usually based heavily on player perceptions of the objects in place for balancing. It is inherently imperfect, and brings in a lot of factors that might not have sound mathematics behind it... but it does give developers a good overview on the state of the meta game when it's time to balance units and push numbers around.
Suirclaw, you are thinking things wrong, in TBS games, and i play a lot at competitive level. There exist tier list, but of course it's not about particular units. But it's about sides. Since you named wesnoth i think you know the game. Even in that game there are 6 sides, and tehre is a tier list. Drakes and loyals are the high tier, Rebels and Undead the mid tier, and Knalgans and northerns the bottom tier. Of course inside each side there are better and worst units, but its not relevant. Because comparing to fighting game, every unit is like a move from a character. Moves in a character in street fighter don't need to be perfectly balanced. Is obvius that honda torpedo and ochio trow are the best moves of honda, but you don't need to balance the moves out, just the matchup that honda has against other characters.
that's exactly what happen in a TBS.
of couse in a fighting game, you want many moves to be viable. and the same is true for TBS or strategy games in general.
In wesnoth , talking about norhterns, Grunts are far superior as units than goblin archers in general, BUT, goblin archers have his role. THAT"s exactly how moves in a fighter game works.
So if you want to make the relation you should compare tier list of characters against tier list of sides.
There is a difference between fighter games and strategy games. And that's the scenario.
In most fighting games, the scenario is irrelevant because they are all the same (SSMB is the great exception)
But in strategy games this is a lot of times not true. And the power of sides is proportional to the map they are playing on. And that's one thing that makes balance in strategy games even harder.
But tier list still exist.
@ Waterd,
You have a point there - as long as you can put everything in a specific box you can list those "boxes/ensembles" in a tier list. And you can use that list to help balancing.
As such, forget my whole previous post as the serious games where putting everything in a box isn't possible are probably countable on one hand - and every rules has his exception.
I'm not convinced about jaybee's argumentation that in such a "box"less game (ie. imagine wesnoth where every side could chose before the match 10 units out of all races who he could recruit in battle or a fighter game where instead of picking a character you pick the moves you can use.
In such a game you can never say "archers will beat slow infantry". For example, in one such game (DA) you'll need to specify it to "archers beat slow infantry if the archers have a transposition sac, a debuffer, a summoner, retreat spells, a healer and/or frozen arrow - but they may lose if the infantry's got a thrower, transposition, mass debuffs, push spells, jump, vitality and/or healers". A game isn't the sum of 5 matches between an archer and a slow infantry, it's a match between 5 players on one side and 5 on the other. So your example only makes sense when you make the thing you put ina tier list very specific (like 5 archers is higher on the tier list then 5 slow moving infantry) - but that tells absolutely nothing about the game (who would run 5 archers anyway?). To make matters worse for the game I'm referring to - there is no rock/paper/siccor system (nobody has an inherent advantage vs somebody else).
In such a game wether something is better then something else depends on too much factors making judging it's effeciency impossible.
But yes - feel free to forget all this nonsense as Waterd is right - in most games you can use the tier list just fine (if not on characters, then on something else).
(I thought there would be an edit option)
Post Scriptum of last post: kongai doesn't count as much as the game is at all times character vs character (allowing you to tier the limited number of characters).
Also, I'd like to congratulate Sirlin on the work he did here and the amazing content of those 4 articles - I don't want that it seems I'm exagerating one detail of his post to break him down. I actually like his work and thought it'd be useful to debate this small point.
This is a great article, and much more readable than your previous tier list musings. However, I would like to see more discussion of how to expand the idea beyond class-based games (fighters, MMOs, Team Fortress).
Halo 1 is the classic example of an FPS with an effective tier list - the pistol is God tier, and the weapons scattered across the map range from high tier to garbage. Since the pistol is the player's starting gun, a lot of attention was paid to its balancing process through one of the toughest real-world gauntlets of any video game.
Puzzle Fighter's diamond is also a good example of a scarce "super weapon" that often needs balancing even though its entire purpose is to be better than the rest of your options.
It’s really tricky to adjust anything in an asymmetric game though. How can we help Guile in just the Dhalsim match without affecting all the other matches? There’s no easy answer here, but I advise you to really solve the problem, rather than copping out.
My real solution to this problem was two-fold. First, for reasons unrelated to this particular match, I changed the trajectory of Guile’s roundhouse flash kick. This happened to help a bit against Dhalsim’s fireballs, so we’ll count that as a lucky accident. Second, one of Guile’s problems is that Dhalsim’s low punches can go under Guile’s Sonic Boom projectiles and hit Guile from across the screen, with no repercussions. I changed Dhalsim’s hitboxes so that Dhalsim now trades hits in this situation, rather than cleanly hits. This change has virtually no affect on any other match, so it’s a real solution to the problem.
A cheating solution would have been to special case this match and give Guile more hit points. This sounds attractive because you don’t have to worry about messing up other matches, but this non-solution feels really artificial. It messes with players’ expectations and intuitions about how many hit points Guile has.
A similar cop out would be to create a giant table in an RTS of every unit versus every unit and special case how much damage they all do to each other. Again, it messes with player intuition about how damaging each unit is, and creates and invisible, wonky system. I know you’re going to be tempted to use these types of special case solutions when balancing asymmetric games, but try your hardest to avoid them.
You talk the talk Sirlin, you may be able to walk the walk when it comes to StreetFighter, but the table of unit versus unit effectiveness exists in many Strategy games and more often than not it's just common sense. However there are times where experimentation is useful, when playing Rome Total War online against one of my friends, I didn't know the Cataphracts were weak against Chariots, I knew Elephants were GameBreakers and only had a few to be fair toward him.
Normally when one type of unit is weak to another type, this carries over to all factions. Because it's an RTS and most units are limited to melee combat, with ranged combat units suffering limited ammo. Cavalry can be used to great effect against the slower units that are effective against them, in open fields let's imagine there are two Cavalry units for one side and three Phalanxes for the other army. Now the three Phalanx units are nigh invulnerable against a frontal charge, which is how the Cavalry units would cause the most damage to any other type of unit. Because we're in an open field both armies can actively attempt to flank one another, rather than the Phalanx team Turtling the whole thing to death where they have the inherent advantage.
While it's true that not limiting the Cavalry team's movement choices may put them at an advantage, we must remember that they gain attack power as they gain momentum while charging, there is a minimum distance from which a cavalry unit can charge before they gain the full attack boost. Also they can't reliably go toe to toe with any other unit without incurring huge losses, they need to keep charging and charging otherwise units they're strong against can cause huge damage to them. So in the battle between the 2 Cavalry and the 3 Phalanx, one Cavalry unit must bait one Phalanx while the other moves behind and charges, avoiding the other two, after the impact the Cavalry will do minimal damage and the Phalanx is likely to retalliate. So while opening up the arena appears to make Cavalry dominate the map, it dosn't the player with the Phalanxes is not going to just sit still and allow themselves to be charged over and over, they're going to attempt to counter the Cavalry player's counter of their counter. They can do this by positioning their units so none can be attacked without an enemy unit being vulnerable to another Phalanx. The tactic both players will be using is to try to get a unit to begin fleeing the battlefield, this happens usually when either one side gets a massive charge bonus on a flank, or when the unit is losing in a straight fight. When this happens a player loses control over this unit and it gets a considerable distance away from the fighting before they can regain control, however the escaping unit may run across the borderline of the battlefield, if this happens it's gone, it's as useful to a player as it would be if every man had died.
There's this mechanic called Morale which affects how likely a unit is to run, if a unit is being picked at by little losses from supposingly weaker units, it's likely to start running and they knock down the morale for nearby units too. Yes causing one unit to run is good, causing one unit to run, then charging a unit nearby, causing that second unit to begin routing as it's properly called is even better, not just because your enemy is down two units, but also because nearby units that are at least in an even fight will join them. There are so many movements a player needs to do to stay on top, that not even a Turtle player can be accused of being boring, the way the game's tiers work is mostly common sense, Archers don't quite beat Infantry, they annoy with arrows to weaken enemies. Cavalry do beat Archers and Infantry, Infantry have a way of beating Cavalry, the giant invisible table of how every unit works in a fight with every other unit exists, but it most certainly is not a cop out.
In other RTS games different units are tanks and ships of different sizes with different armour, weapons and shields, the Corellion Gunship in StarWars Empire at War is weak to the Aclamator Star Destroyer in a straight fight, but you can use the missile launcher to destroy the Hangar, then speed boost to escape to allow your shields time to recharge. Then on the next attack aim for the engines to allow yourself an easier escape and more time to recharge shields, once those are gone, leasurely pick off the weapons one by one until the unit is no more. If I didn't run, I would've been destroyed in seconds, I took advantage of the Gunship's missiles and how they bypass shields, without that I would've caused no damage at all. The table of unit effectiveness only applies to single unit combat and dos not take into account the possibility that a commander can retreat after causing a certain amount of damage to recharge and heal. By the way taking out/destroying a Hangar, Engines, Shield Generator or Weapons on a Frigate or Capital Ship in Empire at War require the HP of the specific Hard Points to be reduced to 0, making it impossible for them to heal the damage I caused when I destroyed their Hard Points, my ship however was a Corvette and Corvettes don't have Hard Points. The tiers are as folows.
Bomber > Capital Ship > Frigate > Corvette > Fighter > Bomber
That's just Space combat, there's a whole different table for planetary battles. Anyway we're not talking about planetary battles, in the expansion Forces of Corruption there exists a unit called the Vengeance Frigate, obviously it's a Frigate. The special ability is to turn invisible, which can be useful in surrounding an enemy, the main weapon, Mass Drivers can tear through anything and bypass shields, they're even better at taking out Star Destroyers (the regular Capital Ship kind) than the Corellian Gunship is at taking out Aclamators, they can do the job they're supposed to against Corvettes, no other Frigate can compete with them and they're as good as Corvettes when it comes to killing Fighters and Bombers, even without shields they're the most overpowered Space unit of the Zann Consortium. Were they balanced against individual units? Maybe they were, but Mass Drivers can be found in both Space and Land battles. On the ground you can either build them as turrets which do quick and heavy damage to everything, or on the best ground unit the Canderous Assault Tank, which just happens to have no other weapons and can destroy almost anything in a one on one matchup. The most powerful weapon in the game is something only one faction has access to, also to install the expansion you need to remove an ability unique to one of the Empire's Hero units for the standard game.