From c8458237e0b3792130b94fe9e0d7de1092bca32e Mon Sep 17 00:00:00 2001 From: Titus Tscharntke Date: Sat, 9 Mar 2013 23:36:25 +0000 Subject: [PATCH] trying to fix slowdowns of clients ( maybe they are ahead ) --- source/glest_game/game/game.cpp | 8 +++++++- 1 file changed, 7 insertions(+), 1 deletion(-) diff --git a/source/glest_game/game/game.cpp b/source/glest_game/game/game.cpp index fc065e49..bc68d4f4 100644 --- a/source/glest_game/game/game.cpp +++ b/source/glest_game/game/game.cpp @@ -1731,7 +1731,8 @@ void Game::update() { ClientInterface *clientInterface = dynamic_cast(networkManager.getClientInterface()); if(clientInterface != NULL) { uint64 lastNetworkFrameFromServer = clientInterface->getCachedLastPendingFrameCount(); - if(lastNetworkFrameFromServer > 0 && lastNetworkFrameFromServer > (world.getFrameCount() + gameSettings.getNetworkFramePeriod())) { + //TT: gameSettings.getNetworkFramePeriod()/4 is 250 ms which should be exact enough. + if(lastNetworkFrameFromServer > 0 && lastNetworkFrameFromServer > (world.getFrameCount() + gameSettings.getNetworkFramePeriod()/4)) { //if(lastNetworkFrameFromServer > 0 && lastNetworkFrameFromServer > world.getFrameCount()) { int frameDifference = ((lastNetworkFrameFromServer - world.getFrameCount()) / gameSettings.getNetworkFramePeriod()) * gameSettings.getNetworkFramePeriod(); @@ -1741,6 +1742,11 @@ void Game::update() { updateLoops += frameDifference; } + //If client is ahead maybe this fixes it ( by titi ): + if(lastNetworkFrameFromServer > 0 && world.getFrameCount() > lastNetworkFrameFromServer && (world.getFrameCount()%gameSettings.getNetworkFramePeriod())==20 ){ + printf("Client will slow down because no message has arrived yet. currentFrame=%d",world.getFrameCount()); + updateLoops = 0; + } } }