Kyrian Arcane Mage rotation

I really like AMR and I use it for all my characters, except for one: my Kyrian Arcane Mage. The raidbots sim (with as equivalent settings as possible) sims around 25% higher with the same gear.

As we cannot use custom rotations in the Optimizer, could you update the rotation please?

Reference rotation: simc/mage.cpp at shadowlands · simulationcraft/simc · GitHub

I looked at this once before, but I wasn’t able to get huge gains. This time I finally found what I was missing: I was not aware you could queue up an Arcane Barrage with your last Arcane Blast during Radiant Spark and have it benefit from the debuff. I swore I had tried that when I tested, but I guess I wasn’t aggressive enough with my spell queueing.

I updated the spell implementation to make that possible and tweaked the rotation to play how I’m seeing people doing it in the high-parsing logs.

The increase isn’t 25%… that would be kinda insane - just looking at the logs, people aren’t getting 25% more damage than what the simulator is putting out (once you adjust for the fight conditions), so that would be quite unrealistic. I was able to get a 7% increase in single target, though. That seems like a more realistic/obtainable number, on average.

Is the change live already? Because it’s still casting 4 arcane blasts for me, not 5. It’s also overcapping on arcane harmony with missiles instead of interrupting them.

Here’s my sim over on raidbots: Raidbots
And just now on AMR: Not Available

They are both 7 minute patchwerk sims, but the damage profile is completely different.

I can look at it some more… but when I look at that log, 5 arcane blasts are being cast with each radiant spark before the arcane barrage, so that looks correct to me.

I tried the whole interrupting arcane missiles if you reach max stack on Arcane Harmony thing… that did not result in a DPS gain in our simulator. That doesn’t even make logical sense to me. The amount of time you save is trivial, and you have already invested the mana for the spell. Things like that will always work out better in simc, btw - it is a byproduct of how we each chose to model the game.

The only place I can see where there could potentially be some more improvement to be made is in the aligning of the different buffs (radiant, rune, arcane power, touch of the magi). I tried a lot of different conditions to sync them by delaying certain ones, etc. - but this is what I ended up with because it got me the best DPS. Keep in mind I do all my development on the Single Target script - I don’t use training dummies for rotation development, which could have some impact on the results. Very specific cooldown alignment code breaks down easily with even a slight bit of interruption due to movement.

Ah yeah, that’s my bad, I re-ran the simulation right before posting to make sure I had the latest, and it seems to be doing 4 sometimes and 5 sometimes, but I don’t see any movement in the log. Check the opener in this one: Not Available

And what’s happening around 160? Spark, blast, blast, blast, missiles, barrage?

Another thing the simc rotation does is prestacking. Radiant Spark is on a 30s cooldown, and if you don’t have arcane prodigy you want to hit the second spark after 30s, 60s and 120s, with 18 stacks of harmony each time. In this log, it’s

  • 7s (fine, a bit delayed due to one extra missiles cast, but only 4 blasts before barrage)
  • 49s (delayed because mana was spent on blasts, and arcane harmony is at 0 stacks)
  • 130s (delayed because barrage spent the charges 5 seconds before burst window was coming up)
  • 160s (on schedule, but again, harmony at 0 stacks which confuses the rotation into using missiles inside spark, movement was after missiles)
  • 190s (on schedule, barrage right before spark again, 0 stacks, 4 blasts only)

It also looks like it’s casting naked blasts on 0 charges, which is really slow.

Is it possible to configure the range to the boss? I’m not good enough at reading these logs to see how it’s working out, but you need to be in melee range if your haste is low enough and you want to cram in that huge barrage inside TotM. Travel time matters for TotM.

Finally, I think something is off with your spark implementation. If you look around 167s, it keeps stacking spark at 5 from an arcane missiles cast, which is not what happens in-game. To trigger the 5th hit it needs to be instant cast queued up after a casted spell, regardless of travel times.

I can play around with it more, the rotation is getting kinda program-y instead of looking like something a person could use to play the game, which I don’t like. I need to try to find a way to refactor it.

The implementation of radiant spark was a little tough to allow that instant cast spell to be effectively “queued up” - there is a chance that if you cast arcane missiles during spark, an extra missile (or two with high haste) will get buffed. That is a sub-optimal way to play, regardless, so I let it slide for now because the rotation is trying to avoid doing that. I can look into how an arcane missile is getting cast with radiant spark - that shouldn’t happen.

As far as making sure radiant spark is used with no delay once it comes off cooldown - I did try a rotation that would aggressively pre-stack arcane harmony before spark. I wasn’t able to make that result in an overall dps increase yet. It’s not working out in every case as a blanket condition. I’ll need to figure out in what cases it is causing a DPS loss.

I think I see why sometimes only four arcane blasts are getting cast with a radiant spark, I can fix that up.

You can edit the script if you want to stand closer by default for your simulations.

Is it possible to use a custom script for best-in-bags etc?

No, that is not possible, unfortunately :frowning: The game got too complicated, so the gearing strategies are a melding of simulation data analysis and custom mathematical models. I think once I finish updating this rotation - even if it isn’t quite as program-perfect as simc, it will still pick all the expected gear. That is one thing that gets a little lost in the conversation: squeezing every last ounce of DPS out of the simulator is a fun exercise for those trying to be top of their game, but you don’t have to get 100% there to pick the right gear.

I see why sometimes arcane missiles is being cast during spark - it’s because a +move event is happening and slipstream allows the player to cast while moving. I’ll have to put some “protection” for that in the rotation and see what happens.

I don’t think that’s all, the sim I linked is with Shimmer.

It doesn’t want to cast Arcane Blast because a movement event will happen before the cast finishes. It probably shouldn’t cast Arcane Missiles either… maybe that code isn’t checking properly for spells with channel time. I can look into that.

So, I went through and started with a rotation that uses the cooldowns exactly on cooldown, aligning them ideally. And then I started adding in the other stuff - like stacking up arcane harmony. There isn’t enough mana to use 5x arcane blast with each radiant spark and also maintain a good filler rotation, especially with hard cast arcane missiles included to stack harmony. That is messing things up pretty bad, resulting in the rotation I have now ultimately performing better because it is more flexible.

If I were to unpack that entire simc rotation and try to implement it exactly in our simulator… maybe there would be some more dps to find. Hard to say - their stuff sometimes doesn’t translate outside their simulator. If I have a lot of free time someday I’ll try it out.

I looked at the gear and stats being picked/suggested with the new gearing strategy based on this rotation/fix. It looks pretty spot-on for a kyrian arcane mage to me. I’m going to leave it at that for now while I try to get other stuff done (BC optimizer!). I can return to this rotation later on for science.

That’s a fair point about the stat suggestions, they look good now. For reference though, you need really high mastery (~30%) and low haste (something like 5% is ideal if you’re in melee, 10% is comfy range), maybe that’s why you were running out of mana?

Thanks for the fixes and discussion!