Distribution slider implementation #136
marcustyphoon
started this conversation in
Technical notes
Replies: 0 comments
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
-
Right now, the distribution slider is implemented as a set of values that sum to 100, and the optimizer's calculation output is (pseudocode):
What, you may ask, are the magic numbers
1025
,131
, and22
? 1025 isthe effective power of having no gear, buffs, or traits
, 131 isthe burn tick no gear, buffs, or traits
, et cetera.This means that, if you ran the optimizer with no traits, buffs, or gear,
effectivePower / 1025 = 1
,burnDuration * burnTickPerSecond / 131 = 1
, etc, and so your damage result would just be the sum of the distribution inputs (which would be 100), and each part would contribute the stated percentage to the total.This is why I say that, right now, the input percentages represent doing your rotation on a golem naked. If you did that, and put the the distribution into the calculator, it would accurately represent your damage, and as you put your gear back on on both the golem and in the calculator, they would continue to stay in sync.
This, of course, doesn't make a ton of sense. No one is fighting the golem naked to get optimizer inputs; we want to get data from golem benchmarks that use meta gear and builds. Further, we want to easily be able to simulate buff effects that do not scale linearly, like
geomancy sigil gives me an average of x extra stacks of bleeding
.Here is, thus, what we want in the rewrite:
Why is this good?
+0.314 powerCoeffPerSec
.burnStacks * burnDuration = effective burning stacks
, which should match the average number of burning stacks in the golem benchmark, andburnDamagePerSec
, which should match the DPS contribution from burning in the same way.How do you convert from one to the other? (for testing the new code against the old code)
I actually wrote this post just for myself to understand enough to do this section LUL
"Just take the inputs from the old optimizer and divide by the magic numbers it uses, then put them in the new optimizer and verify the results are the same." Nice, that's what I thought.
Beta Was this translation helpful? Give feedback.
All reactions