From 8233f3b8df7cfdd4373f2dd7b86aaf4257305fd9 Mon Sep 17 00:00:00 2001 From: Joonas Rikkonen Date: Tue, 14 Aug 2018 13:28:56 +0300 Subject: [PATCH] Increased minimum midround sync timeout to 10 s, an extra check to make sure the server doesn't write position updates during midround syncing (because the entities may not exist client-side yet) --- Barotrauma/BarotraumaShared/Source/Networking/GameServer.cs | 5 +++-- .../Networking/NetEntityEvent/ServerEntityEventManager.cs | 2 +- 2 files changed, 4 insertions(+), 3 deletions(-) diff --git a/Barotrauma/BarotraumaShared/Source/Networking/GameServer.cs b/Barotrauma/BarotraumaShared/Source/Networking/GameServer.cs index 490e1bfea..cc51749cb 100644 --- a/Barotrauma/BarotraumaShared/Source/Networking/GameServer.cs +++ b/Barotrauma/BarotraumaShared/Source/Networking/GameServer.cs @@ -963,8 +963,9 @@ namespace Barotrauma.Networking WriteChatMessages(outmsg, c); - //write as many position updates as the message can fit - while (outmsg.LengthBytes < config.MaximumTransmissionUnit - 20 && + //write as many position updates as the message can fit (only after midround syncing is done) + while (!c.NeedsMidRoundSync && + outmsg.LengthBytes < config.MaximumTransmissionUnit - 20 && c.PendingPositionUpdates.Count > 0) { var entity = c.PendingPositionUpdates.Dequeue(); diff --git a/Barotrauma/BarotraumaShared/Source/Networking/NetEntityEvent/ServerEntityEventManager.cs b/Barotrauma/BarotraumaShared/Source/Networking/NetEntityEvent/ServerEntityEventManager.cs index 648b28c43..69413017a 100644 --- a/Barotrauma/BarotraumaShared/Source/Networking/NetEntityEvent/ServerEntityEventManager.cs +++ b/Barotrauma/BarotraumaShared/Source/Networking/NetEntityEvent/ServerEntityEventManager.cs @@ -305,7 +305,7 @@ namespace Barotrauma.Networking else { double midRoundSyncTimeOut = uniqueEvents.Count / MaxEventsPerWrite * server.UpdateInterval.TotalSeconds; - midRoundSyncTimeOut = Math.Max(5.0f, midRoundSyncTimeOut * 2.0f); + midRoundSyncTimeOut = Math.Max(10.0f, midRoundSyncTimeOut * 2.0f); client.UnreceivedEntityEventCount = (UInt16)uniqueEvents.Count; client.FirstNewEventID = 0;