trying to fix slowdowns of clients ( maybe they are ahead )
This commit is contained in:
parent
ac992b431d
commit
c8458237e0
|
@ -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;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
|
Loading…
Reference in New Issue