(svn r209) -Fix: network code based desync

-Feature: framesync packets to hold the clients framecount near the servers
-Fix: command queue now aligns the commands to be processed right after an sync or framesync packet
-Fix: added stubs for compiling without network
This commit is contained in:
signde
2004-09-11 22:10:31 +00:00
parent 1c373cd0af
commit 34ecc0d778
3 changed files with 62 additions and 12 deletions

3
ttd.c
View File

@@ -995,8 +995,10 @@ void GameLoop()
// client: make sure client's time is synched to the server by running frames quickly up to where the server is.
if (!_networking_server) {
while (_frame_counter < _frame_counter_srv) {
NetworkCoreLoop(true);
StateGameLoop();
NetworkProcessCommands(); // need to process queue to make sure that packets get executed.
NetworkCoreLoop(false);
}
// client: don't exceed the max count told by the server
if (_frame_counter < _frame_counter_max) {
@@ -1010,6 +1012,7 @@ void GameLoop()
if (_frame_counter < _frame_counter_max) {
StateGameLoop();
NetworkProcessCommands(); // to check if we got any new commands belonging to the current frame before we increase it.
NetworkSendFrameSyncPackets();
}
// server: wait until all clients were ready for going on
if (_frame_counter == _frame_counter_max) {