I think everyone knows at this point that Attack runes are significantly overpowered. Early on it wasn’t as big an issue because players only had access to low level runes. With superior legendary runes now becoming more the norm, the issue has become much more out of balance and visible. I believe that to balance things out, the base damage amount in the battle formula should not include the effect of runes, as this would prevent the “double counting” of Attack in the formula and avoid the current exponential scaling of damage from stacking Attack runes. While this would be fine for PvP, before changing, the impact on PvE would need to be evaluated.
Before talking about the real reason for the imbalance, let me first eliminate one potential reason from consideration. Attack and Defense runes don’t have equivalent values for the same quality of rune. For example, the approximate average Attack value on a Greater 5 Star Legendary rune is 486 (primary stat) compared to only 455 for a rune with Defense on it. So on average, Attack values are about 7% higher than Defense values on equivalent runes. At first this might seem like a problem. However, if you look at the average base Attack and Defense values for all heroes, you will see that average Attack is 1,900 and average Defense is 1,773, again a 7% difference. So I believe they set the Attack and Defense rune values to be similar to average Attack and Defense base amounts on heroes. The reason this isn’t an issue is that the value of a rune can be measured by how much it increases the stat it is modifying (at least in terms of Attack and Defense). So if you look at the relative value of a 486 Attack rune compared to a 455 Defense rune, they both give a 26% increase over the base stat that they are modifying, which means they are equally valuable (assuming the double counting is eliminated, as will be discussed below). You can see my summary of estimated rune values in the following link below.
So let’s talk about the real reason for Attack runes being overpowered, and that is because the current battle formula double counts the value of Attack, creating a situation that as you stack Attack, damage increases in an exponential rather than linear fashion. The current battle formula for a critical attack (assuming 2x crit multiplier) is as follows (ignoring passives, elemental bonuses, etc.):
Damage = (Attack * Damage Multiplier) * (Attack / Defense) * 2
The damage multiplier is generally .495 for basic attacks (.50 if the hero has an epic weapon) and each special ability has its own multiplier.
As you can see, Attack is used twice in the formula, so as you increase attack, damage increases exponentially. Defense reduces the amount of damage, but only in a linear fashion, so it can’t keep up with increasing attack amounts. In the example below, you can see what happens when you have a 1v1 with Shade versus Shade, before and after runes.
Shade has a base Attack of 2,305 and base Defense of 1,660 in my example (first column). With no runes, Shade would do 3,201 damage to another Shade with a critical basic attack. That is calculated as follows using the above formula:
3,201 damage = (2,305 * .5) * (2,305 / 1,660) * 2
Next, I assumed we added five Greater Legendary 5 Star runes to both the attacking and defending Shade. I only used the first two stats for purposes of this example, so for the attacking Shade I added 3,645 to his Attack value calculated as follows (note that the Attack secondary stat has ½ of the value of the primary):
3,645 Attack = (486 * 5) + (243 * 5)
For the defending Shade I added 3,413 to his Defense value as follows:
3,413 Defense = (455 * 5) + (227.5 * 5)
After adding essentially five equivalent runes to both the Attacker and Defender, you can see that the Attacker has a clear advantage based on the current battle formula. After adding the runes, Shade would do 6,979 damage to another Shade with a critical basic attack (second column). That is calculated as follows using the above formula:
6,979 damage = (5,950 * .5) * (5,950 / 5,073) * 2
So the result is after adding runes, it gives the attacker a 118% damage boost, when in theory and to be fair, the damage should not be affected by nearly that much. The situation becomes much worse when you start adding attack buffs, like you get from Ember.
So my suggestion to correct the situation is to simply remove the effect of runes on the base damage part of the battle formula. My revision would make the battle formula look like this:
Damage = (Unruned Attack Value * Damage Multiplier) * (Runed Attack / Defense) * 2
The only difference is in the first part of the formula you would use the Attack value before runes. If you look at the third column in the table above (labeled Suggested Formula), you can see the result of the revision. After adding runes, the damage for a critical basic attack becomes 2,703 as follows:
2,703 damage = (2,305 * .5) * (5,950/ 5,073) * 2
This results in a much fairer outcome, as the change in damage after adding what are equivalent runes is an 18% reduction compared to a 118% increase. You may be wondering why the damage isn’t exactly the same before and after runes if you are adding what are equivalent runes. The answer is because as I said before, the relative value of runes is driven by how much the rune is increasing the base stat it modifies. So in the case of Shade, he has the highest base attack value of all heroes and a lower than average base defense value. So, in this case, the defender benefits more from adding defense than the attacker does by adding attack. The defender is increasing his Defense by 206% (3,413 Defense from runes added to 1,660 base Defense). The attacker is only increasing his Attack by 158% (3,645 Attack from runes added to 2,305 base Attack).
Take a look at another example below, where it is Aria (the lowest Attack value hero) against Kozar (the highest Defense value hero). Note that to keep the two examples comparable, I just assumed you could have 5 power and 5 bulwark runes on each hero.
We would expect Aria to benefit greatly from adding Attack runes because she is starting from a very low value, while we would expect Kozar to not benefit much from adding Defense runes because he is starting from a high value. In the table below you can see the effect of this. The defender (Kozar) is increasing his Defense by only 130% (3,413 Defense from runes added to 2,633 base Defense). The attacker (Aria) increasing her Attack by a whopping 241% (3,645 Attack from runes added to 1,512 base Attack). So in this case Aria is benefitting much more and the result is an increase in damage of 49% (868 damage before runes to 1,290 damage after runes). Even though in these two cases the damage before and after runes is different when adding equivalent runes, this is fine because rune choice should matter. For example, you should be rewarded for adding runes wisely (by adding Attack to a low Attack Aria) and penalized for adding too much of a stat to a hero that is already high in that stat.
So in conclusion, making that one simple change in the battle formula will make runes much more balanced, at least in terms of Attack and Defense. As noted in start, this will significantly reduce hero damage, so the impact on PvE would need to be considered and adjusted for accordingly (likely by reducing health of PvE enemies).