Elemental, Interface, Opinion, Restoration, Shaman, Strategy, Theorycraft, WoW

Lag, WoW and You

This is part three of the “lag” series.  Part one introduced the concept of lag and what causes it and part two thought about how it affects World of Warcraft.  In this post we’ll zoom in closer and see what we can do about it.

To start with, let’s run through the basics of how we think lag and the spell queue works:

  • It is possible to “queue” your next spell before your current spell finishes casting
  • This is thought to be possible about 300ms (0.3 seconds) before your current cast ends on the server.
  • The client will send the server the instruction and wait for a response before giving any error messages.
  • Spells can be queued during the “global cooldown” (but see below).
  • Spells which are on cooldown cannot be queued.
  • Exception: there is a one-second hard lockout after any spell cast is started during which the client will not permit further attempts at spellcasting.  This cannot be circumvented by any means.

I write “how we think” it works because truth is that nobody really knows for sure.  It’s notoriously difficult to test, and combat log timestamps aren’t much help either because of the way they are applied.  However I don’t think anyone would dispute the above list.

The Cast Bar

Let’s take a blank, empty cast bar for Lightning Bolt and see how the rules above apply.  We’ll assume that this particular player has 33% haste giving 1.50 second cast times.

A sample cast bar for Lightning Bolt (rank 14), lasting 1.5 seconds with 33% haste.

Now let’s apply the one-second lockout as a red area:

The "hard lockout" applied to the cast bar above.

This is the portion of the spell cast for which the client will not let you queue any more spells.  Now let’s add the last 0.3 seconds during which queueing starts to be possible as a green area:

"Hard lockout" still on the left in red, with the "queue zone" on the right in green.

The grey area in the middle is the period during which the client will let you press buttons and then ask the server if it can queue a spell yet.

Now, because lag fluctuates – especially in a raid environment where all the four sources we talked about previous combine to do their worst – the precise moment at which a spell queue action becomes possible will vary from cast to cast.

Why lag is srs bsnz for shamans

Stepping back a bit, let’s think about our arsenal of spells.  Elementals, we have Lightning Bolt, Lava Burst, Chain Lightning, and a bunch of instant-casts.  Our longest cast time is Lightning Bolt at 2 seconds base, and our shortest are all at 1.5 second effective cast times (either they take 1.5s to cast, or they trigger the 1.5s global cooldown).  With Icecrown haste levels the average elemental shaman could be casting one spell about once every 1.2 seconds or so.

As we saw in part two, in a worst case scenario, our full network lag plus reaction time can be applied to every single spell cast.  Which for an ICC elemental with 200ms latency and a 150ms reaction time could mean (in a worst case) that you’re experiencing 350ms of “dead time” between every cast – which we said are occurring once every 1.2 seconds – which means that nearly 30% of your time would be spent “doing nothing” instead of casting.  In this worst case, naturally.

Why do I mention this?  Because, with our array of very quick casting spells, we suffer from this type of “cast bar” lag very severely.  If our spells took 3 seconds to cast using the same parameters above, we’d only be spending 10% of our time “doing nothing” and lag would only be applied to our spells once every 3 seconds instead of nearly once a second.

So lag management is very important to elemental because it can make the difference between, say, 30% of your fight time spent doing literally no damage or 100% of your time doing as much damage as possible.

Restofriends, we’re in a similar situation with our short sharp Lesser Healing Waves, Riptides, Earth Shields and TW’ed Healing Waves, but because most fights are not spent chain casting these short heals we’re generally affected by lag less than DPS casters.  However it’s still important to be aware of the mechanics if you want to maximise your HPS in tricky situations.

Mitigating lag

OK so now that I’ve dropped the scare-bomb (OMG 30% less damages!!!!1) on y’all, how can we actually go about minimizing the effects of lag on our casting?  There are, broadly speaking, three approaches.

1: The precision approach

This is for all those folk with great framerates, good reaction times and a clear head.  The idea here is to know precisely when you can start to queue your next spell cast and press the button at exactly the right time.  Using the rules outlined above, this means preferably having a cast bar that shows your cast time remaining so you know when you’re approaching the queue window.

Using Quartz to time spell queuing on a Lightning Bolt. This screenshot is unmodified.

The advantage to this approach is that it’s elegant and easy on your keyboard, and that it encourages you to take ample time to plan ahead what spells you will cast.  The disadvantage is that reaction time can play a big factor and lag fluctuations can cause you to miss casts now and again – it takes a lot of practice and concentration to get right.

2: The button mashing approach

The polar opposite of the precision approach, button mashing aims to eliminate all lag from every source by mashing the keys as fast as possible.  The advantage is that it can work no matter what your framerate, how slow you think or how well (or otherwise) you understand spell queueing and can free up mental space to react to other concerns (like not standing in fires).  The disadvantage is that it’s very bad for both your keyboard and your fingers, and it’s very easy to delay crucial casts – like Lava Bursts or Flame Shocks – by simply getting too caught up mashing that Lightning button.

3: The precision-mash approach

Sort of a hybrid of the two above, this method depends upon planning your casting sequence slightly ahead of time using your favourite cooldown/DoT timer (as with the precision approach) and then pressing the appropriate button several times in quick succession when you think the spell queue window is approaching (as with the mash approach).  The idea here is to reduce reaction time as a factor by starting your keypresses slightly before you think they’ll be useful and eliminate lag fluctuation as a factor by continuing your keypresses until you’re sure the spell has been queued.

The advantage of this approach is that it can be very effective at eliminating both reaction time and lag as factors without harming your cooldown and DoT management.  The disadvantage is that it still puts a bit of strain on your keyboard and hand.  In other respects it’s a middle ground between the advantages and disadvantages of the other approaches.

Useful Addons

Quartz – this is the addon I’ve used in the cast bar screenshots and I strongly recommend it.  Set it up to show a GCD bar, your lag, and the time remaining on your cast – all to two decimal places – and you’ll be well equipped to battle the lag monster.

SnowfallKeyPress – I don’t actually use this, but it allows you to configure certain spells to be cast when a key is depressed instead of released.  Some people find this helpful for minimizing the effects of reaction time.

Lag & Frame Rate display – I use an old, out-of-date addon to display my latency and framerate and don’t know what to recommend to readers.  Perhaps commentators could supply some suggestions?  It’s good to be able to see your frame rate and network lag while raiding.

LeatrixLatencyFix – this is not a WoW addon but rather a Windows registry fix (don’t worry, it’s perfectly safe), that basically eliminates a “bug” in Windows to cause less unnecessary network traffic and reduce latency.  You can read exactly how it works on the WoW Interface site.  While it’s difficult to assess exactly how effective it is in terms of real-terms raiding improvement, it does definitely reduce “network” lag and comes strongly recommended.  (Thanks to aimealamort at LJ for reminding me of this!)

Lag and high haste

The final part of managing lag has to do with a bit of a meta-consideration that we already touched on above: the increasing effect of lag as spell cast times decrease.

Yeah, this means that the higher your haste, the more lag will affect you.

In addition to the basic maths of “more casts = more lag”, there’s that one-second hard cap to think about.  Let’s look at this Lava Burst cast:

Casting Lava Burst, shown using Quartz. The solid black bar on the underside is Quartz's GCD indicator, which shows how far through the GCD you are.

In this example, the cast is taking 1.15 seconds.  Let’s apply our red-lockout and green-queue zones to the bar:

Lockout and queue zones overlapping in a Lava Burst cast.

See the problem?  Half of the “queue zone” overlaps the “lockout zone”, and the latter takes priority.  So as our casts get closer and closer to the one-second GCD cap, we have less and less time to queue the next spell.  Latency’s effect actually gets higher as our casts approach that one-second point.

Now, this only realistically affects Lava Burst and Chain Lightning; Lightning Bolt doesn’t get close to that 1-second lockout until very high haste levels which can’t be sustained through a fight (more on this in the upcoming stats post, until then you’ll just have to trust me – or not!).  So it’s not exactly a huge problem.  But it is something to be aware of.

I won’t say any more on this subject as it’d pre-empt a large part of what I’m drafting about the “haste” stat 😀  Suffice it to say that despite the interaction of high haste + lag effects, haste is still our second best stat (better than crit, worse than spellpower) and we shouldn’t go to any lengths to avoid getting it on our gear even if we’re troll engineers with 2t10.

Discussion

36 thoughts on “Lag, WoW and You

  1. Precision mashing for the win! An addon I also find highly useful (and will be posting about soon) is EventHorizon, which joins up dottimer, cast bar, dot tick timer and cooldown timer all in one. It’s really useful for seeing dead time in casting (aside from the lag-dead time you’ve discussed here.)

    Posted by pewter | March 7, 2010, 4:24 pm
  2. Agreed Pewter – I use EventHorizon and find it extremely helpful for timing casts. The only problem with it I’ve found is that it doesn’t take the 2pc T10 bonus into account, so I need a separate timer to monitor the actual remaining cooldown on Elemental Mastery.

    Posted by Zobu | March 8, 2010, 12:15 am
    • Well, I use OmniCC as well, but mostly I use EM macroed with Lightening Bolt so it gets used as much as possible. If there is more than once specific burn phase, I’ll save it, but normally I just want to use it whenever it is up.

      Would also be nice if the author added Fire Nova cooldown and Searing Nova, but he’s very against adding totems to it.

      Posted by pewter | March 8, 2010, 1:21 am
    • Addendum: the timer I use as of last night is NeedToKnow. I’ve not had much time to test it properly but so far it seems much simpler and easier to configure that DoTimer, and I think less resource-intensive too. I have it set up to show a nice big orange bar counting down to show my EM cooldown (and likewise for my Resto spec, where I don’t use EventHorizon).

      Even this might be unnecessary, as I left a comment on the EHz page on wowinterface.com about it not showing EM cooldown properly, so perhaps a new version will be out soon that fixes the issue.

      Posted by Zobu | March 8, 2010, 2:52 pm
  3. The issue with going for precision is that it breaks down on any fight where you have to pay attention to many things. You can’t be staring at your castbar on difficult fights.

    I suggest “button mashing” via the mouse scrollwheel, actually. Bind Lightning Bolt to mouse up, bind Lava Burst to mouse down. You can even bind Flame Shock or Chain Lightning to scrollwheel click. This allows you to mash without breaking your hardware or your hands.

    I suggest having your spells keybound as well, though; there are many situations where you want to have your spells bound to both your mouse and keyboard.

    As for castbar mods, I don’t use them; I’ve used Quartz and other mods that claim to be able to reliably track your latency, and they’re just not worth it. Some people claim that Quartz can even increase your cast latency. I’m not sure how much of that is true, but it’s all avoided by simply binding your most used spells to the mousewheel.

    Posted by Bergg | March 8, 2010, 12:19 pm
    • I don’t actually use Quartz for its latency tracking (which was really more useful for the old pre-2.3 stopcasting days – I’m not convinced there’s really much point to it now other than as a nice way to observe how lag is fluctuating in a fight), I just use it because it’s a powerful, versatile castbar mod that shows me what I want to know.

      Though some folk claim Quartz shows the queue window in its “lag bar”, I’ve not tested that and haven’t noticed it if so.

      Interestingly, I was considering writing as a “disadvantage” for the precision approach what you said – that it can take your attention away from your surroundings. But I decided that it’s almost equally true of any approach, as once you’re comfortable with a method you can probably pull it off almost with your eyes closed. I’ve just never been that comfortable with the precision approach.

      I resort to pure mashing during ultra-low-framerate 25-mans as well as when I can’t see my cast bar because DBM spawns more than 5 timers at once (I really need to fix that), and it does enable me to cope with the situation – but it also requires me to put a lot more thought and energy into my casting which I find distracting. Precision-mash allows me to “forget” about my cast until it’s nearly over. But yeah, different strokes for different folks and whatnot.

      Posted by Charles | March 8, 2010, 1:05 pm
      • I find that if I have had a certain amount of haste for a while, I get into a kind of rhythm that is less hellish on my fingers than pure mashing. I must admit that this happens more when I’m able to stand and focus on my rotation (Blood queen) than when all is manic (Valithria)

        Posted by pewter | March 8, 2010, 1:40 pm
  4. Amazing post as always Charles. I hope you don’t mind but I’ve linked straight to it from my front page since I think it deserves all the attention it can get 😀

    Posted by Zing | March 8, 2010, 4:20 pm
  5. I just want to say that I found this article to be JAWESOME. It was extremely informative. I can going to refer all the shaman in my guild to check this blog out.

    Posted by Borken | March 9, 2010, 5:24 pm
    • Oops. I can going = I am going.

      Posted by Borken | March 9, 2010, 5:25 pm
    • Thanks for the kind words (everyone). I really do appreciate all the nice comments you folks make even though I don’t reply to all of them directly! And criticism/suggestions/corrections are just as welcome as compliments (I can take it, honest!).

      I will indulge in a little self-criticism and say that I’m not really sure how much the post above deserve adjectives like “jawesome” or “amazing”. Seems to me it doesn’t really show all that much of the vast period of gestation it went through, with all the fact checking and testing and finding out how other people handle lag and whatnot. I’m not sure if that’s because at the end of the day what we know for sure about lag mechanics is not that much, or if maybe it’s because there are vast swathes of consequences that I have simply forgotten to include because of my chaotic drafting process (beyond the potential influence of lag on stat weights, which I hinted at), or if it’s just because though the background to the subject is a bit complicated, the in-game solutions are very simple. Or maybe all of the above.

      I’m also not sure how helpful the other two posts were, or to what extent I really “sold” the specific problem of lag affecting cast times, or (as I said) if there are other angles I should have mentioned that I forgot or even never thought of.

      But yes, I’m very glad that some folk have nevertheless found it helpful (and worthy of being called “jawesome”) and thank you for saying so.

      Posted by Charles | March 9, 2010, 6:37 pm
      • You ever watch Street Sharks?

        Posted by Borken | March 9, 2010, 8:05 pm
      • Street Sharks? Seeing as I don’t know what that is, I don’t think so 🙂 I suppose it’s the origin of the word “jawesome”.

        (Wikipedia says it’s a cartoon show, natch)

        Gnarly.

        Posted by Charles | March 9, 2010, 10:20 pm
      • And you thought it was a typo, HAH! The internet has an explanation for everything.

        I use a combination of the precision and precision mashing approach, for the record (although I’m not an elemental shaman, it sort of applies to anything with a cast bar – and Steady Shot’s on quite a short cast time as well). It depends which spell/fight, how hasted I am and how intense things get. I nearly destroyed my keyboard on Anub’arak heroic. MASHING HARDER WILL MAKE ME DO MORE DAMAGES.

        Posted by Razz | March 10, 2010, 9:25 am
      • I didn’t think it was a typo, I just thought I had encountered a particularly creative and daring neologism.

        Posted by Charles | March 10, 2010, 11:38 am
      • I think it offers some interesting possibilities, disregarding the shark reference. We all know the jawesome effects of adding z’s at the end of words, but maybe adding j’s in front of words has similar consequences.

        Jamazing.
        Jadorable.
        Jinteresting.
        Junbelievable.
        Jolly good.

        Yes, I’m on to something here.

        I’m so sorry for derailing your comments.

        Posted by Razz | March 10, 2010, 1:09 pm
  6. I found it useful because lag was definitely a problem for me. I tried all the methods of spam casting, including macroing stuff to the mouse wheel, but nothing seemed to be effective.

    I dropped some haste to see if I maybe had too much (I know that doesn’t make sense). My dps went way up after that, but I didn’t know how to expalin it. I would have never thought to make the connection between haste and lag. I saw it on my screen, and I was victim to it, but I never would have organized my thoughts and experiences in such a way.

    Posted by Borken | March 9, 2010, 8:35 pm
  7. Hi. The blog, your spreadsheet, and overall research are amazing.

    This specific post was really interesting to me. i play from Brazil, and our latencies ten d to be very very high (500… 600+) So this post sure helped me out

    Also, it explained a bit about why the soft haste cap affect the value of haste so much. Nowhere else i’ve read about it and it’s very clear to me now.

    Please don’t stop doing this beatuiful work
    (For we will sure need some Mastery enlightening when Azeroth meets it’s end)

    Posted by Hexlol | March 10, 2010, 4:02 pm
  8. Added a link to Leatrix Latency Fix, a Windows registry tweak which reduces network lag across the board. Levva originally brought this to my attention and I was reminded of it by comments over at LJ. Definitely worth checking out:

    Leatrix Latency Fix

    Posted by Charles | March 10, 2010, 11:51 pm
  9. Hello, I have a question about Qartz: how do you set it to display the cast time to two decimal places? Ingame config doesn’t have an option for it (or I didn’t search enough), is it a lua thing?

    Posted by Tryn | March 11, 2010, 1:11 am
    • About 4/5ths of the way down the menu for “Player” there’s a slider bar called “Cast Time Precision” – this is basically number of decimal places. It’s after the setting for “Spell Rank Style” and before the setting for “Time Text Position”.

      Posted by Charles | March 11, 2010, 5:33 pm
      • Okay, my version of Quartz does not have this. It’s the new Quartz3(v3.0.2) from Curse.com(last update 3weeks ago) – which version do you use?

        Posted by Tryn | March 11, 2010, 6:45 pm
      • Right, I’m using an older version from months back. I see the cast time only being shown to 1 decimal place is a frequent complaint so maybe it will be updated soon.

        In some ways it’s not that important to show cast times to 2 decimal places so long as you’re aware the number is being rounded. However if you want, you can hack the .lua to force it to use 2 DPs as follows.

        First, go to your WoW addons direction (\interface\addons) and find the Quartz directory. There open the file called “Quartz.lua”.

        Find this bit in the file:
        Quartz3.Util = {}
        function Quartz3.Util.TimeFormat(num, isCastTime)
        if num <= 10 or (isCastTime and num <= 60) then
        return "%.1f", num

        and change “%.1f” to “%.2f”.

        Bear in mind that this will change all cast timers to show to two decimal places.

        Posted by Charles | March 11, 2010, 7:41 pm
      • Thank you very much!

        Posted by Tryn | March 13, 2010, 12:17 pm
  10. Thanks for this and for all the effort you put
    in your blog.

    Posted by Rummo | May 7, 2010, 4:42 am
  11. So lets say a shaman has already reached haste soft cap, would it be optimal to get Phylactery of the Nameless Lich instead of Dislodged Foreign Object if he had 250+ ms latency? Or would DFO be better even if he can’t queue while casting CL/LvB(both at 0.9)?

    Posted by Maxing | May 28, 2010, 3:55 am
    • Um. Well, the main value of DFO is the high uptime of its spellpower proc. Phylactery’s proc is a lot less frequent and therefore a lot harder to maximise the benefit from. My educated guess is that DFO would probably still trump a Phylactery even with some lag, but the gap would probably narrow a bit as haste’s DEP drops.

      Posted by Charles | May 28, 2010, 1:23 pm
  12. Thanks for the reply, keep up the great job on your blog =)

    Posted by Maxing | May 28, 2010, 3:50 pm
  13. Great post !

    I’m Hunter with the same problems (I think), while using our steady shots combine with instant shots:
    – The GCD gray circle animation is always performed
    – But sometimes it is stoped
    – Or sometimes the next instant shot is canceled
    Like if the queing was bad.

    It’s worst on Cataclysm beta where latency is high and gcd shorten.
    – At the end of the Steady gcd (1s) I renew it
    – But the spell has not finished (1.5s) and sometimes bug

    Is there an addon that do not allow click on spell until it is really ready to queue ?

    Or may be an addon that replace the gray circle gcd display by a real casting circle ?

    Posted by Jean-Philippe Encausse | October 5, 2010, 12:21 pm

Trackbacks/Pingbacks

  1. Pingback: Lag, WoW and Your DPS « Totemz - March 8, 2010

  2. Pingback: To the Beat of the Drum: Haste & Rhythm « The 'mental Shaman - March 19, 2010

  3. Pingback: Elemental Glyphs Post Patch 3.3 « Totemz - March 26, 2010

  4. Pingback: Elemental Glyphs – Majors « Totemz - July 27, 2010

  5. Pingback: Is clicking THAT bad? - Page 9 - The Warlocks Den - WoW Warlock Discussions - May 24, 2011

Leave a comment

Get emailed about new posts!

Join 27 other subscribers

We write about