From f03cd98d04fe4ad04d6f79d8ed97012127c2583d Mon Sep 17 00:00:00 2001 From: Jonathan G Rennison Date: Sun, 27 Sep 2015 23:12:00 +0100 Subject: [PATCH] Check/print tick skip counter in desync and random logging. --- src/core/random_func.cpp | 2 +- src/crashlog.cpp | 2 +- src/network/network.cpp | 2 +- src/network/network_client.cpp | 2 +- src/network/network_server.cpp | 4 ++-- src/openttd.cpp | 2 +- src/saveload/saveload.cpp | 2 +- 7 files changed, 8 insertions(+), 8 deletions(-) diff --git a/src/core/random_func.cpp b/src/core/random_func.cpp index e4593c4076..aabaa0dcc4 100644 --- a/src/core/random_func.cpp +++ b/src/core/random_func.cpp @@ -74,7 +74,7 @@ void SetRandomSeed(uint32 seed) uint32 DoRandom(int line, const char *file) { if (_networking && (!_network_server || (NetworkClientSocket::IsValidID(0) && NetworkClientSocket::Get(0)->status != NetworkClientSocket::STATUS_INACTIVE))) { - DEBUG(random, 0, "%08x; %02x; %04x; %02x; %s:%d", _date, _date_fract, _frame_counter, (byte)_current_company, file, line); + DEBUG(random, 0, "%08x; %02x; %02X; %04x; %02x; %s:%d", _date, _date_fract, _tick_skip_counter, _frame_counter, (byte)_current_company, file, line); } return _random.Next(); diff --git a/src/crashlog.cpp b/src/crashlog.cpp index e8290a7c3f..14c54a947c 100644 --- a/src/crashlog.cpp +++ b/src/crashlog.cpp @@ -318,7 +318,7 @@ char *CrashLog::FillCrashLog(char *buffer, const char *last) const YearMonthDay ymd; ConvertDateToYMD(_date, &ymd); - buffer += seprintf(buffer, last, "In game date: %i-%02i-%02i (%i)\n\n", ymd.year, ymd.month + 1, ymd.day, _date_fract); + buffer += seprintf(buffer, last, "In game date: %i-%02i-%02i (%i, %i)\n\n", ymd.year, ymd.month + 1, ymd.day, _date_fract, _tick_skip_counter); buffer = this->LogError(buffer, last, CrashLog::message); buffer = this->LogOpenTTDVersion(buffer, last); diff --git a/src/network/network.cpp b/src/network/network.cpp index ce37aaa3fa..1b6a29585b 100644 --- a/src/network/network.cpp +++ b/src/network/network.cpp @@ -874,7 +874,7 @@ void NetworkGameLoop() if (_network_server) { /* Log the sync state to check for in-syncedness of replays. */ - if (_date_fract == 0) { + if (_date_fract == 0 && _tick_skip_counter == 0) { /* We don't want to log multiple times if paused. */ static Date last_log; if (last_log != _date) { diff --git a/src/network/network_client.cpp b/src/network/network_client.cpp index d4d294146e..aae2f88c3c 100644 --- a/src/network/network_client.cpp +++ b/src/network/network_client.cpp @@ -253,7 +253,7 @@ void ClientNetworkGameSocketHandler::ClientError(NetworkRecvStatus res) if (_sync_seed_1 != _random.state[0]) { #endif NetworkError(STR_NETWORK_ERROR_DESYNC); - DEBUG(desync, 1, "sync_err: %08x; %02x", _date, _date_fract); + DEBUG(desync, 1, "sync_err: %08x; %02x; %02X", _date, _date_fract, _tick_skip_counter); DEBUG(net, 0, "Sync error detected!"); my_client->ClientError(NETWORK_RECV_STATUS_DESYNC); return false; diff --git a/src/network/network_server.cpp b/src/network/network_server.cpp index 6a33c73d89..9110a0b6a4 100644 --- a/src/network/network_server.cpp +++ b/src/network/network_server.cpp @@ -953,7 +953,7 @@ NetworkRecvStatus ServerNetworkGameSocketHandler::Receive_CLIENT_JOIN(Packet *p) strecpy(ci->client_name, name, lastof(ci->client_name)); ci->client_playas = playas; ci->client_lang = client_lang; - DEBUG(desync, 1, "client: %08x; %02x; %02x; %02x", _date, _date_fract, (int)ci->client_playas, (int)ci->index); + DEBUG(desync, 1, "client: %08x; %02x; %02X; %02x; %02x", _date, _date_fract, _tick_skip_counter, (int)ci->client_playas, (int)ci->index); /* Make sure companies to which people try to join are not autocleaned */ if (Company::IsValidID(playas)) _network_company_states[playas].months_empty = 0; @@ -1606,7 +1606,7 @@ void NetworkUpdateClientInfo(ClientID client_id) if (ci == NULL) return; - DEBUG(desync, 1, "client: %08x; %02x; %02x; %04x", _date, _date_fract, (int)ci->client_playas, client_id); + DEBUG(desync, 1, "client: %08x; %02x; %02X; %02x; %04x", _date, _date_fract, _tick_skip_counter, (int)ci->client_playas, client_id); FOR_ALL_CLIENT_SOCKETS(cs) { cs->SendClientInfo(ci); diff --git a/src/openttd.cpp b/src/openttd.cpp index 68663ae279..fddb6191fc 100644 --- a/src/openttd.cpp +++ b/src/openttd.cpp @@ -1363,7 +1363,7 @@ void StateGameLoop() CallWindowTickEvent(); NewsLoop(); } else { - if (_debug_desync_level > 2 && _date_fract == 0 && (_date & 0x1F) == 0) { + if (_debug_desync_level > 2 && _tick_skip_counter == 0 && _date_fract == 0 && (_date & 0x1F) == 0) { /* Save the desync savegame if needed. */ char name[MAX_PATH]; seprintf(name, lastof(name), "dmp_cmds_%08x_%08x.sav", _settings_game.game_creation.generation_seed, _date); diff --git a/src/saveload/saveload.cpp b/src/saveload/saveload.cpp index 9e5f3fb4b3..bd3a4691cc 100644 --- a/src/saveload/saveload.cpp +++ b/src/saveload/saveload.cpp @@ -2828,7 +2828,7 @@ SaveOrLoadResult SaveOrLoad(const char *filename, int mode, Subdirectory sb, boo } if (mode == SL_SAVE) { // SAVE game - DEBUG(desync, 1, "save: %08x; %02x; %s", _date, _date_fract, filename); + DEBUG(desync, 1, "save: %08x; %02x; %02X; %s", _date, _date_fract, _tick_skip_counter, filename); if (_network_server || !_settings_client.gui.threaded_saves) threaded = false; return DoSave(new FileWriter(fh), threaded);