Pages

Thursday, 1 November 2018

[PARTIALLY OBSOLETE] Game Mechanics: Armour (U23.10.8)


IMPORTANT NOTE: As of U27.2, enemies have far, far slower health and armour scaling at high levels. I have read other players calculate that a current level 9999 Bombard is roughly equivalent to an old level 280 Bombard for EHP. As such, the formulae in this post are no longer accurate, though armoured enemies still easily eclipse unarmoured enemies for EHP. Additionally, Viral and Corrosive procs have been altered, Viral being made more powerful and Corrosive being weakened.

REST OF ARTICLE

In my posts and indeed in much of Warframe's content, a lot of fuss is made about armour, specifically enemy armour. Things like veterans always recommending Corrosive Projection as an aura, and defaulting to Corrosive or Viral + Slash for elemental setups. It is not immediately obvious to newer players why armour is so important. With the help of Warframe's always useful Wiki and some maths, I hope to give a better idea of why armour is the one of the biggest problems at high levels.

TL;DR: The effective health of unarmoured units grows at a quadratic rate with level, while the effective health of armoured units grows at nearly a quartic rate. Armoured unit effective health grows far faster than unarmoured unit effective health, thus at high levels, armoured enemies are far, far tougher.

Corrosive reduces both types of armour with its status proc, and is super effective against one type of armour. Radiation is super effective against the other but does not strip armour. Viral + Slash/HM uses Slash procs to bypass armour entirely, dealing damage directly to health.

Introduction

In Warframe, there are a bunch of different health types, each with their own resistances and vulnerabilities. Just about every unit in the game has one of these health types, for instance the majority of Grineer have "Cloned Flesh", which are especially weak to Viral damage, but resist Gas damage. Some units, mainly Corpus, also have shields, of which there are two types. Shields are essentially a second bar of health that takes damage before the main health bar does. Shields have their own resistances and vulnerabilities, and can be bypassed by a few specific damages. Toxin damage and procs completely ignore shields, making it perfect for an Augmented Shield sortie. Finisher/True damage also ignores shields, which is dealt by melee finisher attacks, certain Warframe abilities, and Slash procs.

Finally there is of course also armour, again of which there are two types: Ferrite and Alloy. Unlike shields, armour does not take damage itself, rather it reduces the amount of damage taken by health. It still influences resistances and vulnerabilities however. Armour does not affect shields. Notably however, Finisher/True damage also completely ignores the damage reduction from armour.

Every unit in the game has some combination of Health, Shields and Armour, though enemies rarely have all three. Grineer are predominantly health + armour, Corpus primarily health + shields, and Infested primarily just health.

Numbers and Calculations
Background
All enemies have a "base" level, the lowest level at which they can spawn. At levels above this base level, their stats (health, shields, armour, damage) are all scaled accordingly, at a roughly quadratic or shallower polynomial rate. The exact formulae are as follows, taken from the Wiki page:
For convenience, base health, shields and armour will be shortened to bh, bs and ba respectively. Current level - base level will be shortened to clbl.
Simply put, higher level enemies are much tougher...but that was obvious and expected. What we want to know here is why armoured units are considered the toughest enemies at higher level.

At this point it's worth quickly mentioning "Effective Health", or EHP. EHP can also take into account any damage modifiers, but for this post the only modifier we really care about is the damage reduction from armour. Suppose a unit has 90% damage reduction, and 100 health. Its DR means that it only takes (100-90) = 10% damage. A hit normally dealing 100 damage would only deal 10, thus while the unit only has 100 health, it will "effectively" have 1000 because it requires 10 x 100 damage hits to kill. The formula for EHP is thus:

Shields
For units with shields, the shield value is just added to the health value as they have no effect on one another.
Substituting in the health and shield formulae gives us:
The term we care about is the clbl term, which is to the power of 2. So the EHP of a unit with no armour is proportional to the square of its level.

Armour
The damage reduction given by armour is as follows:
As an example, 300 armour will result in exactly 50% DR. 900 armour results in 75% DR. The higher the armour, the higher damage reduction.
Substituting this into the EHP formula, we get that:
Substituting in the formulae for health and armour gives us:
There's a bunch of bits and pieces in this mess, but the one we care about is the highest order clbl term, which is to the power of 3.75. So the EHP of an armoured unit is proportial to its level to the power of 3.75.

Comparison and Conclusion
The EHP of an unarmoured unit is proportional to its level to the power of 2. The EHP of an armoured unit is porportional to its level to the power of 3.75. No matter what your health, shields and armour values are, at a high enough level, an armoured unit will eventually have higher EHP than any unarmoured unit. Unfortunately for Warframe, for most units, this level range falls well within what is readily accessible for reasonably experienced players.

We can demonstrate this with an following example. Consider the basic Grineer Trooper and elite Corpus Scrambus units. Their EHP at various levels is as follows:
At starchart levels (up to ~lvl40 or so), the Scrambus retains a significant EHP advantage over the Trooper, which is very appropriate given their rarity and elite status. However, towards ESO, Arbitration, Sortie 3 and Kuva Flood levels, the Trooper catches up to and eventually exceeds the Scrambus for EHP. Considering the Scrambus is the Corpus' toughest unit besides the even rarer Bursa (and very, very high level Oxium Ospreys), but the Trooper is one of the Grineer's basic units, this is quite imbalanced.

This disparity just gets worse when you look at some of the Grineer's heavier units. Consider the Bombard being added in to the same table:
Rarity wise, the Bombard is more common than the Scrambus, more akin to Corpus Tech spawn rates, though of course much rarer than the Trooper. The Corpus Tech is noticeably weaker than the Scrambus in EHP, with lower base health and shields. And yet, at all levels but even more so at higher levels, the Bombard far outclasses the Scrambus for EHP. At level 88, which is well within ESO/Arbi/etc range, the Bombard has nearly seven times the EHP of a Scrambus.

Most notable with armour is the rate at which it scales relative to unarmoured enemies. At high levels, small increases in level can give massive increases in EHP. For instance, at just level 91, a Bombard is already up to over 800,000EHP, while a Scrambus is still only gets up to 114,132EHP.

Counters
Now that we've established that armour is broken at higher levels, it becomes a matter of combating armour. There are many ways to reduce armour, and a few ways to bypass it. Any method that removes or bypasses armour is extremely useful, as ignoring armour, a level 88 Bombard has only 32,052 HP - far lower than a Scrambus.

Corrosive Projection
The easiest way to reliably reduce armour is the Corrosive Projection aura, which reduces armour by 30%. Multiple CPs stack additively, to the point where 4CP, or 3CP all with Coaction Drift, will completely remove all armour from all enemies, with the exception of Armour Enhanced sorties. The benefits from just a single CP are quite substantial however:
At higher levels, a single CP results in a roughly 30% reduction in EHP of high armour enemies, which is a substantial improvement. More CPs are always better, to the point where everything is unarmoured, and comparatively extremely easy to kill. This is why the go-to aura is always CP, and there are only a couple of Warframes that would prefer another aura.

Corrosive Procs

Each damage type has an associated status effect. In the case of Corrosive damage (Toxin + Electric), a Corrosive proc reduces the target's armour by 25% of its current value, permanently. You could proc Corrosive on an enemy, go do the rest of the mission, come back and they would still be missing some armour. 8 Corrosive procs reduce a target's armour by approximately 90% of its starting value, leaving it with a measly fraction of its original damage reduction. Note also that Corrosive procs are not affected by the damage of whatever inflicted it. You could be doing 1 damage or 10000 damage, a Corrosive proc will always reduce the target's current armour by 25%. This is why weapons with high ROF and Status Chance are preferred for Corrosive procs, and why low ROF weapons are generally a lot worse against armour.

Something worth noting here is that since Corrosive procs are permanent, they are unaffected by the Status Duration stat, and thus -Status Duration on a Riven is not detrimental to a Corrosive status build.

Its armour-stripping ability is one of the reasons why Corrosive is one of the go-to elemental combos.

Finishers and Slash Procs
Melee finisher attacks and all Slash procs deal Finisher/True damage. This damage ignores both shields and armour - it doesn't matter if the enemy has 20 armour or 20,000 armour, it will still take the same amount of Finisher/True damage. This is why Viral (Toxin + Cold) + Slash/Hunter Munitions is the second go-to for killing armoured enemies. Viral procs halve enemy health, while Slash procs deal damage through both armour and shields. The release of Hunter Munitions in U22.3 really brought this combo into the spotlight, as previously only weapons with both high Slash bias and high Status Chance could pull off the combo effectively. With HM, any primary with decent crit chance can also do it - notably including weapons with no Slash damage at all. With HM installed, every time the weapon crits, it has a 30% chance of also inflicting a Slash proc. Notably, this is independent of the pellet's natural status chance and application, so you can potentially apply two procs (Slash + another proc) with one pellet. Slash proc damage is calculated from a weapon's base damage, not taking into account how much Slash it has. As such, even completely non-Slash weapons like Arca Plasmor and Lenz can make good use of HM.

Viral damage deals some bonus damage to Grineer, as it gets the modifier from Grineer having Cloned Flesh. It is also far more effective than Corrosive against most Corpus units, especially organics, as it is not resisted by shields, and is super effective against Corpus Flesh as well.

Whether Corrosive procs or Viral + Slash is more effective depends heavily on the weapon. For instance, for something with high ROF and good Status Chance like Prisma Grakata or Supra Vandal, I find Corrosive status to be much faster and more effective. For slower weapons like Latron Prime, Viral + HM is faster and more reliable. Anything with poor Status Chance by default has to rely on HM.

The release of Hunter Munitions in particular really helped to level the field between crit and status weapons against heavily armoured enemies.

Shattering Impact
Shattering Impact is a special melee mod. On any melee hit that deals Impact damage, it reduces the base armour of the enemy by 6. Unlike Corrosive procs, which affect current scaled armour, Shattering Impact doesn't care what level you are. Level 10 Heavy Gunner or Level 1000 Heavy Gunner, it will still take 84 hits to remove all armour (they have 500 base armour). Compared to Corrosive procs, it is far slower at levels below several hundred, but depending on the enemy, does become faster eventually.

A major advantage of Corrosive is that besides being far more efficient for any non-endless content, it also adds a significant amount of damage whereelse Shattering Impact does not at all. SI does have the slight advantage of requiring only one mod slot where Corrosive typically requires two.

Given how slow the majority of melee weapons attack, Shattering Impact is almost never worth using for regular content. Its main advantage is in absurdly high levels, where you're probably better off just running a Covert Lethality dagger, or against armoured enemies that cannot be Corrosive proc'd, the majority of which are bosses. Notably, Hemocyte and Teralyst/Gantulyst/Hydrolyst all have armour and cannot be Corrosive proc'd.

There is one particular melee that Shattering Impact works exceptionally well with...

the Sarpa. The Sarpa is one of only two Gunblades currently in game. Notably, its "shot" fires five pellets, which deal a mix of physical base damage including Impact - allowing each shot to proc Shattering Impact. The other Gunblade, Redeemer, deals purely Blast damage on its shot, thus cannot proc Shattering Impact effectively. Essentially proccing Shattering impact five times per shot, the Sarpa is pretty much the only melee that can make efficient use of SI.

Abilities

There are a number of abilities that can remove armour, though some require augments (such as Ash's Shuriken (1) as pictured above). Some remove a proportion of armour (for instance 70% for Seeking Shuriken), a few remove a flat amount of armour (e.g. Mag's Polarise (3)), and some proc Corrosive (e.g. Saryn's Spore (1)). The majority of them can be made to completely strip armour, whether it's through volume of Corrosive procs, increasing Power Strength high enough (+45% PStr makes Seeking Shuriken remove all armour), or combo-ing with another ability.

Brute Force

If nothing else is possible or available, brute-forcing through armoured units with raw damage is possible, but falls off sharply as levels increase. Corrosive damage is extremely effective against Ferrite armour, while Radiation (Heat + Electric) damage is great against Alloy armour. There is a notable interaction here that makes this method scale better than it would otherwise - damage that is super-effective against armour also ignores a portion of that armour, based on how much extra damage it deals. Corrosive damage deals 75% more damage to Ferrite armour, and ignores 75% of the armour when calculating damage, and the same goes for Radiation with Alloy armour.

With high armour, the armour ignore alone increases damage dealt by up to four times, which is further increased by the damage bonus. As a result, the appropriate damage type can end up dealing up to around seven times the direct damage of a neutral damage type.

This is another reason why Corrosive is such a highly recommended element, not only being capable of stripping armour, but also dealing massive bonus damage to anything with Ferrite armour.

The less effective but still effective damage types, Cold vs Alloy, Toxin vs Ferrite, Puncture vs both, gain partial bonuses as well. They all ignore a smaller portion of the appropriate armour type, and gain a smaller damage bonus as well.

Potential Changes
It seems unfair for armoured units to be the only ones worth worrying about at higher levels. The same actually extends to Warframes as well, as at higher levels, high shields don't make a frame much tougher, while high armour absolutely can. There are a couple of different approaches I've seen and can think of that might help balance them out.
  • Limit the damage reduction from armour to (say) 90%. Beyond 2700 armour then, all it would do is increase the amount of time it takes to remove with Corrosive procs or flat armour reduction. This would cap the ridiculousness of armour scaling at higher levels. The problem with this approach is that against very high armour, the first bunch of Corrosive procs will have no effect on damage dealt.
  • Limit armour to a maximum amount, say 2700. This has a similar capping effect as the first approach, but doesn't make the first bunch of Corrosive procs appear ineffective. The problem with this approach is that after an enemy hits the armour cap, it scales much, much slower than other enemies. Subsequent level increases will not feel anywhere near as dangerous or tough as they should relative to how other enemies grow with level.
  • Reduce the growth rate of armour with respect to level. Instead of the 1.75 exponent it currently has, perhaps drop it to say 1, or even lower at say 0.5. Due to how armour affects EHP, armoured units will still retain a strong scaling factor, but will not scale up as ridiculously fast as they do currently. Naturally, other numbers would need to be tweaked to retain lower level toughness.
  • Change damage types and status procs so that more of them are effective against armour. As is, only Corrosive and Slash scale well against armour, and as a result, many of the damage types are very rarely used. This can also be partly attributed to the overall effectiveness of some elements, but I'll cover that in another post. Making more elements and procs effective against armour in some way would greatly improve build diversity and versatility, which is something relatively lacking currently because of the sheer toughness of armoured enemies.
  • Add shield gating (probably Warframes only) so that shields are actually a usable defence. Shield gating would mean that no matter how strong a hit is, it can only remove a maximum amount of shields, or at least the damage will not overflow into health damage. For instance, if you have 300 shields and take a 500 damage hit, it will strip your shields but not touch health. Alternatively, if your shields have gates every 150 shields, the hit would only strip 150 shields. As is, at higher levels, most Warframes can lose their shields in one to three hits, depending on the enemy. Besides overshields generated by various abilities (which are a little more useful), shields rarely survive more than a split second, and are often not enough to stop you from being downed or killed. This is especially bad for the squisher frames, who at high levels can be completely downed in a single shot. Being one-shot, especially with limited reliable counter-play, is incredibly unfun. In contrast, armour helps health in being a more reliable defence, and the majority of tanky frames in the game either have high armour, or other forms of damage reduction. Adding in shield gating would not only make frames that rely on shields much more survivable, but also make Warframe shields in general better and more useful.
  • Change how headshots work. Instead of giving 2x damage to all weapons, and 4x to all critical headshots, make the headshot multiplier depend on weapon. Additionally, headshots should ignore a portion of armour, again depending on the weapon. For instance, crowd killers like Soma Prime should have a lower headshot multiplier and armour ignore (e.g. 1.5x and 25% ignore), while precision weapons like snipers and especially the precision rifles like Veldt and Latron Prime get a high multiplier (e.g. 4x and 75% ignore). Though this does not fix armour scaling, it does give precision weapons like Semi-Auto rifles a very useful niche in an anti-armour/anti-heavy role.

No comments:

Post a Comment