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.

Client lag-

  • 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.

Latency Lag-

  • 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).
About these ads

~ by Kirk on August 15, 2007.

6 Responses to “Fighting time – lag and other computer delays”

  1. How much memory do you think would be needed to help with client lag?

    I am CONSTANTLY running into the “I swear my heal went off” problem, and on parts of Kara (the pulls before Moroes, especially) I actually have to face my character into the wall and blind-heal.

    I have to be able to see my character since I use that to tell me whether or not I’m actually casting – can’t tell you how many times I’ve cast a heal, heard the sound….then a few seconds later got the “interrupt” sound. I need the visual cue.

    Right, anyway, any standards for memory? Because the one on the outside of the box is for if you don’t actually want to see anything going on in-game.

  2. A friend of mine uses one of these types of addons and he tells me that you have to use stopcasting macros in order to move on to the next spell. Not entirely sure how that works, my latency is usually in the 150′s so it’s not worth the effort for me. Just wanted to throw that out there.

  3. @Ego
    More (grin). Any at all helps, and the more you get the better the help becomes. Worth noting is that if your video card has its own memory, that helps as well.

    @Galadria
    Your friend is sort of right, and it’s a very good point.

    Some spells (and other activities) won’t let you interrupt them – you can’t do anything till the client receives the acknowledgment. Others can be interrupted – a surprising number, but not all.

    I’ll revisit macros in a later post, but make a quick remark here. Rather than adding a stopcasting macro to everything, take a bit of time to decide which spells you’re likely to chain and whether the leaders in the chain need a stopcasting macro to interrupt. Offhand (for example) I know that mindflay needs no macro to interrupt. And I’ve successfully started Mindflay in the lag zone for Mindblast. I haven’t tested everything, so I refuse to say it’s unnecessary to use stopcasting. But I know for absolute fact it isn’t needed for everything.

    Just test. Start a spell and then, while it’s still in progress, try another. Try it in the lag zone, too, as there may be another mechanism in place. That is, the client may be smart enough (read, programmed to know) that if according to the client clock it’s “long enough” but it’s not received a “confirm”, it’ll treat new cast as “confirm”. I said maybe – I’ve had the “another action is in progress” message enough to know it’s not always. But I’m not a programmer of this game, so I do not know.

  4. When I get horrible lag (fortunately, it hasn’t happened in months but for a while, there were server problems quite frenquently), I go: “Screw the overhealing, I’m not cancelling heals”. You have to have a decent manapool and regen, and you have to drink after each pull, but it’s doable when the situation warrants it.

  5. COleecting garbage fairly often helps, either by running
    /script Garbage(Collect) or getting an addon like PerformanceFu which does it when you click it. THis helps a lot.

  6. [...] I need it to go off NOW regardless of what else is happening. I’ll note that if you’re dancing with lag some of your other spells will need it to take advantage of that issue – test for your personal [...]

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s

 
Follow

Get every new post delivered to your Inbox.

%d bloggers like this: