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.
Now let’s apply the one-second lockout as a red area:
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:
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.
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.
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.
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:
In this example, the cast is taking 1.15 seconds. Let’s apply our red-lockout and green-queue zones to the bar:
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.