Why would a non-network issue like an inadequate video card cause me to lag out of Starcraft II games

Solution 1:

POTENTIAL REASONING:

In my experience with Modern Warfare 2, the program behind the game waits for certain conditions to be met before it sends off a packet across the network. For example, if your graphics card is taking too long to draw a frame, the program may wait for that frame to be finished before it sends or reads the next network packet. In addition, some drivers may choose to offload processing to the CPU if it detects that it is too much to finish in the allotted time.

I would ask: Are you the only one experiencing the lag or do others see you lag as well?

When my external harddisk takes a long time to write data, my network card stops transmitting until the other synchronized processes are finished.

This is best explained if you consider the case in which you are the host: as host, it is your responsibility to synchronize all the other players. However, if you are taking a long time to finish the computation processes, you will create lag even though your network connection is not being overloaded.

Ping is calculated not by the congestion on the network, but by how long it takes for you to respond to a packet. While the most noticeable source of intermittent delay is network congestion (bad connection), in your case it is probably processing delay, that is, your computer just can't keep up with the frequency of messages.

Hope this helps.

POTENTIAL SOLUTIONS:

If you are playing the native version of Starcraft II, I would suggest that you make sure your OSX is at version 10.6.3 (roll back or update as necessary) and try playing on the minimum settings. If you are playing on bootcamp with the PC version, I would suggest looking into overclocking your gfx card or updating the drivers. Bootcamp is known to underclock gpu's in order to maximize battery life.

Solution 2:

I don't have played Starcraft II, but I've worked on many RTS as a network programmer, and I'll try to give you a possible explanation of what is probably happening. When designing the network code of an RTS, you have two major options to do it.

The first option is to have each machine managing some subset of the units (those of the local player and maybe one AI controlled player) and to send to each other machine the modification of the state of each of those units (where are they now, did they change the currently playing animation, has their PV changed, ...). If you do it this way, you reduce the actual work of each machine (only compute modification for some of the units), but you increase the bandwidth used (since you have to send all modifications).

The other alternative is to have each machine simulate the behavior of every units, and only send between them the order given by the players since you can reconstruct all the state modification from that. However, the load of each machine increase. Many games (Warcraft III, Starcraft, Supreme Commander, Age of Empire, ...) use this model as it greatly reduce the bandwidth required. We speak of a synchronous network engine. I suspect that Startcraft II also use this model.

So how can a bad GPU cause you to lag ? Well, when you have a synchronous network engine, the timestep of the simulation processing has to be the same on each machine. So the slowest machine in the current game is the limiting factor. Moreover, the simulation and the rendering must be somehow synchronized (the rendering depend on the simulation, and you can't tell the other box you have finished the current frame if it has not been rendered). So if you have a poor GPU, the CPU may be waiting for it before telling the other box that it has finished its work.

It can get worse. Since your CPU is waiting for your GPU, you have less time than the other machine to perform the simulation. And as you must simulate every unit (not only yours, but the unit of each player), you have more work to do in less time as the game progress (as they are probably more and more unit build by each player).

In fact, in modern RTS, if you do a game with eight players and seven of them have really powerful machine and fast internet connection, but the last one has an old machine, then the game will suck for every body.