Wednesday, September 8, 2010

Fun W/ SimulationCraft: WotLK Rotations

With Cataclysm right around the corner some of you maybe wondering why I'm writing about a WotLK rotation when we know everything is going to change. I agree. It seems silly, but I was recently challenged on the rotation I've been using and that prompted me to do some more research. In the off chance that some of you still care about WotLK, I thought I would post my results and how to do the tests for yourself.

The Theory:

If you are a reader of the Moonkin Repository you may remember a post that RandomSmo made a month and a half ago regarding when is the best time to cast Moonfire and Insect Swarm. The question he asked was: Is it better to cast the DoTs outside of Eclipse or is it better to only cast Moonfire at the beginning of Lunar Eclipse and only cast Insect Swarm at the beginning of Solar Eclipse?

The theory behind the question is that moonkin DPS is driven by Eclipse uptime. Therefore you want to do everything possible to maximize the uptime of Eclipse. Casting a DoT while Eclipse is down just delays procing the next Eclipse, and therefore reduces the uptime of Eclipse.

I agree that the theory is very counterintuitive. If moonkin DPS is so driven by Eclipse then why cast something that is not affected by Eclipse?

There are a couple of possible reasons. First, in the case of Moonfire casting a DoT doesn't necessarily prevent a Starfire cast from getting Eclipse. If you have 1.5 seconds left on Eclipse there is no way that Starfire will benefit from that remaining buff. It would have been better to have Moonfire ticking the entire duration and gotten the same number of Eclipsed Starfires. Second, in the case of Insect Swarm there were synergies to consider. Wrath does 3% more damage when Insect Swarm is on the mob. So, it is possible that if you combine the 3% buff with the added uptime of Insect Swarm that you would make up for the lost Eclipsed Wrath.

Admittedly there were some problems with the simulations RandomSmo ran. However, when I ran some quick tests in July correcting for his mistakes I got smaller, but similar results. I then accepted the results, but as I said before was recently challenged regarding some of the strategies I was using. With that I desided I would redo the tests to see if the results had changed.

What SimulationCraft Says:
All simulations were run using Graylo with full raid buffs, as a 5 minute fight, and with 10,000 iterations.

A quick look at Starfall and the default set up: I ran 17 different rotations through SimulationCraft. In those tests I was primarily changing when and how DoTs were applied, but I do want to make a quick comment about the default set up for SimulationCraft.

If you import your toon right into SimulationCraft the default rotation assumes that you don't cast Starfall during Eclipse. When I ran Graylo using the default rotation I had a DPS value of 12,304. When I had it cast Starfall when ever it was off cooldown I had a DPS value of 12,351. This indicates that it is better not to delay casting Starfall to cast it out side of Eclipse. However, I would like to present a couple of reminders first.

First, the SimulationCraft tests I ran assumed a Patchwerk style fight, and 7 out of 12 ICC bosses have specific add phases where it is better to use Starfall. Second, big delays over long fights will add up quickly. If you delay Starfall 3 or 4 times for 10 seconds or more over a long fight you've probably lost a Starfall cast in that fight. Shorter delays and delays on shorter fights will have less of an impact.

Here is the general rule I would use. On a Patchwerk style fight try not to delay Starfall too much, but feel free to delay it a few seconds if it becomes available at the end of an Eclipse buff.

When is the best time to cast DoTs?
In all of the simulations below I assume that Starfall is cast when it is available.

These are some of the measures I used when I asked some similar questions last December.

ConditionDPS
Never Skip12,298
Skip on Opposite12,419
Skip Always12,426

With "Never Skip" the tests refreshed the DoTs when ever they were down. Even if Eclipse is up with only a few seconds left. With "Skip on Opposite" DoTs were only refreshed during Eclipse if they take advantage of Improved Insect Swarm. Therefore, if Lunar Eclipse is up you would refresh Moonfire but not Insect Swarm. With "Skip Always" the tests skip both DoTs if either Eclipse buff is up.

If you remember that post you can see that the results are a bit different this time around. In December there was an obvious advantage to trying to keep a 100% uptime on DoTs. Now our DoTs are relatively week and it is better in some cases skip them in favor of Eclipse buffed nukes.

Smo's Theory: So how does RandomSmo's theory stack up against these baseline values?

ConditionDPS
Only at Start of Same Eclipse12,320

When tested against my toon, Smo's theory comes about 106 DPS behind the Skip Always strategy above. That means the Skip All Strategy provides about 0.86% more damage. That isn't a huge difference but it is clear to me that it is an inferior strategy.

Can we improve on the Skip Always Strategy? Now that it is clear that Smo's theory is an inferior strategy, the question is: Can the Skip Always strategy be improved upon? As I said before I ran about 17 different rotations through the simulator. Here are the most telling results.

ConditionDPS
Cast Either DoT if Eclipse is Down or has more then 4 sec remaining.12,338
Cast MF for 100% Uptime, Cast IS only when Eclipse is down.12,392
Cast IS for 100% Uptime, Cast MF only when Eclipse is down.12,335
Cast DoT if Own Eclipse has more then 4 sec remaining or if Eclipse is down12,443
Cast MF if Lunar Eclipse has more then 4 sec remaining or if Eclipse is down, Cast IS if Eclipse is down12,438
Cast IS if Solar Eclipse has more then 4 sec remaining or if Eclipse is down, Cast MF if Eclipse is down12,427

Judging from these results there doesn't appear to be a way to significantly improve on the Skip Always Strategy. There do appear to be some slight improvements when casting Moonfire at the beginning of Lunar Eclipse, but these differences probably fall within the margin of error and are very slight even if they don't.

TL-DR:

In my most recent testing Smo's theory of casting DoTs only at the beginning of Eclipse does not appear to be beneficial. I was able to get noticeably better results from SimulationCraft using a strategy where you always skip DoTs during Eclipse. SimulationCraft did show slightly improved results using a strategy that would cast Moonfire at the start of Lunar Eclipse, but the results probably fall within the margin of error.

For Starfall, SimulationCraft defaults it to only be cast when Eclipse is down. However, I got better results from SimulatonCraft if Starfall was cast when it was off cooldown. However, I would be careful when applying these results. It is probably advantageous to make small delays in casting Starfall during shorter fights because you are unlikely to reduce the number of Starfalls you will get in the encounter. Making longer delays, or delays during longer fights is more risky because you risk losing a Starfall cast during an attempt.

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

Go download SimulationCraft from here. The Import tab will allow you to download your toon from the Armory, Rawr, or WoWhead if you have a profile set up there.

The Default Setting for Moonkin in SimulationCraft does not cast Insect Swarm unless you are moving. So for the first simulation you run you will want to add a line for Insect Swarm below the line for Moonfire. For every test after that just replace the Moonfire and Insect Swarm lines with the lines I provide below.

For 100% DoT uptime (Never Skip Strat), replace the lines with:
actions+=/moonfire,if=!ticking
actions+=/insect_swarm,if=!ticking
For the Skip Always Strat, replace the lines with:
actions+=/moonfire,if=!ticking&!eclipse
actions+=/insect_swarm,if=!ticking&!eclipse
For the Skip on Opposite Strat, replace the lines with:
actions+=/moonfire,if=!ticking&(buff.solar_eclipse.down)
actions+=/insect_swarm,if=!ticking&(buff.lunar_eclipse.down)
To run Smo's Theory, replace the lines with:
actions+=/moonfire,if=!ticking&(buff.lunar_eclipse.react)&buff.lunar_eclipse.remains>10
actions+=/insect_swarm,if=!ticking&(buff.solar_eclipse.react)&buff.solar_eclipse.remains>10
For the Cast DoT if Own Eclipse has more then 4 sec remaining or if Eclipse is down Strat:
actions+=/moonfire,if=!ticking&(buff.lunar_eclipse.down|buff.lunar_eclipse.remains>4)&(buff.solar_eclipse.down)
actions+=/insect_swarm,if=!ticking&(buff.lunar_eclipse.down)&(buff.solar_eclipse.down|buff.solar_eclipse.remains>4)
From here you can mix and match the different bits of code to get the other results I had. One thing to remember is that this is a simulator so you may not get the same results each time you run it.

14 comments:

Clovis said...

Sup Graylo,

Long time reader here :) At first it was for simple Moonkin-y informational purposes, but as of late I like reading your blog just for the hell of it.

This is the first time I comment on someone's blog :o

Anyways, a few comments about Starfall. For people with lesser gear, having Starfall up during Eclipse can be a great bonus, as it works toward 100% Nature's Grace uptime. For those with less crit, this can be a great DPS boost when Wrath (or Starfire D:) doesn't crit during Eclipse and you'd otherwise lose NG.

Keep the posts coming mate :)

Anonymous said...

I'm a bit confused. The highest DPS value listed in your grid is for "Cast DoT if Own Eclipse has more then 4 sec remaining or if Eclipse is down", but you gloss over this and only talk briefly about slight improvements from casting Moonfire at the beginning of Lunar. The highest DPS listed in your grid is also the one that makes the most sense without running any simulations at all, and as far as I know is what most moonkins do anyway.

Graylo said...

@Anon1

First, if my conclusions are just common sense and unimportant to you, then good for you. However, if you would like to understand the context of my post I suggest you re-read (or possibly read for the first time) the first paragraph and the Theory section.

Second, the four highest values I listed are all within 17 DPS of each other. That is just over 0.1% difference. That is very slight and as I indicated in the post is unlikely to be statistically significant. If you want to try and take anything out of the numbers you will notice that the two rotations that include casting MF during lunar Eclipse are very slightly higher. While, the rotation casts IS during solar was very similar to the skip always. But again, these differences are very slight and unlikely to be statistically significant.

Zojun said...

Statistical significance is of course defined by a confidence interval. As you say, our DoTs are so weak that choosing correctly when to apply them is minor DPS gain, but still worth calculating. They're also so weak that achieving statistical significance may be nigh on impossible without applying a ridiculously restrictive CI.

In this case, what might not be statistically significant (given the minority of any changes given our DoTs are so weak) is still significant in how we actually carry out our rotation, to try and squeeze out as much DPS as possible.

This just reaffirms the notion that past a certain point during an Eclipse, it's just not worth even casting the DoT for the IFF effect; a fair number of us will be over the Lunar crit cap so the 3% is unneeded, and I remember reading on EJ that you need ~5/6 Wraths under IS to make it worthwhile casting that; the 4s number seems to confirm this. It's helped me put a firm number on DoT refreshes during Eclipse and for that, I thank you.

Just remember in future to think about statistical significance and what it's actually telling you. Something that changes DPS by 17 maximum in a count of over 12,000 will never be "significant" at a normal level.

Zojun said...

I also meant to add about your iterations.

If you did this over 1000 times, I assume they came in the same ranking every time. If so, this is enough evidence at such a high count (for such a low DPS difference) to employ the category listed highest.

Graylo said...

@Zojun

"Just remember in future to think about statistical significance and what it's actually telling you. Something that changes DPS by 17 maximum in a count of over 12,000 will never be "significant" at a normal level."

I've already said several times that the results I saw when I tried to improve on the Skip Always strategy are probalby not statistically significant. I said it twice in the post and I've said it once in the comments. This is the fourth time I am saying that a 17 DPS change in a value over 12,000 is probably not statistically significant.

"If you did this over 1000 times, I assume they came in the same ranking every time. If so, this is enough evidence at such a high count (for such a low DPS difference) to employ the category listed highest."

As I said in the post I did the simulatins with 10,000 iterations. And yes I did run them several times with similar results.

Farfalette said...

Very good post !
I am currently thinking of testing another setup :
- IS glyphed, MF unglyphed, both starfall glyphs
- while moving, renew IS + spam MF
- outside moving, cast one IS at the end of each lunar eclipse. Never cast MF outside moving.
The purpose of this setup is to slightly increase dps while moving,
slightly increase aoe power which might be usefull in HMs context.

The problem with this rotation is that i will periodically loose the idol stacks, and i wonder if SimulationCraft takes this in consideration ?

Zojun said...

I feel like you've missed my point. I'm not disputing that the result isn't statistically significant (as you've pointed out many times) but that that doesn't mean it isn't significant to us.

The changes you made weren't STATISTICALLY significant, but they're significant to us and our application. The article to me almost does away with the extra work you put because the result wasn't statistically significant; but an increase of even 17 is 17 more DPS than we would have without it.

Keep the good posts coming.

Clovis said...

The thing is, 17 DPS is very small and you'd need a perfect rotation with a perfect environment to achieve that tiny gain.

Add in a little movement, throw in some pushback damage, and suddenly your numbers are different. The 17 DPS will be even less noticeable in a real raid setting than in the simulation, if even existent.

Raysa said...

you've got some mistakes in the last "rotation". in both lines is a )&( missing. nearly got crazy. ^^

Graylo said...

@Raysa

Thanks for pointing that out. However, it was actually missing a | not a )&(. The | means "or" in SimulationCraft code, and the condition I want is Eclipse down or has more then 4 remaining.

PPK said...

I think at the highest point in a moonkin raiding situation you would favor regularity over "higher" dps if the benefit is small.
In my current rotation I cast MF and IS at the cast after their opposite eclipses. This rotation is the same always and lets me focus on game mechanics and maximizing cast time over the course of the fight. If some theory came up that promised 30 more dps if I dropped IS on every other rotation I probably would not switch to this rotation simply because it would add complexity with small gain.
So this gain of 17 dps probably isn't worth changing what your doing.

Anonymous said...

I've noticed my DPS unaffected or slightly increased by skipping a dot (usually IS for solar) particularly during hero as long as it's up often enough for our relic. The slightly increased uptime on languish, OOC proc chances etc. seem to compensate for any potential loss of crit once you're mostly in 277 lvl gear.

What this makes me wonder about with dots having decreased value is if it would be a DPS increase to drop a couple pts from IS and put it towards Owlkin Frenzy for H LK. I've noticed with 1 pt in OF it procs at least 7 times during the encounter. I'd mostly drop IS from my rotation (our tanks don't rely on it) and spam MF during movement and for the relic proc.

Not that it probably matters much. We're talking about very slight differences in DPS.

Anonymous said...

I've also noticed a discrepancy with dot dps. Dropping them both entirely out of the rotation (with mostly 264/245 gear) doesn't seem to drop DPS by a whole lot. Dropping just Insect Swarm and keeping Moonfire in with the moonfire and starfire glyphs actually raised my DPS significantly (about 28%). If you know everyone in your raid is hit-capped without the unglyphed IS debuff, dropping it entirely from talent picks also frees up points for other things like Owlkin Frenzy or mana regen. So am I missing something here? I'm wondering why everyone keeps suggesting rotations with both Moonfire and Insect Swarm when in practice I've found dropping Insect Swarm improved dps.