Monday, December 7, 2009

Fun w/ SimulationCraft: Eclipse and DoTs

I'm starting a new series I am calling "Fun with SimulationCraft." I have two goals for this series. The first is to answer some of the more common rotation and proc questions that are difficult to answer with simple math. The second goal is to make myself and hopefully you guys more familure with SimulationCraft. The better we understand the tool the better we understand the results and our DPS.

The Question: Eclipse - Nukes vs DoTs

As we all know Eclipse is a major part of Moonkin DPS. It is also very unpredictable, and impossible to fit into a nice rotation where all the buff's, cooldowns, and dot timers line up. It is inevitable that you will face a situation where your Eclipse has just procced, but your DoTs have only 5 seconds left on them.

What do you do in this situation? Do you spend a GCD and pressious Eclipse time on a spell that is unaffected by the buff, or do you continue to nuke and let your DoTs fall off?

It's a tough question, that I have changed my mind on a couple of times.

My Theory:

I've thought about this issue many times. A while ago I decided that the best course of action was to refresh DoTs if Eclipse had more then 4 or 5 seconds left on it, but skip the DoTs otherwise. My reasoning is fairly simple. When you ask a couple of questions.

What do you lose by casting a DoT when the Eclipse buff is up? - You lose a GCD that could have been used to cast a Nuke buffed by Eclipse.

What do you gain by casting a DoT when the Eclipse buff is up? - You gain the damage that the DoT will tick for until the end of the Eclipse buff.

When I asked myself these two questions I realized something. I'm not asking if I should cast a DoT. I'm asking when I should cast a DoT. The choice is do I cast it during Eclipse or right after Eclipse expires. I can extend this logic a littler further also. If I make this choice regarding the DoT, I'm making a similar choice about the Nuke. If I cast the DoT during Eclipse, I will be casting a Nuke right after Eclipse expires. If I skip the DoT during Eclipse, then I'm losing a Nuke after Eclipse expires because I need to refresh the DoT.



What I realized was that when I cast a DoT, I am not preventing a Nuke from being cast. However, I may be preventing a Nuke from being buffed by Eclipse. So, the question is which is more valuable: damage from increased DoT uptime or the addtional damage from an Eclipsed Nuke?

I won't detail the math but i will use a quick example to show you how I made my choice. On average my Wrath casts hit for 6377 damage without Eclipse. With Eclipse they hit for 9030 damage on average. There for I lose 2653 damage if a wrath cast is pushed out of the Eclipse buff by a DoT. My Insect Swarm ticks for 1280 damage on average. It would take roughly two ticks of IS to make up for the lost Eclipse damage. Since IS ticks every 2 seconds, if I had more then 2 seconds left on Eclipse then casting the DoT made more sense.

Obviously this is an over simplification of the issue. This is why I haven't published anything in the past regarding this question. Now SimulationCraft hs here to make me look like a genius or an idiot.

What SimulationCraft Says:


Once again I used my self as an example and I asked multiple questions. Here is the results from the first set.






ConditionDPS
Never Skip8267
Skip on Opposite8175
Skip Always8061


Never Skip means that I refresh the DoT when ever it is down. Even if Eclipse is up with only a few seconds left.
Skip on Opposite means you refresh the DoT only to take advantage of Improved Insect Swarm. Therefore, if Lunar Eclipse is up you would refresh Moonfire but not Insect Swarm.
Skip Always means you skip both DoTs if either Eclipse buff is up.

As you can see from the table above, the results are leaning towards refreshing your DoTs instead of skipping them, but we have another question to ask. As I said before I will skip the refresh if I have only a few seconds left on Eclipse. Is that the right choice?


















Seconds RemainingDPS
1 sec8278
2 sec8277
3 sec8277
4 sec8279
5 sec8273
6 sec8264
7 sec8273
8 sec8252
9 sec8255
10 sec8236
11 sec8219
12 sec8186
13 sec8180
14 sec8142
15 sec8058


These results show that I can do slighly better DPS by skipping the DoTs whe I have 5 or few seconds left on Eclipse, but the DPS increase is very minor. Even if you start skipping your DoTs with 9 seconds left on Eclipse your only losing a tiny amount of DPS.

TL:DR

Well, the good news is I don't look like an idiot, but my method wasn't a huge success either. Skipping my DoTs with just a few seconds left on Eclipse did result in a slight DPS increase, but its not anything that will make or break our rotation.

The main conclusion I will draw from my tests is that the loss of DoT uptime is a bigger DPS loss then not having a nuke affected by Eclipse. If you skip your DoTs entirely while Eclipse is up it is roughly a 2.49% DPS loss.

Do It Yourself: If you would like to run this analysis for yourself. Here is how you do it.

Go download SimulationCraft from here.

SimulationCrafts GUI interface has gotten a lot better since I last posted on the tool. On the Import tab you can down load your toon from the Armory or WoWhead. Importing your profile will populate the Simulate tab with your script. The default setting is to always refresh DoTs.

To always skip DoTs replace the Moonfire and Insect Swarm lines with:
actions+=/moonfire,if=!ticking&!buff.lunar_eclipse.up&!buff.solar_eclipse.up
actions+=/insect_swarm,if=!ticking&!buff.lunar_eclipse.up&!buff.solar_eclipse.up

To skip DoTs when the Opposite buff is up change the lines to:
actions+=/moonfire,if=!ticking&!buff.solar_eclipse.up
actions+=/insect_swarm,if=!ticking&!buff.lunar_eclipse.up


To skip DoTs when when there is only 4 seconds left on either Eclipse change the lines to:

actions+=/moonfire,if=!ticking&(buff.lunar_eclipse.downbuff.lunar_eclipse.remains>4)&(buff.solar_eclipse.downbuff.solar_eclipse.remains>4)
actions+=/insect_swarm,if=!ticking&(buff.lunar_eclipse.downbuff.lunar_eclipse.remains>4)&(buff.solar_eclipse.downbuff.solar_eclipse.remains>4)



Finally, I would like to say thanks to Dedmonwakeen and Starfox the Creater and Druid developer of SimulationCraft for walking me though some of the changes that needed to be made.

7 comments:

lissanna said...

Graylo, right now, mod timers like Squawk and Awe aren't able to detect & time Eclipse for us because of a bug causing Eclipse procs to not show up in the combat log. Since I haven't seen you post about it, I thought I would bring the problem to your attention in hopes that we can figure out temporary mods that might be able to catch the buff appearing on us, and help until they fix the combat log problem.


http://forums.worldofwarcraft.com/thread.html?topicId=21626503727&sid=1

yukiji said...

I'm assuming all this was worked out with eclipse doing it's 30% boost/crit. How do you figure the increase to 40% will impact it?

If not, disregard all that gobbleygook i wrote.

Jay said...

You're claiming to detect a DPS difference of 12 out of 8267 in your simulation? 0.15%? While you didn't post the number of trials you ran or the standard deviation, I suspect it's somewhat larger than that.

I think your Simcraft test demonstrates what everyone was generally going by already--it's inconclusive whether refreshing at the very end of Eclipse is good or not, but the difference is tiny either way.

Anonymous said...

I've been messing around with SimCraft, but was having trouble adjusting my rotation settings. Thanks for the post - now I can tinker more effectively. :)

Dentex said...

From my experience, the only dot you need to try to keep up ALL the time is Moonfire. Mainly because of the crit buff given from idol, and also because of the 2t9 set crit chance on its dot. You can afford having it off max 5 secs, because the idol buff lasts 10 seconds. Regarding IS, if it expires while spamming Starfire, its not a big deal since it gives only more crit to that spell (you already have plenty of that from eclipse). IF on the other hand, must be UP all the time while spamming wrath, since it boosts dmg.
A nice opening rotation is MF, SF, IS and spam wrath. If you get eclipse, IS and MF will expire together.
Dentex, Dragonblight

Iltheril said...

Hi i'm Iltheril from Hyjal-EU.
I'm french sorry for my english^^

When you choose to refresh a dot you may also loose nature's grace proc for your next nuke. Does it change anything?

Maestro said...

Since this is re-emerging over on the Moonkin Repository, I was wondering if you would be able to provide the information that Jay is asking for. How many trials did you run? What was your mean (I am assuming that is what you posted)? What was the standard deviation or standard error?

I ask this because with a small sample size, we might be looking at results that are again, highly impacted by RNG. If the sample size is large, then knowing the standard deviation of the set will let us decide how menial a 12 DPS difference really is. I have a sneaking suspicion that it is truly a nominal value. Thanks,

~Relevart