Fighting time – lag and other computer delays
[cut to the chase – summary of what you can do at the end.]
Ever have one of those days? You know, where you KNOW you got that Greater Heal off on time – heck, you saw the flash and everything – but the tank still died? Or you have pretty much the same spec as that other shadow priest and you sure look like you’re running neck and neck with spell choices but he’s STILL doubling your damage?
Odds are the culprit is lag. But, boys and girls, “lag” is like “consumption” (as in “he died of …” fame – if you don’t know, go ask your granparents). That is, all sorts of actual ills fall under the label. Today, I’m going to look at some of the actual ills and what you might be able to do about it.
First, let’s look behind the scenes at how this game we play works – with some severe simplification. (For you ubergeeks out there reading this, we’re doing first aid, not brain surgery.)
You do something – cast a spell being most common. Your computer tells the server “player cast a spell”. Server sends a message back saying “Got it.” Server sends a “spell has effect”. Your client tells you “spell has an effect”.
Now to keep things from going really confused, your computer does things while waiting for the server to tell it stuff – acknowledgements, next actions, and actions of other players. Basically, it “defaults”. You’ve seen it – the player who is running in place. Or who appears to be jumping wildly from place to place. Either way, it’s because the computer has a delay between part of the info (they’re running) but not the next piece (to here). You’ve also seen it but not realized it when you’re channeling a spell – mind flay for example – and instead of 3 seconds it went, perhaps, 3.5 seconds. Same deal as running in place, but not as obvious. Regardless, it’s all due to lag.
But as I said, lag comes in several flavors. I’m going to speak of three today, of which you can do something about two. These are server lag, latency, and client lag.
Server lag and client lag are pretty much the same deal except the former is one you can do nothing about while the latter is significantly under your control. In both cases the cause is simple – the computer is doing a LOT of things. Computers don’t multitask. They single-task, but jump between tasks really, really fast. So they update the position of each mob and status of each spell and attack and defense and they acknowledge the other computer(s) and they send messages and… gasp, pant, pant, wheeze. They have a constant speed at which they can jump between tasks. But the more tasks in progress, the longer the time before they get back to any single one. Again, you can’t do anything about the server. But the client…
The most infamous example of client lag is “Ironforge lag”. The reason is simple — there is so much going on – not just deals but all the visual actions of all the players in the big courtyard – that the computer’s cycle between tasks is huge. On a more deadly note, the same thing happens when you get into a large party – a raid – on a mob with lots and lots of adds. (For those who’ve been there, Onyxia when she summons all her guards and dragons is an example.) But as I also mentioned, this is the place where you can do the most.
The first, fastest, and easiest solution is to reduce your computer’s workload. Sacrifice field of view. Zoom your point of view way, way in, so you’re essentially in point of view (aka First-Person Shooter) mode. There’s a problem with this, of course, on a tactical level — you can’t see as much of the battle. That is, of course, the point — neither can the computer, and so it doesn’t have to update the graphics of all those mobs and characters and…
A second major cause of lag is too many addons running. If you know you’re headed into Gruul’s lair, for example, I recommend turning off gatherer and auctioneer (two addons that seem to be on most people’s computers — and I’ll discuss those in a separate post someday.)
Another thing you can do is reduce your graphics quality. It’s in the User Interface options. Yes, your picture will be uglier – no screenshots midbattle for you. But you’ll keep up with the fight.
Finally, you can improve the computer itself. Often the problem is a lack of memory, and what’s causing the slowdown is “swapping”. Quickly explained, the computer has a work area and a short-term storage area, and too much work for the work area. So it swaps stuff between the work area and storage as it needs to work on “this stuff”. You’ll notice I pick on graphics a lot above. Graphics are memory intensive. Adding memory to your computer will do a lot to reduce computer lag. So will buying a faster processor, but that’s going above and beyond – I’m looking at easier (and cheaper) fixes.
Those are the basic fixes for client computer lag. As you might realize by looking at it, the same sort of problems exist for the server, but you can’t make any adjustments to it.
The other lag I’m going to discuss is one for which there are workarounds. That’s latency. Latency’s cause boils down to congestion – too much traffic on the parts of the internet you’re using. Now, you can do a small reprieve by increasing your bandwidth – whether that’s available and affordable is something I can’t do anything about. But besides bandwidth… Look. The internet was designed, way back when, to be redundant — to keep traffic going even if specific nodes dropped out. So your connection may not be a straight line from your computer to your ISP to Blizzard’s server. The system’s routers will try to keep the route as short as possible, but you may have to go through literally dozens of intervening nodes along the way. And each node you reach adds a millisecond (or more – probably) to the time between the client and the server. This semi-random walk of connections is one reason you can sometimes improve your latency by disconnecting and reconnecting — it forces the system to choose a new path. It may or may not actually choose a new path, but it gives it the chance.
But in the end, you’re not going to eliminate latency. What you can do, however, is work around it. Bear with me, this is going to be a little tricky.
Let’s say you’re casting Greater Heal – a 3 second cast (leave the talents out of this for now). You see by the latency bar that there’s 500 millisecond latency. What you don’t see is that your casting bar – the glowing thing that shows how long till your cast succeeds – is moving so that it will complete in 3.5 seconds — 3 seconds of cast plus half a second of latency. Because the bar is trying to tell you NOT when the client will be done casting, BUT when the client ANTICIPATES it will receive an ACKNOWLEDGMENT FROM THE SERVER.
You know – you’ve learned the hard way – that if you try to cast something else before the spell is done it’ll do one of two things. Either “Another task is in progress” or an interruption so your spell in progress stops. But here’s where it gets tricky. If you interrupt after the server has sent the acknowledgement, the server’s “spell succeeds” overrides the client’s “Spell is interrupted”.
Which means you can squeeze your spells a bit closer together, getting more of them off over time.
Now you can do this manually by keeping an eye on your latency bar and estimating for each cast how much time you have. But I am going to recommend an addon to make this easier. The addon is Quartz – it’s an Ace2 based system and you can get it (among other places) at this link. If your latency is typically less than 200 milliseconds I wouldn’t bother unless you’ve got the fast-twitch necessary to jump in that gap of 0.2 seconds. But if it’s into the 500 or so often enough to frustrate you, this will help you catch that gap.
I promised a summary.
Server lag – you can’t do a darn thing about it.
- Reduce field of view (zoom in to FPS mode).
- Turn off addons that aren’t immediately necessary.
- Reduce graphic quality in interface.
- Add computer memory.
- Buy more bandwidth (if available and affordable).
- Exit the game (not just log off) and restart.
- Anticipate the lag and start the next action after server has confirmed completion but before your client has received the acknowledgment. Recommended addon to assist: Quartz (link above).