Calculating the damage from Idle Heroes
I'm trying to figure out how the damage is calculated in a game, but have been unable to. I'm not sure if this is the right platform to ask this. If not, pls let me know in the comments and I'll delete the question right away.
I have tested it with 3 characters, fighting 2 other characters separately.
DMG damage done to defender ATTACK attack power of the attacker ARMOR total amount of armor of the defender LVL lvl of the defender REDUCTION total amount of dmg reduced (ATTACK - DMG)
The data is as follows:
DMG ATTACK ARMOR LVL REDUCTION Norma 9.142 13.342 1.064 160 4.200 OD-01 4.305 6.284 1.064 160 1.979 Vesas 3.222 4.703 1.064 160 1.481 Norma 9.674 13.342 1.039 180 3.668 OD-01 4.556 6.284 1.039 180 1.728
Someone pointed out the formula should roughly be like:
reduction in % = ARMOR / (200 + LVL * 20)
But this formula is off by a small margin and was hoping I could find the exact formula to calculate the damage. Anyone an idea how the DMG is calculated from ATTACK, ARMOR, and LVL?
Solution 1:
EDIT: Turns out the formula you originally had was just a little off, so all that follows was a bit overkill XD. Oh well I had fun thinking about it. The actual formula is
reduction in % = ARMOR / (180 + LVL * 25)
ORIGINAL: No one else has offered up any answers for you, so while I cant give you an answer, I can offer some insight on how you can answer it yourself. This is more hypothetical rambling than an educational answer, so read on if you desire.
While I don't have an actual solution to your question, (I wish I did, but the devs keep the details very well hidden), I do have a suggestion on how you may go about trying to solve it. I suggest firstly making the assumption that the error stems from the constants used in the formula having different values than originally assumed. We assume the format of the generic function you quoted (with constants base & mult, and variables ARMOR & LVL):
reduction in % = ARMOR / (base + LVL * mult)
Popular opinion is that the constants have values near
base = 200 mult = 20
Perhaps for example the formula is closer to
reduction in % = ARMOR / (180 + LVL * 25)
The value of mult (keeping in mind typical level ranges of 140-200), the ratio of base against typical armor ranges, and the ratio of base against mult each are important relationships that determine the fine details on how the formula works.
You can attempt to reverse engineer these relationships if you find the right battles. (Best way I imagine would be working with a friend [or dupe account] and doing VS fights, this way you can control the heroes on both sides of a fight, AND you can find or set the stats of all units involved.)
If you can find a way to modify one variable at a time, it is possible the true formula can be pieced together (or at least one that is vastly more accurate)
Attacking a variety of LVL 1 heroes with different armor values can possibly find relationship defining base , Attacking heroes with the same armor value but having different LVLs can possibly find a relationship for mult.
You can go deeper, possibly comparing two heroes with identical armor but differing low LVLs (ex. LVL 1 v LVL 2); THEN another test on two heroes with equal armor but differing high LVLs (ex. LVL 99 v LVL 100); and using any comparisons between the two situations to try deriving the ratio of base against mult.
If the structure of the actual damage formula turns out to be entirely different from the assumption,
reduction in % = ARMOR / (base + LVL * mult)
the structure, parameters, and operations that shape the true formula can be still be concisely found then pieced together if you can manage to preform tests with only a single variable.
If you can't vary just one variable, it becomes immensely more complex trying to derive relations from two variables, thought it can still be done with sufficient skill in the appropriate math field. It can be simplified if you can find two variables that are already closely linked (such as the armor increase with each LVLup), as you may be able to treat the two as a single compound variable.
To just throw a couple ideas and suggestions out there, sensible or not, here are some ideas for relations that may possibly have relevance to how the actual formulas work (There is no evidence supporting any of these, they are purely made up in my head. They could be right, who knows?):
NOTE: the character '∝' means "is proportional to" (Many of these are just a relation, not a whole formula. The values of these might be plugged into another function to get the equivalent % reduction) reduction ∝ (ARMOR + LVL * mult) reduction ∝ (mult * LVL - base + ARMOR) / LVL reduction ∝ (LVL - base + ARMOR) / (mult * LVL) reduction ∝ (mult * LVL + (-base + ARMOR)^(3/2)) / LVL reduction ∝ (mult * LVL + (-base + ARMOR)^(3/2)) / (mult * LVL) reduction ∝ (LVL + (-base + ARMOR)^(3/2)) / (mult * LVL) reduction = (ARMOR* (ARMOR/(6*LVL))^(3/2) / (200 + 20 LVL) reductionPercent = sqrt((LVL+100)/200)*10*e^((ARMOR/(6*LVL))^(3/2))
I spent a little time "inventing" the last formula. The exponential constant e has value of 2.72, multiplying by 10 gets 27.3 which as a percent is very near baseline resistance (about 1/4). So the above function gives a percent from an exponential function (where the exponent is based on the ratio of ARMOR to a typical armor value), multiplied by ten, and then multiplied by another term based solely on the level of the hero.
It isn't related to the actual damage formula, but instead is an alternate formula that exaggerates the effectiveness of additional armor. (if the game used this formula, I might try going for armored heroes for once)
Because of the limited resources available in the game, there isn't much you can do if you want to get a more accurate formula besides rigorous experimentation within the game or messing with different forms of functions and trying to find one that fits what is observed.
Unfortunately I don't have a friend to cooperate with, nor the resources to be able to experiment myself, but if you REALLY want to know you can always try to find the answer yourself.
If you do happen to solve some of the game's formulas, don't forget to share that wisdom with the rest of us? ;D
OVERDUE EDIT: The account this comment was posted with is no longer used, my main account now is https://gaming.stackexchange.com/users/243096/abmays?tab=profile . If you have any questions contact that account.