From dba93e2bf42f4785c1ba5481942f4a6ea7ea6fb7 Mon Sep 17 00:00:00 2001 From: Titus Tscharntke Date: Mon, 25 Mar 2013 20:55:28 +0000 Subject: [PATCH] I think the frames stored in messages are no network frames but world frames --- source/glest_game/game/game.cpp | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/source/glest_game/game/game.cpp b/source/glest_game/game/game.cpp index 14a7adafd..dc11dd6e4 100644 --- a/source/glest_game/game/game.cpp +++ b/source/glest_game/game/game.cpp @@ -1731,20 +1731,22 @@ void Game::update() { ClientInterface *clientInterface = dynamic_cast(networkManager.getClientInterface()); if(clientInterface != NULL) { uint64 lastNetworkFrameFromServer = clientInterface->getCachedLastPendingFrameCount(); - if(lastNetworkFrameFromServer > 0 && lastNetworkFrameFromServer > (world.getFrameCount() + gameSettings.getNetworkFramePeriod())+1) { - //if(lastNetworkFrameFromServer > 0 && lastNetworkFrameFromServer > world.getFrameCount()) { - int frameDifference = ((lastNetworkFrameFromServer - world.getFrameCount()) / gameSettings.getNetworkFramePeriod()) * gameSettings.getNetworkFramePeriod(); - - //int frameDifference = lastNetworkFrameFromServer - world.getFrameCount(); - +// if(lastNetworkFrameFromServer > 0 && lastNetworkFrameFromServer > (world.getFrameCount() + gameSettings.getNetworkFramePeriod())+1) { +// //if(lastNetworkFrameFromServer > 0 && lastNetworkFrameFromServer > world.getFrameCount()) { +// int frameDifference = ((lastNetworkFrameFromServer - world.getFrameCount()) / gameSettings.getNetworkFramePeriod()) * gameSettings.getNetworkFramePeriod(); +// +// //int frameDifference = lastNetworkFrameFromServer - world.getFrameCount(); + if(lastNetworkFrameFromServer > 0 && lastNetworkFrameFromServer > (world.getFrameCount() + gameSettings.getNetworkFramePeriod()/4)) { + //if(lastNetworkFrameFromServer > 0 && lastNetworkFrameFromServer > world.getFrameCount()) { + int frameDifference = lastNetworkFrameFromServer - world.getFrameCount(); printf("Client will speed up: %d frames lastNetworkFrameFromServer: %lld world.getFrameCount() = %d updateLoops = %d\n",frameDifference,(long long int)lastNetworkFrameFromServer,world.getFrameCount(),updateLoops); updateLoops += frameDifference; } // //If client is ahead maybe this fixes it ( by titi ): - if(updateLoops!=0 && lastNetworkFrameFromServer > 0 && world.getFrameCount() > lastNetworkFrameFromServer && (world.getFrameCount()%gameSettings.getNetworkFramePeriod())==19 ){ - printf("Client will slow down because no message has arrived yet. currentFrame=%d \n",world.getFrameCount()); - updateLoops = 0; + if(updateLoops!=0 && lastNetworkFrameFromServer > 0 && world.getFrameCount() > lastNetworkFrameFromServer && (world.getFrameCount()%GameConstants::updateFps)>38 ){ + printf("Client will slow down because no message has arrived yet. currentFrame=%d \n",world.getFrameCount()); + updateLoops = 0; } } }