The moba genre has largely settled on an equilibrium with two armour types: Physical Armour and Magical Armour. Why is this the case, and could expanding the use of armours or resistances lead to greater complexity and depth?
In this discussion we’re focusing on armour types and resistances that players interact with. The rules that decide how much damage a ranged troop deals to a catapult are “environmental tuning”, and aren’t the focus of this article.
To begin our search for answers, let’s first review what armour types and resistances contribute to the genre, and establish why the current trend exists.
At any point in time, players face a constant fluctuation of variables which provide advantages and disadvantages over each of their opponents. Maybe one enemy is close to a wall and is advantageous to engage, but they’ve also just levelled up or got a new item that puts them ahead of the curve. We can visualise this abstractly as some kind of 2D surface, which I call an advantage map:
Here, perhaps the enemy is vulnerable to our magic damage, but we are vulnerable to their physical damage. Adding more armour types and resistances would increase the dimensions of the chart, allowing more room for different contours of matchup:
Armour types have a role to play in providing long-term strategic texture. As the damage type of an ability or attack is fixed and does not change during a match, the same is true of the relevance that damage types have in the game. Their permanence makes them an important tool in the designers kit for adding long-term dynamics to hero matchups. Many factors in decision-making are constantly changing (such as proximity to a wall, or current health); fixed factors are more stable, and create opportunity for strategy.
The presence or absence of fixed factors affects the weight of long-term choices, such as drafting or a player’s overall build plans. Generally, we want a certain ratio where both short and long-term choices matter, and fixed factors are key to managing that ratio. Too little emphasis on fixed factors, and smart short-term choices won’t tie into anything and become unrewarding; too much emphasis on fixed factors and we get long-term disadvantages that are very hard to turn around, such as complete outdrafts.
With armour types, we can manage the availability of items to control the timing curves for certain heroes/damage types. Physical damage might take a lot of items to become effective, while magical damage can taper off in the late-game due to a lack of steroids. Thus, a team which picks lots of magic damage has a fixed factor in their plan (they don’t have good options late-game), and both teams can manoeuvre around that.
Rock, Paper, Resistance
If you want fixed factors, resistances are about as fixed as it gets. Unlike armours where the strength of the defensive stat can be modified in-game, a resistance system uses predetermined values.
In such a system, each hero gets an “affinity” which alters any damage they take, depending on the affinity of the incoming damage. A familiar example is the pokémon resistances chart:
Here we would say that Fire-affinity attacks deal increased damage to units with a Grass or Ice affinity, and reduced damage to units with a Rock affinity. Players can’t modify the resistances table at all; it is part of the landscape on which they battle.
Flexibility is necessary for a resistance table to be fun! Players need opportunities to leverage the resistances table better than their opponents, proving their skill and providing satisfaction. Pokémon understands this: battles involve at least twelve combatants, and swapping or using off-affinity moves is core to its gameplay. Each player gets lots of opportunities to use different affinities, and there are even dual-affinity pokémon to increase the complexity.
In a moba context, we would aim match those properties: by making lane rotations easy/frequent, multiple-hero engagements common, or letting players alter what affinity they or their damage has, so they can actively adapt to bad matchups.
On the macro level affinities might work, but on a micro level they tend towards producing solved situations where one hero’s affinity advantage leaves little room for outplays. Getting into situations like this isn’t fun for either party, and there is constantly pressure on the weaker party to seek a more favourable engagement.
Let’s consider some possible implementation details. Damage is a fundamental mechanic, and making it more complex is like making movement more complex: it potentially affects almost everything about the game. Players need to understand affinities to play properly.
Hence, we would like the system to be as simple as possible.
The smallest affinity table has three affinities: enough to make a rock-paper-scissors pattern. Adding more is an option, but we’d need to support that additional complexity with very clear aesthetics: like pokémon does by making all its Fire-affinity moves look like fire. That places restrictions on the game’s aesthetic: entangling visuals with balance, and is not an ideal choice when the genre’s business model relies on letting players use a variety of cosmetics.
For existing examples of how affinities can work:
- In Age of Myths, hero attacks are subject to a resistances table, but abilities are not. This is done with the purpose of balancing attack range and the items available to each hero class, and it works great!
- Master X Master implements a rock-paper-scissors affinity system, which applies to all damage to/from heroes (and some neutral units too). The system works because, like perSonas, players in MXM pick two heroes and can swap between them. When faced with a bad matchup, swapping should ensure at least a neutral matchup (unless the player picked two heroes with the same affinity, which this system distinctly discourages).
- The text showing damage dealt to units becomes more emphasised when an affinity advantage is being leveraged, which helps build familiarity with the system.
- Elemental Wars made affinities and resistances its central premise, offered nice ways to interact with them, and was quite savvy to the potential issues.
My verdict is that resistances are potentially a good thing, but they come with a lot of responsibilities: for balancing, making them intuitive for players, delivering on flexible gameplay, and ensuring they contribute meaningful depth.
Weaknesses and Rules
Another important role for armour types and resistances is giving weaknesses to damage.
As the primary means of clearing creeps, taking towers, and killing enemy players: damage is universally useful. In order to give other mechanics a chance to shine, we want there to be some situations in which raw damage isn’t as effective.
One way to create those situations is write rules that say “X takes less damage from Y”. A simple example would be “buildings take less damage from heroes”, which forms the beginning of a resistance table as described above.
However, there are many more rules we could write to describe when damage will be less effective. Some rules will be general game rules, while others will be attached to a specific passive or active ability on a hero or item. Some will be categorical in nature, while others will depend on some numerical values like positioning or current health.
The chart below plots four classifications of rule for damage modification:
- General & Categorical: A general game rule which reduces damage based on fixed types like “is the damage from an ability” or “is the damage tagged with affinity fire“. This is largely equivalent to having a resistance system!
- General & Numerical: A general game rule which modifies damage based on some current numbers. A simple example would be “damaging an enemy who is facing away from you always deals +50%”.
- Specific & Categorical: A rule specific to an ability or item, that modifies damage from a certain category of damage source. For example, an item which blocks an incoming single-target ability every 20 seconds.
- Specific & Numerical: A rule specific to an ability or item, which modifies damage based on some current numbers. Example: reduce damage from enemies who are more than a certain distance away from the hero.
As we know, categorical properties don’t change and they form part of the long-term strategic texture of the game. Numerical properties do, and hence they are open to tactical manipulation.
All players must abide by general game rules, making them formative of the game experience. Ninjas on Battle.net has a rule where heroes are slowed upon taking damage, and this alters the gameplay considerably.
Conversely, any rules which are specific to certain heroes or items can receive varying emphasis depending on how much players interact with them, hence their being marked on the chart as interactive rules.
Of course, there is always the possibility of overlap between the rule classifications. We could have a rule that says “buildings under 50% life take less damage from heroes”; this is both numerical and categorical.
In fact, there is one specific damage modification rule that overlaps with all the categories:
Armours are an adjustable stat that modifies damage flagged with a certain ‘type’. This makes them both categorical and numerical. Armours are formative because they apply to everything in the game, but also interactive because their influence can vary on a per-unit basis. This makes them a very versatile mechanic for introducing weaknesses in damage.
To take it slowly, lets examine a game with no armours whatsoever, and introduce an armour for the first time. Having a single armour type is possible: we end up with damage that ignores armour (“pure” damage), and damage which doesn’t.
This isn’t a good arrangement, because either:
- Pure damage is uncommon and armour protects against most things (armour becomes too valuable).
- Pure damage is common and there’s no instrument to interact with or counter it.
This may have been the case for some old AoS maps which didn’t use magic armour. In those games, abilities would deal a fixed amount of damage, which was countered by building max health to reduce the proportional impact. Not ideal for the designer: max health has so many other uses that it can’t be tuned for countering pure damage in isolation, and players have to deal with fuzzy/overlapping choices.
Having two armour types like physical and magical is enough flexibility to allow high-damage heroes like nukers to exist without breaking the game, because while their damage is high, it has an inherent weakness: either it’s all of the same type and can be countered efficiently, or it’s of split types and becomes difficult to build for.
Tropes and Variations
The most common forms of armour resolve to a percentage modifier on damage. However, we defined armour as “adjustable stat that modifies damage flagged with a certain type”, and we could apply that stat in other ways. For example,
- ‘Physical armour’ could offer a flat reduction on incoming physical damage.
- ‘Magical armour’ could determine the health/duration/cooldown of an anti-magic shield that can be temporarily activated (as an active ability that all heroes have).
These have some quirks (how does physical damage over time overcome a flat reduction?), but there’s nothing wrong with doing it this way.
We’re accustomed to strong correlation between damage types and damage sources: “physical attacks” and “magical spells”. This arrangement means that heroes usually have access to both damage types, even if one is weak. These correlations aren’t a bad thing, as they establish trends, and exceptions which break a trend make things interesting.
Should stats like Evasion and Block count as armour types? Well, they can if you shift your perspective! One way to look at it is that evasion (as a counter) “defines” attacks, in the same way that physical armour (as a counter) “defines” physical damage. The equivalent for evading spells is spell immunity, which is an armour type that operates on a temporary activation basis, like we described above. (In DotA, the duration of spell immunity is a variable value!)
So if you have evasion and spell immunity as two varying stats, that’s effectively an armour system and it covers most incoming forms of damage. Anything that neither evasion nor spell immunity can block is the equivalent of pure damage. There’s no reason why we couldn’t have a moba where this was the primary perspective!
The Third Shield
In most lane-pushing games, the physical/magical split has a huge influence on how players draft, choose items, and use their abilities. Imagine the complexity if a third armour type and corresponding damage was introduced…
Let’s call it Runic Armour.
I’m going to pick some correlations that I think would integrate relatively seamlessly into the existing moba format. Namely, we’ll say buildings and boss objectives have minimal Runic armour, so heroes with Runic damage have an easy time taking objectives, and said objectives get back some physical armour to compensate. This fixes an unhealthy side-effect of having only two armours (which is appropriate for PvP), where heroes with physical dps or which reduce physical armour get to be effective against buildings as a freebie.
We’ll also declare that Runic damage is usually delivered in melee or close range, so heroes need to directly engage objectives to get the most of it (but maybe some hero gets to be the exception to that), and that it’s uncommon, with maybe 15-20% of heroes having native access to it. Catapults probably deal and are weak to Runic as well.
For hero combat, Runic damage would be relatively low (it deals almost full to buildings), but it doesn’t have to be worthless. We can supply items/abilities that apply negative Runic armour to heroes only, or give a high percentage of mana leech on Runic damage: giving Runic abilities the opportunity to fill niches that others don’t.
These are undeveloped thoughts, but I think they demonstrate some of the room that armours have to potentially increase depth, if they’re assigned a purpose and properly integrated.
On a smaller scale, we could define narrow-interest armours: such as a support armour which protects against supportive nukes and reduces the duration of crowd control, or a creature armour which protects against damage from summoned units. Consider a nuke which reduces a hero’s creature armour, or choosing to give towers an on-hit passive that reduces an enemy’s support armour, making them more vulnerable to usually-harmless supports.
At this point we should have a clear understanding of why the two-armour system has been the standard for so long: it adds a fixed factor that the designer can easily tune, and gives damage some much-needed weaknesses. Resistances and affinities are a high-maintenance addition, which most games have understandably chosen to avoid (for hero vs hero interactions).
Introducing new armour stats, or more generally, variable hero stats (which might not correspond directly to damage) helps to to formalise interactions, and improve players’ understanding of modifiers that are currently fixed percentages, and don’t stack intuitively. These stats typically aren’t formalised yet because they’re used infrequently, but as a game expands, having a system in place becomes more valuable. For example, Heroes of the Storm recently reached a point where using percentage-modifier buffs to apply damage modifiers was proving cumbersome, and the game has now moved to a more standard armour system.
We are in a genre where deep mechanical interaction is so important, that exposing or introducing more stats for manipulation feels like a natural progression as games expand. Whether it will be new armour types or otherwise remains to be seen!