trying to fix slowdowns of clients ( maybe they are ahead )

This commit is contained in:
Titus Tscharntke 2013-03-09 23:36:25 +00:00
parent ac992b431d
commit c8458237e0
1 changed files with 7 additions and 1 deletions

View File

@ -1731,7 +1731,8 @@ void Game::update() {
ClientInterface *clientInterface = dynamic_cast<ClientInterface *>(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;
}
}
}