Haste and Latency

Topics: Rawr.Base, Rawr.Elemental, Rawr.Enhance, Rawr.Healadin, Rawr.HealPriest, Rawr.Hunter, Rawr.Moonkin, Rawr.RestoSham, Rawr.Retribution, Rawr.Tree, Rawr.Warlock
Oct 26, 2009 at 9:46 AM

I did some reading on Latency and it's effect on spell casts. (http://elitistjerks.com/f31/t33457-simulationcraft_model_development/p9/#post1309223)

There is a built-in spell queue in WoW, that queues a spell right after the one you are currently casting under certain circumstances:

  1. You can't queue a spell during the first second of the GCD. This gives you a Not Ready message.
  2. You can't queue a spell while your previous spell has more than about 0.3s left to complete. This gives you an "Another action is in progress" message.
  3. You can queue a spell during the GCD as long as you satisfy both (1) and (2) above.

For a queued spell latency is close to nonexistent. Simcraft models this latency with a standard deviation of 25% centered around 0.075 s. An instant is modeled with 0.150 s and a channeled spell with 0.250 s as default value.

Then I did some testing, but since I don't have an owl I could not get my Lightning Bolt cast time below 1s. However testing showed a few facts, that are implied by the above, but still worth mentioning:

  • You can queue instants after spells with cast time.
  • I was not able to queue a spell after an instant.
  • I was not able to queue a spell after a channeled spell. Instead the new spells cast begins as soon as the server receives the message.

I would be happy to see some input on this. Perhaps someone of you is already modeling lag in a similar way.

Coordinator
Oct 26, 2009 at 11:41 AM

Mage model is using that kind of latency model.

Editor
Oct 26, 2009 at 10:33 PM
Edited Oct 26, 2009 at 10:34 PM

I don't recall if the exact "allowance"/"tolerance" that is provided by the Blizz server is 250 ms or 300ms.  I've gone back to read up on it's inception and development, but it happened before my time.

Oct 27, 2009 at 3:20 PM

There is one other oddity worth mentioning: TigaFin did some testing with Frost Bolt spam and inserting instant-cast Brain Freeze Fireballs.  He was able to show occurrences of FrB1-BFF-FrB2 in which FrB2 started earlier than expected.  The FrB2 was not "queued" during the GCD of BFF. Rather, it appeared that the GCD initiated by BFF began when it was queued near the end of the FrB1 cast.

Summary: While spamming instants does result in a minimum gap of 150ms, the lag cost of a single instant is on par with queued spells.

 

Oct 29, 2009 at 11:24 AM

Is there a way to measure the different latency types?

Editor
Oct 29, 2009 at 1:43 PM

http://www.wowinterface.com/downloads/info8539-SLDataText.html is one of many addons that has a latency module to measure the time it takes to talk to your WoW server (network latency).

http://www.bbc.co.uk/science/humanbody/sleep/sheep/reaction_version5.swf measures your reaction time (human latency).

Oct 29, 2009 at 1:53 PM
Edited Oct 29, 2009 at 1:54 PM

Thank you, but that is not really the type of latency we want to measure here. We need the difference between the expected spell cast time and the real spell cast time, when multiple spells are cast one after another. These times are different for channeled, instant and spells with cast time.

I mean we need the latency value where the tolerance, as you named it earlier, is already taken into account.

Editor
Oct 29, 2009 at 3:38 PM

Ah, gotcha.  ;)

The best method to get the answer we can use in the program would be to somehow isolate the internal queue using an extremely low-latency, rock-stable connection and a variety of tests for various types of spells.  The casting would preferably be performed by program that can repeat keypresses at regular, methodical intervals.  By extremely low-latency, rock-stable connection, I mean something that's only a few hops away from the server, and experiencing ridiculously low pings (to the tune of sub-30 with little "jitter", or fluctuation, which is totally doable if you're geographically situated correctly).