As is the case with the previous blogs, I ran into a question that I had to answer by using spreadsheets, math, and prayer. This time around, the question came up from the wonderful game Path of Exile. In Path, you have 4 damage reduction systems: armor, block, dodge, and evasion. Armor and evasion come from the gear that you are wearing, block comes from your choice of shield, and dodge comes from passive skills. Block, dodge, and evasion all negate the attack you are taking, whereas armor will reduce the damage by a set amount, based on math (more on that later). Now because I didn’t feel like messing around with 4 variables, and because only 2 come up very often with every class, I wanted to figure out:
What is the best combination of block and evasion?
Now, obviously, 100% of both would be the best, so it becomes rather important to phrase the question. Basically, there is armor that has about both stats in about half the amount of ‘dedicated’ gear. So would you be better taking 50/50? Or maybe 70/30? Or just not worrying about one at all? My mental roadblock with all this was that it seemed like there might be a sweet spot of reducting the damage that you don’t take.
All supporting data here
So lets talk about the math required to figure out the first part of this challenege. We know that evasion has a chance to proc each time, so it will fall into normal distribution, whereas armor is conistent. Now as you SHOULD REMEMBER FROM THE LAST TIME, the difference is negligible in the long run, but is rather swingy in the short run...in theory. Path actually does use psuedo random distribution (a method by which they force the ability to proc after X events, in a way that still results in approximately the same odds). For the purpose of the math I’m doing though, this doesn’t matter. In fact, I can treat block and evasion as exactly the same! The reasoning is that if you took 100 attacks at 100 damage with 50 of either armor or evasion, the armor would block 50 from each, for a total of 5000 blocked, and the EV for evasion would be ˝ of all attacks, for 50 blocked attacks by 100 damage for, you guessed it, 5000 damage. So by putting 10% block to 90% evasion, and increasing/decreasing by 10, I get something like y=x^-2 : an inverse parabola.
Probably about the 3rd saddest time in my life to see a parabola, really
Oh. Well. Looks like this week is pretty short, huh? Assuming each attack coming at you hits for 100, that means that the 50/50 block gives .5*.5, or 25% total damage received. 90 by 10 gives 9%. So really, there is no sweet spot. It is always better to focus on one or the other. Really obvious in hindsight.
In a vaccuum at least. In reality, it gets a little bit more complicated than that, but not by a whole lot. The assumption made throughout that process is that you have access to whatever gear you would need, and the resources to get it all - more often than not, this is not the case. So then we have to understand the value that we are getting from each piece of armor, and in order to get that, we need to know how many pieces, and in order to get that, we have to build a model! Yay!
So lets talk about how these mechanics scale. We would need a curve that start at 0, and infinitely scales at either 100 or 90 - I still haven’t figured exactly how Path does this, as the math that the wiki provides does one thing, but says the other. Path has a 90% cap on the damage you can reduce, but the theoretical amount you can block actually scales to 100%. For reference, the equation I found is “Armour / ( Armour + (12 * Damage) )” So as armor increases, it grows ever closer to being 1, but even at millions of armor, you still take a teensy bit of damage. Evasion’s calculation is actually a lot more complicated, because it uses an enemy’s accuracy stat, so I am going to again make a large, sweeping assumption, and say that evasion scales the exact same way that armor does. Now, you can rearrange the above equation to get Total Armor = (12*Damage*Desired Reduction%)/(1-Desired reduction%), which lets us figure out how many units we would need for any given reduction.
Diminishing returns apply both to how much armor you have, and how much you pay attention to me
So applying this formula to our ratios gives 134 armor required to get to the 10% threshold, and 10800 to get to the 90% threshold, if facing 100 damage. That is an 8,000% increase to get a 900% gain! Hooray! Math! So the same thing applies for evasion. This means that in order to get the 90/10 split, we would need to have a total of 10,934 points. However, in order to get to the 50/50, we only need 2400 points (as 1200 is the 50% point for both). So, we would have to increase our total stats 4 times over to get 2.7 times the gain. Ok, cool. Now we are getting somewhere!
This means that each piece of armor is contributing less ans less as we add more and more. Specifically, our best case example has each piece of armor protecting us from .0313 damage, or 32 units to block 1 damage. The 90/10 example, however, is .0083 or 120 untis to block a single point of damage, supporting our previous 4 to 1 numbers. Neat! So for right now, it looks like it is all up to context right?
Its been too long since I have thought of this scene, or this movie. Needed to be fixed. By math.
So far, I assumed you had a tradeoff between armor and evasion, but what if we lifted that restriction. Well, you wind up with the 60/60 build, which offers 84% damage reduction. This happens to be the same as the 80/20 split, however it does it with 1,500 (!) less units of armor, with an efficiency per unit of .0233, or 42.86 (comparable to 70/30)! Whoa! Then we can step it up to 70/70, which gives 91% (the same as the 90/10 split), for 5,600 units (efficiency of .0163, or 61.54 units per damage reduced). Then we have the 80/80, offering up a hearty 96% reduction at .01 per unit...which is both more reduction than the 90/10, and less cost!
Now unfortunately, I am writing this up late and don’t have access to Excel (or the effort to boot up my work computer to get it), just Google’s charts, so I can’t do a proper regression to figure out all the math for it, so I cant tell you if it is some super cool exponential curve, or something like that, but what I can tell you, for sure, is that it is 100% better to scale your stats equally is possible. Because the systems are set up the way that they are, you are losing value the more armor that you take. However, by abusing the relationships between the two curves, you can make significant gains by balancing your stats. In context, this may be tricky - A vendor may not have a 700/700 armor, only 500/500 or 1000/0. Now, can you imagine what this would have looked like if we had included another system, such as blocking or dodging? What a headache!
In addition, the games methods may not match what this math is exactly...for instance, Path starts each character off with a base 5% dodge meaning that my treating dodge and block as the same is a little bit faulty, plus the enemy accuracy plays a large part into how the mechanic works. Further clean up and asterisks, I did use 100 for the base damage of an attack, and using any other number changes the exact numbers that will come up. However, the scaling is set up in a way where the damage to armor required ratio scales linearly - so the armor required to soak 90% of 300 damage is exactly 3 times the armor required to soak 100 damage.
Other than that though, there you have it! The answer to a question, as solved by math! And your professor said it didn’t have any real world applications.
LOOK WHO CAME: