diff --git a/Subsurface/Source/Networking/NetEntityEvent/ClientEntityEventManager.cs b/Subsurface/Source/Networking/NetEntityEvent/ClientEntityEventManager.cs index cd75c1291..b2c26331b 100644 --- a/Subsurface/Source/Networking/NetEntityEvent/ClientEntityEventManager.cs +++ b/Subsurface/Source/Networking/NetEntityEvent/ClientEntityEventManager.cs @@ -59,7 +59,8 @@ namespace Barotrauma.Networking float lastSent = 0; eventLastSent.TryGetValue(events[i].ID, out lastSent); - if (lastSent > NetTime.Now - serverConnection.AverageRoundtripTime) + //wait for 1.5f * roundtriptime until resending + if (lastSent > NetTime.Now - serverConnection.AverageRoundtripTime * 1.5f) { break; } diff --git a/Subsurface/Source/Networking/NetEntityEvent/NetEntityEventManager.cs b/Subsurface/Source/Networking/NetEntityEvent/NetEntityEventManager.cs index 3ba54cd6e..dd136c14e 100644 --- a/Subsurface/Source/Networking/NetEntityEvent/NetEntityEventManager.cs +++ b/Subsurface/Source/Networking/NetEntityEvent/NetEntityEventManager.cs @@ -73,9 +73,22 @@ namespace Barotrauma.Networking } else { + long msgPosition = msg.Position; + DebugConsole.NewMessage("received msg "+thisEventID, Microsoft.Xna.Framework.Color.Green); lastReceivedID++; - ReadEvent(msg, entity, sendingTime, sender); + try + { + ReadEvent(msg, entity, sendingTime, sender); + } + + catch (Exception e) + { +#if DEBUG + DebugConsole.ThrowError("Failed to read event for entity \""+entity.ToString()+"\"!", e); +#endif + msg.Position = msgPosition + msgLength * 8; + } } msg.ReadPadBits(); } diff --git a/Subsurface/Source/Networking/NetEntityEvent/ServerEntityEventManager.cs b/Subsurface/Source/Networking/NetEntityEvent/ServerEntityEventManager.cs index c0fe0d818..612af11f3 100644 --- a/Subsurface/Source/Networking/NetEntityEvent/ServerEntityEventManager.cs +++ b/Subsurface/Source/Networking/NetEntityEvent/ServerEntityEventManager.cs @@ -58,7 +58,8 @@ namespace Barotrauma.Networking float lastSent = 0; client.entityEventLastSent.TryGetValue(events[i].ID, out lastSent); - if (lastSent > NetTime.Now - client.Connection.AverageRoundtripTime) + //wait for 1.5f * roundtriptime until resending + if (lastSent > NetTime.Now - client.Connection.AverageRoundtripTime * 1.5f) { break; }