We know all about the cheating that is going on, and in a open source project, with very limited manpower, and making no money on this, we just don't have the time to do a complete rewrite* in order to stop all cheating. In fact, it is pretty much impossible to stop all cheating. Just ask the WOW guys, which isn't open source, and they have tons of man power, and make millions, but cheaters still manage to do it.
Now that that is out of the way, I also wish to clarify some things.
Warzone's engine was never meant to have tons of units online, Pumpkin set it at 100 for very good reasons, we have it at 150, which is still too much for Warzone's sub-systems to handle. IMO.
What's that ? You have a Core i7 980X EE with quad Fermi 480 SLI, with a nice dedicated OC3 connect, so your system can handle millions of units ? Ha! Warzone is terribly inefficient at almost everything it does, and even if you could handle far more units than most everyone else, it will do you no good, not unless you want to give the same system to everyone who joins your game. ( If that is the case, then leave me a PM, I will send you my shipping address.
The sync issues are two fold, one, everything in Warzone is FPS tied, and the actual sync code itself is still based on the original Pumpkin code, which never worked very well in the first place. I did some LAN tests to verify this, and it also got out of sync very regularly.
We tried to minimize the first with locking everyone to 45 FPS for MP games, but it is painfully obvious that isn't helping much when people play against people who have low end machines. What does that mean ? It means, if the host has a good system, and is chugging away at 45 fps, and the he has some clients running with 45, 38, and 10 FPS, what do you think is going to happen ? The 10 FPS client is going to get buried in messages, with no chance at recovery, the 38 FPS client is also backlogged, but not by that much, and the other client is OK. Since the game is in a different state on pretty much all machines, then you got some serious sync issues going on. I could go on about the other issues that this causes, but let's just say, it isn't pretty.
Warzone's network model is of the hub design. That means, all messages are relayed to the host, and it is the host's job to relay the messages to everyone else.
When client A sends a ping to client B, it goes A->H->B->H->A. The current pings are throttled to prevent congestion, that is why I state they are for rough estimates, nothing more. If you ever played on a LAN, you will see that your normal sub 2ms ping times jump to 5x-30x or more, so it would show 33ms or whatever. Ping has the last priority, and we rather update units / structures / whatever else first before we get to ping.
NOTE, most of the above information is out of date.
*Now where does this leave us ?
Glad you asked!
Cyp has been working on a branch called "newnet" which has since been merged to svn/trunk.
The way the newer net code works is... better left for Cyp to describe fully, but, in theory, playing trunk net games should be magnitudes better in the sync department, and is in dire need of full scale testing. Please test the latest trunk snapshot as can be found here, and again, report all issues you have!
What, you want to know about 2.3's net code future ?
Good question.
The next phase will make it so the host won't "freeze", and maybe some other enhancements.
Then, it is possible we might go to a full client/server model, but that depends on many things I rather not get into at this time.
That is all for now.






