diff --git a/OpenRA.Game/Network/OrderManager.cs b/OpenRA.Game/Network/OrderManager.cs index a8e4cfbae4..a49537b13f 100644 --- a/OpenRA.Game/Network/OrderManager.cs +++ b/OpenRA.Game/Network/OrderManager.cs @@ -52,6 +52,7 @@ namespace OpenRA.Network public readonly ReadOnlyList ChatCache; bool disposed; + bool generateSyncReport = false; void OutOfSync(int frame) { @@ -61,7 +62,12 @@ namespace OpenRA.Network public void StartGame() { - if (GameStarted) return; + if (GameStarted) + return; + + // Generating sync reports is expensive, so only do it if we have + // other players to compare against if a desync did occur + generateSyncReport = !(Connection is ReplayConnection) && LobbyInfo.NonBotClients.Count() > 1; NetFrameNumber = 1; for (var i = NetFrameNumber; i <= FramesAhead; i++) @@ -180,7 +186,8 @@ namespace OpenRA.Network Connection.SendSync(NetFrameNumber, OrderIO.SerializeSync(World.SyncHash())); - syncReport.UpdateSyncReport(); + if (generateSyncReport) + syncReport.UpdateSyncReport(); ++NetFrameNumber; }