Saturday, December 6, 2008

DR vs DC vs LC vs GGC vs LE

There is a lot of crap floating around the Warcraft community with claims X program reduces ping or X program is better than Y, hell, i've seen somebody ask if LC is better than Banlist. There's even people who think that it reduces delay to 0 because it creates a "LAN".

I will put forward my thoughts. This is all theory so feel free to discuss.
The term ping will be used interchangeably with latency. Ping is just a measurement of latency. Delay will mean the total of command delay and internet delay.

There are three different classes of delay reducers:

1. Game modifiers: DC and DR
2. VPN: LC and GG
3. Client emulator: LE

Class 1 and 3 are the only ones that reduce delay. They can also increase delay in the case of somebody having problems.

Class 2 does not reduce delay, you're probably thinking, but why does it feel like it does? Well that’s because you are playing Warcraft in LAN mode. Technically the Warcraft game client is setting the delay to 100ms; LC and GG just provide a means to let other players connect to your game over the internet. Just because you are playing in LAN mode, you dont not have 0 delay. You still have to send the packets over the internet to your friend in South Arabia.

Class 1 is technically a hack. They modify the game the same way as shadowfrench modifies the game to remove fog. These aren't considered "bad" hacks so you won’t get banned (unless your DC or whatever anti-cheat program cant distinguish it).

Class 3 emulates the game client. You can think of it as a rewritten Warcraft game client with the graphics removed and all it can do is host.

None of these (except LC, but read on) reduce your ping. Your ping is simply a measurement of how long it takes a packet to be sent over the internet to the receiver and back i.e. latency; which is determined by physics. LC on the other hand measures this differently; it halves the value for no apparent reason so your real ping is actually double the value. Unless you have invented teleportation or subspace communications then the time it takes for a packet to travel from England to Russia cant be changed.

Using DR, DC, GG or whatever will not reduce these values; they will stay exactly the same.
You get delay reduction because your total delay is command delay + internet delay.

I.e. You have 50ms internet delay (latency/ping).
On the default command delay is 250ms.
Your total delay is 50 + 250, a total of 300ms.
Now reduce the command delay (using DR/DC) to say 50ms.
Your total delay is now 50 + 50, a total of 100ms.
100 compared to 300 is a very big difference.

How does it work?

Warcraft would look something like this:

There will be a thread or something for handling packets. This thread will constantly loop. Every time you issue a command it sends a packet to the host, the host receives it and stores it somewhere. There is a loop which will then send it to every other player. As you can see, it sends the packets then waits 250ms before sending again. If your packet arrives after it has finished sending, you will have to wait 250ms which results in delay.

If you set your delay to a very low value such as 1ms. This thread will require more CPU time, the other threads will get less (such as game world) and the threads will freeze and fight over CPU. In my opinion, spikes are caused by CPU, Warcraft uses very little bandwidth (like 3kb/s), a low value increases it a small ammount however the biggest factor is CPU.

DC/DR modifies that value for the loop.
LE creates that loop, and has control over the value.
GGC/LC uses the value specified by Warcraft, which is 100ms as they are usually played through LAN.

Which method is better?

First off; there is no difference between LAN and whatsoever for when you are playing in the game, both modes use TCP. Both are client/server in the sense that you send game packets directly to the host. You do not send game packets to the server. The server is only used for things such as announcements and friends list.

If you set DC or DR to 100ms, you will have the exact same latency as LAN mode. As I said earlier, GG and LC does not reduce delay, it is the Warcraft client in LAN mode. So if anything, LC and GG add more delay and spikes. Why? The extra overhead of monitoring and resending the packets and the overhead of encapsulating the packets, this all takes extra CPU.

Which is for me?

I would recommend LE if the extra features are appealing to you e.g. the ability to swap slots. It has downsides though; you must have an observer slot and an extra CD key. LE has the ability to set any delay value.

I would recommend GGC if you cant afford Warcraft 3 (but then theres PVPGN) and you can put up with the bad English (from the community and GGC itself), if your from Asia then it will be fine. More CPU is needed for encapsulation. GGC doesnt have the ability to reduce delay, therefore it is limited to LAN's 100ms.

I would only recommend LC only if you require it, e.g. Leagues. Again, more CPU is needed. LC doesnt have the ability to reduce delay, therefore it is limited to LAN's 100ms.

I would recommend DC if the anti-hack or stats tracking is appealing. It has downsides; the anti-hack only works for the player using DC. So if only the host is using DC then everyone else can hack. Unless you’re playing in a league which requires all players to use DC then the anti-hack is useless. It also requires more CPU. DC has the ability to change the delay to predefined values.

I would recommend DR if you only need delay reduction. DR also reduces delay for LAN mode (which means it works with GGC and LC). It is also compatible with all versions of Warcraft. DR has the ability to set any delay value.


Anonymous said...

What does LE stand for?

DR = Delay Reducer
DC = Dota-Client
LC = List Checker
GGC = Garena or Good Game Client
LE = ??

I'm interested since you said it has the ability to swap slots but I can't figure out what the full name would be. Any help would be appreciated. Thanks!

VT said...


SammyR said...

"it halves the value for no apparent reason so your real ping is actually double the value"

This is incorrect. the ping command is a network suite command, which is part of the network layer, or layer 3, in the Open Systems Interconnect model of PC's.

to understand why you get a value which appears to be half the actual value, you need to understand that the value given is the time it takes for data to travel from PC A = > PC B, its not

from PC A => PC B and back again. This also means that ping can be inaccurate, as the return journey the data experiences can be delayed by various factors ( namely slow or overcrowded gateway's or servers). I Would expect someone who wrote an app such as this to understand the workings of Layer 3 networking!.

VT said...

So you're saying it doesnt measure RTT?