In this article, I am going to show that a very simple Havoc rotation is also the optimal rotation. I decided to do this after looking at the current default SimC APL, which I feel is unnecessarily complex for a spec that has a very simple action priority.
The first step is showing how to effectively compare simulations to combat logs, and make sure that we can make a simulation that matches what players are doing. Second, I will compare the same simulations in AMR and SimC and highlight some differences between the two simulation models. Third, I will compare the actual rotations and show that you can achieve practically identical results with two very different-looking rotations.
I have two rotations I will be referencing for this article. The first rotation is one that I have developed mainly on my own, using the AMR simulator:
The second rotation is the APL used by default in SimC (snapshot at time of this post):
To test these rotations and do comparisons, I am going to use a top geared and top ranking player who is using some of the most common gear you see in top parses. I will switch up the gear for specific tests as needed.
Part 1: Comparing Simulations to Combat Logs
Lets start with a real log:
Simulating this log in AMR we get the following results:
AMR Rotation, 1054k DPS
SimC APL, 1055k DPS
Both rotations do the same damage, with the same ability breakdown, buff uptimes, etc. There is a 2.5k DPS margin of error to keep in mind when doing these comparisons. We use the “Krosus no miss” script because you suffer no dual-wield miss penalty on Krosus, which has a very large impact on the results when using Demon Blades.
Note that it is very easy to compare simulations to logs in AMR with the “Import from Log” option on the simulation run page. This will automatically load the exact gear the player was wearing for the fight and set the fight duration to the exact duration of the fight in the log. It will also pick the correct boss script if it is a boss we have a script for. You will still need to manually select the correct consumables to match the log.
Why the substantial difference between these simulations and the log?
- He had Demon Soul to start the fight.
- The boss stayed above 90% health for twice as long, allowing for a lot more damage from Cinidaria, The Symbiote. Also, getting lucky crits/procs during that initial burn will also affect Symbiote’s damage. Here is a simulation with the same initial burn time, and we see about the same number of procs, but this log had higher average damage per proc due to good luck and Demon Soul. You set this in the boss script itself – you can copy the script and adjust the length of the initial burn and/or execute phases.
- Higher than average Annihilation crits. Getting more crits means higher damage and more fury. This then leads to getting an extra Annihilation and Chaos Strike. When comparing logs to simulations, you need to be mindful of the cascade effect that good or bad luck on crits has for Havoc DPS. This, along with the non-rppm nature of Demon Blades, accounts for the larger than average (compared to other specs) standard deviation for Havoc DPS.
- Almost all Havoc damage is based of weapon damage, which gives it a range on top of the randomness from crits. Looking at the log, Chaos Strike damage was lower than average, Annihilation much higher. Symbiote was much higher as we saw already. Etc.
- The fury gain from Demon Blades is random. We’d expect 1430 fury on average from the procs in this log, but this person gained 1512. One more Annihilation and one more Chaos Strike, on average, would increase DPS by almost 16,500, to put this in perspective.
So, when you look at a log and see a big difference from the simulation… that doesn’t necessarily mean the simulation is bugged or incorrect – we just need to identify the differences. The big differences are the initial burn length, Demon Soul, and lucky crits. We are calculating the standard deviation with a 95% confidence interval. This mean that 68% of the time, we expect results to be within one standard deviation of the simulated DPS and 95% of the time we expect results to be within two standard deviations. Seeing high-ranking logs well above the average simulated DPS is not unexpected. If we simulate with the longer initial burn and Demon Soul to start the fight we get 1154k DPS with a standard deviation of 81k. This log falls well within one standard deviation. He had a monk giving Master of Combinations also, which I didn’t include, but would account for another 5k or so.
Comparing simulations to logs requires a lot of investigation sometimes. When comparing, my first assumption is that I missed something in the log, not that the simulator is incorrect. As we see with this example – it seems like the simulator might have been way off at first glance, but further inspection shows us that all is well.
Part 2: AMR vs. SimC Comparison
Now we will test this character in SimC (keep in mind that SimC has no Krosus script, so we’ll be doing a “Patchwerk” comparison instead):
AMR Rotation, 1050k DPS
SimC APL, 1063k DPS
Note that I have provided config files that include my settings, so that you can run the simulations for yourself. The only way to share actual SimC results is to save the output as an html page and then host it on a website. If you get different results than what I have, a setting must be different somewhere – but I think these config files should override any settings you have that are relevant.
Also be aware that an item that causes seemingly large differences between AMR and SimC is Cinidaria, the Symbiote. By default, SimC compresses the initial burn portion of a fight. So does AMR. But, they don’t do this in the same manner. To do a true apples to apples test between the two simulators with this item, the best thing to do is take out any compression of the start of the fight. Use fixed_length=1 in SimC and make a custom script for AMR that removes the shortening of the starting 80% health. I have set up these examples correctly do do this comparison.
What is different between the two APL/rotations in SimC? Looking at the results, the main difference I see is that the SimC APL gets more Fel Rush uses (almost 4 more uses). What happens if we do the test again, but comment out the Fel Rush lines (most players don’t use Fel Rush much, if at all, on Krosus fights)?
AMR Rotation, 1025k DPS
SimC Rotation, 1037k DPS
The main difference is now just the extra Felblade use and the extra Chaos Strike. How much damage is that worth? Felblade is 480,000 damage/execute and Chaos Strike is 890,000 damage/execute. Over a 149 second fight, that is about 9k DPS, which accounts for almost the whole difference. There are fractionally different uses of other abilities that account for the other 3k DPS.
This brings up an important point: It is easy to look at these results and say: Obviously the SimC APL is way better, it does 1.2% more DPS! But… when we look at the actual difference between the two – the difference is ONE Felblade which leads to ONE extra Chaos Strike. This is a source of a lot of debate out there between theorycrafters – is this difference meaningful? I am going to introduce another data point to tackle this question: do the same comparison in the AMR simulator.
Here is the exact same Training Dummy(Patchwerk) simulation in AMR with Fel Rush:
AMR Rotation, 1082k DPS
SimC APL, 1083k DPS
Without Fel Rush:
We see the two rotations give the same DPS in AMR, but are about 1% apart in SimC. This tells us that the two simulators are not simulating exactly the same, which is to be expected, since they are two different models of the game. It is tempting for people to want to label one as “right” and one as “wrong” – but in my experience this comes down to different design choices in the two projects. Simulators are approximations of the game, no matter how detailed they become.
Detailed Comparison between AMR and SimC Havoc Implementation
I will start with the version with no Fel Rush, since that is most applicable to our example case from the log. Looking at the SimC results, we see that the SimC APL does one extra Felblade (20.6 instead of 19.7), one more Chaos Strike (47.6 instead of 46.6), and fractionally more Annihilation and Blade Dance. The AMR rotation makes up some of this ground by having higher average Annihilation damage.
When we do the same comparison with the AMR simulator we see the SimC APL does fractionally more Chaos Strike (47.5 instead of 46.9), fractionally more Felblade (19.3 instead of 19.0), fractionally LESS Annihilation, and fractionally more Blade Dance. So, in AMR the gap is smaller, mainly because there almost no difference in Felbade uses, which doesn’t lead to extra fury for the SimC rotation.
We’re really splitting hairs are this point. It would be nice to be able to explain the Felblade use difference though. Why can SimC use more Felblades? The best way to figure this out is make an APL that just uses Felblade and Auto Attacks. Then we can see if the two simulators are working similarly. We will also add in Metamorphosis to start the fight because of the haste buff.
How is SimC getting more Felblades? This is another one of those design choice issues. If you make a detailed log for the SimC simulation, you will see that Felblade is used immediately after a reset proc, with almost no delay. Taking data from one of the SimC logs, the average time between a reset proc and the following Felblade use was 67 ms. In AMR, the average time is the average Human Delay + Lag, which is 240 ms. A Felblade reset is an event that needs to be reacted to in-game. When we made the AMR simulator, we decided to make it more “human” and set it up with human-scale reaction times.
If we take out all the human reaction settings, you get the following:
Now we are exactly 1 Felblade different from SimC. This can be explained by how SimC and AMR handle the start of the fight. In SimC, the pre-cast Metamorphosis lands at exactly time 0.000 and Felblade is cast at time 0.000, with the first Auto Attack occuring at time 0.500. In AMR, for this Training Dummy, you start in melee range. The Auto Attack begins immediately at time 0.000 and then Metamorphosis is cast. So, the first auto attack (and possibly the first Demon Blade proc) occurs when Felblade is ready and has not been cast yet. You cannot make an action occur before Auto Attacks in AMR on a script where you start in melee range. In a more realistic boss script, like Krosus, you start out of range, so Felblade can be used to close the gap to start the fight and occur before the swing timer begins.
As I have mentioned, we aren’t seeing a bug in either simulator here – they are both working as designed. This discussion is an explanation as to how you can explain differences between the two simulators. Yes, SimC gets an extra Felblade and thus will get slightly more damage than AMR – but is that what happens in-game? At AMR, we think not, so we designed our simulator differently. Comparing Krosus logs to AMR simulations, we see that AMR matches combat logs closely – and that is our goal with our simulator. Looking through dozens of top combat logs, the number of Felblades used in AMR matches very closely to what players are actually getting in-game. It’s usually a bit higher even than what players typically achieve.
Side note, some top players use Felblade to start the fight, some use Metamorphosis – the DPS difference is negligible.
As you are reading this, you might have noticed that all the AMR simulation numbers are significantly higher than the SimC simulation numbers (using the respective APL/rotations). We’ve looked at some of the minutia of the differences in ability uses – but those minor differences wouldn’t account for the DPS difference that we are seeing. More investigation!
This means the average damage on abilities in AMR must be a bit higher. The difference is so small that it will be very difficult to find the exact source of this. This is compounded by how SimC reports Chaos Strike and Blade Dance – the hits are averaged together instead of broken out, so a direct comparison is hard to do. You need to make a log with SimC and look at the hit values and see how they match up with the hits in the log section on AMR (finding hits that all have the same buffs, which can be tricky). And, here is where we find the difference! If you look at the average main hand Chaos Strike hit/crit in the 30-40 sec range, it is 272,244 in AMR and 272,282 in SimC – all good there. But, the crit is 707,833 in AMR and 626,248 in SimC. This tells us there is a problem with Critical Chaos in SimC, since it is only increasing crit damage by half the value it should. So, in order to really compare SimC to AMR right now, I need to make a temporarily bugged version of AMR that only gives half the gain from Critical Chaos:
AMR, 1012k DPS vs 1025k DPS in SimC.
Now, that is getting really close, considering these are two independently developed models of the game. When I compare between SimC and AMR, the Felblade uses are still 0.7 different, which is giving a tad more fury for SimC to use. The difference between the two simulations now is just fractional uses of a couple abilities. That is a remnant of how SimC does the pre-fight actions. If we take Metamorphosis out of the pre-fight actions, we end up with nearly identical ability uses between the two simulators, with SimC showing 1018k DPS. It isn’t realistic to expect the two simulators to get much closer than this, considering the different timing and decision models.
I posted an issue about the Critical Chaos bug to the SimC developers and I’m sure it will be fixed promptly, you can use that to track when the fix goes into the nightly build. Looking back through the versions, this particular bug seems to have been in SimC for as far back as I checked – pre 7.1.5 at least. Keep that in mind as you calculate stat weights using SimC – it doesn’t matter a ton since Crit is already Havoc’s best stat, but this will make the relative value go up a bit once it is fixed, and it will also affect your results if you are trying to recreate simulations done in this article.
Now, back to the Fel Rush difference. If we create a 1:1 comparison with SimC by taking Meta out of the pre-fight in SimC and casting it at time 0.000, we see:
When we compare the results, we see SimC uses one less Throw Glaive and gets fractionally more uses on other abilities.
Why does SimC use less Throw Glaive? All of this is connected to the reaction timing issue that I brought up when we discussed Felblade. With Demon Blades, your fury gains are an event that needs to be reacted to. In-game, you are choosing what action to use ahead of time, to avoid downtime. You cannot act based on information you don’t have yet. SimC chooses actions exactly at the time they are performed, not ahead of time. As a result, you will see things like: a Demon Blade proc hits 50 ms before an action is taken, and it causes you to have enough fury to use Chaos Strike. SimC will do the Chaos Strike. AMR will not, because it decides what to do more than 50 ms before the GCD is finished. AMR (and a real player) would not be able to choose Chaos Strike, so it looks further down the priority list and chooses a lower priority action. This doesn’t happen very often, so it only leads to minor differences, but it is a difference. Even if a player was skilled to the point that they would wait for their swing timer before choosing an action, they would still have to react. There would be a delay between gaining the fury and choosing the action.
This lengthy exploration was to show that both AMR and SimC are good models of the game for Havoc. There are minor differences in implementation between the two simulators that account for about a 1% difference between the two, but ultimately both can be used for APL/rotation analysis. You can keep them within about 0.5% of each other if you set up SimC’s pre-fight similarly to how AMR does the pre-fight.
SimC’s “perfect” pre-fight metamorphosis is worth about 10k DPS in a simulation with this gear level, to put this in perspective. Looking at most top combat logs, players are not landing a Metamorphosis at time 0.000. They are landing it a tad after the pull, or using Felblade on the pull and then Metamorphosis. Pulls in real fights just aren’t perfect!
As a result of these slight implementation differences, you will see that the SimC APL “seems” about 1% better than the AMR APL in SimC, but that difference doesn’t translate to AMR. This, to me, is a good indication that some of the nuances of the SimC APL which lead to DPS gains depend on how SimC works, not necessarily on how the game works. Having two models of the game to work with gives us a framework to test these small details.
This also shows that one of the best ways to find bugs in either simulator is to use both! I’ve certainly found and fixed a few bugs in AMR due to my comparisons.
Part 3: Havoc Rotation Analysis
The noteworthy difference between the two rotations is that the AMR rotation is minimal, while the SimC APL is verbose. The SimC APL makes use of multiple variables and complex conditions – mainly to try to synchronize cooldowns. Making sense of the SimC APL is going to be beyond most people, so, I have added comments in my AMR version of it to try to explain how it works.
The AMR rotation is nearly self-explanatory, even for those who don’t write their own rotations, but there are comments to help on the few conditions that look more daunting.
For a 300 second target dummy comparison, the damage from each rotation is:
The DPS is well within margin of error, and the ability uses are almost exactly the same between the two rotations.
For a shorter, 150 second fight, we see no difference either:
So, for this common talent build, the two rotations are really doing the exact same thing. The big difference being that the AMR rotation is simple compared to the SimC rotation. I was able to strip out almost every single condition in the priority list and maintain optimal DPS! As a rotation author, I find this to be a big win. Most players have sub-optimal DPS due to how they deal with fight mechanics more than anything. Giving players the simplest rotation possible to think about is good, since it leaves more brain power left over for the rest of the factors that affect DPS. And, most importantly, you will get the same theorycraft results from using these two rotations – the same stat priorities, gear suggestions, etc.
Looking at the differences between the two rotations, another thought I had was: Well, maybe the SimC APL will get more damage for sets of gear that have cooldown reduction items like Convergence of Fates or Delusions of Grandeur. I ran test batches with these items over a range of fight lengths, since the length of the fight has a large impact on the results.
How do we interpret these results? There are few cases where the AMR rotation does more damage, and a few cases where the SimC rotation does more damage. They are close enough that there is no statistically significant difference between the results in almost every case. It turns out that the extra buff synchronization in the SimC rotation does not yield a DPS gain. It is worth noting that the AMR rotation does have some buff sync’ing between Chaos Blades and Metamorphosis.
The main difference is that AMR rotation more aggressively tries to fit in as many Chaos Blade uses as possible in the fight, while the SimC rotation more aggressively tries to sync Chaos Blades with Metamorphosis. Both strategies do the same thing in most cases, but some fight lengths favor one strategy slightly over the other.
Sidebar: I’ve seen some mention that maybe I don’t care about small differences in DPS when it comes to theorycraft. I assure you this is not the case! To help people out, on these batch reports we added a hidden feature. Click on one row, then click on another. A window will pop up that shows the 95% confidence interval for the difference in DPS between the two rows. It gives a range, based on the results. If that range crosses zero, the difference between the two results is, by definition, statistically insignificant. There is actually a formula for that! Thank you statistics. This puts some of the debate to rest, since we can objectively calculate if two simulation results are significantly different or not.
Another test I want to do is a test of how much damage you lose by using Eye Beam in a single target fight. I added eye beam back into the AMR rotation for single target and simulated our test again for the short Krosus fight and the 300 second Training Dummy fight:
Krosus with Eye Beam, 1051k vs Krosus no Eye Beam, 1054k
Dummy with Eye Beam, 945.4k vs Dummy no Eye Beam, 945.6k
We see no significant change in the DPS whether Eye Beam is used or not. The new trait, Wide Eyes, which reduces the Fury cost of Eye Beam helps this situation.
I wanted to include this test because I have seen some people talk as if using Eye Beam on a single target fight is a terrible, awful, noob thing to do that will tank your DPS. It won’t. You can use it, or not use it, doesn’t matter either way. If your DPS is low on single target fights and you used Eye Beam, that’s not your problem.
I also want to point out how much of your DPS on a single target is attributed to Fel Rush. If we look at the results above for the Training Dummy simulations where we tested with and without Fel Rush, the difference in DPS is 1082k vs 1062k.
You lose about 2% of your DPS in this ideal situation where you can use Fel Rush with no loss of time on the target. I wanted to quantify this because many players struggle with using Fel Rush on a single target that is not moving without ending up in a bad position, out of range, etc. Trying to use Fel Rush on a single target is actually making many players lose DPS because it is difficult. If you are struggling to reach the DPS numbers that you should with your Havoc DH and find that incorporating Fel Rush on a single target is hard for you… just don’t use it. See if you can do everything else perfect first, and once you get that, try adding Fel Rush back in.
Another item I was wondering about is if the SimC APL would out-perform the AMR rotation for the Demonic build:
Blind Fury/Demonic Appetite/Demonic:
AMR, 901.7k DPS vs SimC, 900.7k DPS
The SimC rotation does not out-perform the AMR rotation. At this point we have done a fairly thorough test to confirm that the greatly simplified rotation really does provide optimal performance, and has our simulated player performing the same actions as the SimC APL. This is very helpful for Havoc players. We can now look at the rotation and quickly understand what, beyond the simple action priority, is really important from a rotation perspective. We do this by looking at the AMR rotation and seeing where more complicated conditions needed to be maintained:
If you are using Chaos Blades, it is a substantial DPS gain to learn how to synchronize Chaos Blades with Metamorphosis, while at the same time making sure that you get maximum Chaos Blade uses in your fight. You will do this by learning how long your raid group takes to kill fights. It is better to squeeze in an extra use than to align more uses with Metamorphosis, but if you won’t lose any uses, align them.
With Demonic, you don’t want to use Eye Beam if it won’t extend Metamophosis further, or give you a Demonic Metamorphosis. This can happen if you get a very fast reset after you have already extended Metamophosis with Demonic – you can’t extend it twice.
When do you use Eye Beam?
- If there are multiple targets.
- If you have Blind Fury.
- Only with Momentum up or a different talent selected.
There are a couple other places where there are more complicated conditions, but those are for relatively minor DPS gains, such as making sure to get an Eye Beam reset with Demon Reborn.
We should also look at multi-target situations. Here is where we are going to see major differences between the two rotations.
If we start with a script that just has 3 targets up 100% of the time, we these results:
AMR, 1315k DPS vs SimC 1281k DPS
An interesting note here… the SimC rotation makes use of the “desired_targets” function in SimC. So, for a simulation with 3 permanent targets, “desired_targets” is always 3. If some transient adds spawn, the “active_enemies” are increased, but “desired_targets” remains at 3. With how the SimC rotation is written, we’d set “desired_targets” to 3. If we instead set “desired_targets” to 1 (effectively making the number of active enemies always greater than “desired_targets” we get the following result:
The condition the SimC rotation uses for Fury of the Illidari and other AoE spells isn’t going to work the same in AMR and SimC for this persistent three target case:
DesiredTargets is 3 for this simulation. In SimC, raid_event.adds.in>55 will return true, since there are no “adds” for this case. In AMR, SecondsUntilAoE(2,8) > 55 would return false for the entire fight, since there are 2 or more targets to AoE for the entire fight. To create an equivalent action, we need to translate the SimC action to:
(TargetsInRange > RotationParameter(DesiredTargets) or SecondsUntilAoe(RotationParameter(DesiredTargets) + 1,8) > 55)
This is the intended result of the SimC rotation. We can verify this by comparing to SimC with a 3 target Patchwerk fight (note that I used the GUI to set Num Enemies to 3 in SimC):
AMR, 1241k DPS vs SimC, 1249k DPS (These both used the SimC APL)
If I set the adds in the config file itself, we can create a situation equivalent to “desired_targets=1” for SimC and do the comparison again:
AMR, 1295k DPS vs SimC, 1294k DPS (Make sure to change Num Enemies to 1 in the SimC GUI if you are using it.)
We see equivalent results between the two simulators when using the same APL/Rotation. The DPS is higher when “desired_targets” is set to one because this triggers the SimC APL to use Eye Beam, which is a DPS gain when there are multiple targets. Eye Beam really should be used against multiple targets.
This was a good test to make sure both simulators agree on results for AoE. But, now I want to do a test on a more realistic AoE situation and see how the rotations perform. For this I will use our Spellblade script:
AMR, 1126k DPS vs SimC, 1044k DPS
This is the first really significant difference we’ve seen between the two rotations, a 7.75% difference. What is different? The SimC rotation:
- Is holding Fury of the Illidari too long, resulting in not as many uses.
- Makes less optimal use of Fel Rush by not holding it quite right for AoE.
- Holds on to Throw Glaive too long and gets less uses.
- Doesn’t get as many Blade Dance uses.
We can see some significant deficits for other talents as well. Here are some tests:
Chaos Cleave (6.4% difference in favor of AMR)
Demonic (1.0% difference in favor of AMR)
Momentum/Fel Barrage (2.0% difference in favor of AMR)
The extra variables and pooling some fury for Chaos Strike (with Chaos Cleave) and/or pooling some fury for Blade Dance/Death Sweep – those aren’t yielding DPS increases. You can use a much simpler, greedier rotation to do optimal damage. There is always the caveat that in a real fight, your team might not need you to top a meter as much as they need burst damage at a certain point – so certainly save cooldowns and/or resources for those types of situations.
AMR is set up with more convenience around fights with adds than SimC – there is a flag you can set on abilities to treat them as a cooldown (as I have done with Fury of the Illidari and Eye Beam). Then you can say to save it for AoE and set a threshold number of targets. This kicks in some logic that will automatically save the spell for that AoE, but still get maximum uses possible. This makes it very easy to write optimal rotations for fights with groups of adds that must be burst down.
What does all this information boil down to?
We are able to reduce the Havoc rotation down to a very easy ability priority to follow, while maintaining optimal DPS.
My preference is to write the simplest rotations/APLs possible for simulators that still obtain optimal DPS. This ensures that users can more easily follow what the tools are doing, and gives them the highest chance to duplicate the results in-game.
Regarding simulation, both AMR and SimC are robust tools for investigating Havoc DPS. Doing direct comparisons between the two simulators can be tricky, and I have provided some of the necessary information to do true apples to apples comparisons. I have shown that both provide very similar and accurate results. It is time to end the “AMR vs SimC” mentality out there on the internet. They are both free simulators developed by people who are working hard to provide accurate tools.
Hit me up anytime on our forums or discord to discuss Havoc (or any other spec!).