From 3185e2a0eb38e8efc64c8d9177ce590230cbc575 Mon Sep 17 00:00:00 2001 From: Jeffrey Rainy Date: Thu, 9 Sep 2021 10:09:32 -0400 Subject: [PATCH 1/3] feat: snapshot. Enabling spawns via snapshot by default --- .../Runtime/Configuration/NetworkConfig.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.unity.netcode.gameobjects/Runtime/Configuration/NetworkConfig.cs b/com.unity.netcode.gameobjects/Runtime/Configuration/NetworkConfig.cs index 74f8abefb5..06d8f0fafc 100644 --- a/com.unity.netcode.gameobjects/Runtime/Configuration/NetworkConfig.cs +++ b/com.unity.netcode.gameobjects/Runtime/Configuration/NetworkConfig.cs @@ -151,7 +151,7 @@ public class NetworkConfig /// /// Whether or not to enable Snapshot System for spawn and despawn commands. Working but experimental. /// - public bool UseSnapshotSpawn { get; } = false; + public bool UseSnapshotSpawn { get; } = true; /// /// When Snapshot System spawn is enabled: max size of Snapshot Messages. Meant to fit MTU. /// From e07b9344dc8aafb4804dfd7d3735ee61f3e51269 Mon Sep 17 00:00:00 2001 From: Jeffrey Rainy Date: Fri, 10 Sep 2021 14:07:09 -0400 Subject: [PATCH 2/3] feat: snapshot. Fixing the snapshot spawns mechanism to not rely on Singleton --- .../Runtime/Messaging/IInternalMessageHandler.cs | 1 + .../Runtime/Messaging/InternalMessageHandler.cs | 4 ++-- .../Messaging/MessageQueue/MessageQueueProcessor.cs | 2 +- .../InternalMessageHandlerProfilingDecorator.cs | 9 +++++++++ .../Tests/Editor/DummyMessageHandler.cs | 2 ++ 5 files changed, 15 insertions(+), 3 deletions(-) diff --git a/com.unity.netcode.gameobjects/Runtime/Messaging/IInternalMessageHandler.cs b/com.unity.netcode.gameobjects/Runtime/Messaging/IInternalMessageHandler.cs index ad3ea71954..b90bf907f0 100644 --- a/com.unity.netcode.gameobjects/Runtime/Messaging/IInternalMessageHandler.cs +++ b/com.unity.netcode.gameobjects/Runtime/Messaging/IInternalMessageHandler.cs @@ -17,5 +17,6 @@ internal interface IInternalMessageHandler void HandleUnnamedMessage(ulong clientId, Stream stream); void HandleNamedMessage(ulong clientId, Stream stream); void HandleNetworkLog(ulong clientId, Stream stream); + void HandleSnapshot(ulong clientId, Stream messageStream); } } diff --git a/com.unity.netcode.gameobjects/Runtime/Messaging/InternalMessageHandler.cs b/com.unity.netcode.gameobjects/Runtime/Messaging/InternalMessageHandler.cs index d8318847a5..10e30cdb11 100644 --- a/com.unity.netcode.gameobjects/Runtime/Messaging/InternalMessageHandler.cs +++ b/com.unity.netcode.gameobjects/Runtime/Messaging/InternalMessageHandler.cs @@ -306,9 +306,9 @@ public void HandleNetworkLog(ulong clientId, Stream stream) } } - internal static void HandleSnapshot(ulong clientId, Stream messageStream) + public void HandleSnapshot(ulong clientId, Stream messageStream) { - NetworkManager.Singleton.SnapshotSystem.ReadSnapshot(clientId, messageStream); + m_NetworkManager.SnapshotSystem.ReadSnapshot(clientId, messageStream); } } } diff --git a/com.unity.netcode.gameobjects/Runtime/Messaging/MessageQueue/MessageQueueProcessor.cs b/com.unity.netcode.gameobjects/Runtime/Messaging/MessageQueue/MessageQueueProcessor.cs index 840c8251be..f14a4a1443 100644 --- a/com.unity.netcode.gameobjects/Runtime/Messaging/MessageQueue/MessageQueueProcessor.cs +++ b/com.unity.netcode.gameobjects/Runtime/Messaging/MessageQueue/MessageQueueProcessor.cs @@ -106,7 +106,7 @@ public void ProcessMessage(in MessageFrameItem item) break; case MessageQueueContainer.MessageType.SnapshotData: - InternalMessageHandler.HandleSnapshot(item.NetworkId, item.NetworkBuffer); + m_NetworkManager.MessageHandler.HandleSnapshot(item.NetworkId, item.NetworkBuffer); break; case MessageQueueContainer.MessageType.NetworkVariableDelta: m_NetworkManager.MessageHandler.HandleNetworkVariableDelta(item.NetworkId, item.NetworkBuffer); diff --git a/com.unity.netcode.gameobjects/Runtime/Profiling/InternalMessageHandlerProfilingDecorator.cs b/com.unity.netcode.gameobjects/Runtime/Profiling/InternalMessageHandlerProfilingDecorator.cs index 3925af0c87..3a76cf735a 100644 --- a/com.unity.netcode.gameobjects/Runtime/Profiling/InternalMessageHandlerProfilingDecorator.cs +++ b/com.unity.netcode.gameobjects/Runtime/Profiling/InternalMessageHandlerProfilingDecorator.cs @@ -93,6 +93,15 @@ public void HandleNetworkVariableDelta(ulong clientId, Stream stream) m_HandleNetworkVariableDelta.End(); } + public void HandleSnapshot(ulong clientId, Stream stream) + { + m_HandleNetworkVariableDelta.Begin(); + + m_MessageHandler.HandleSnapshot(clientId, stream); + + m_HandleNetworkVariableDelta.End(); + } + public void MessageReceiveQueueItem(ulong clientId, Stream stream, float receiveTime, MessageQueueContainer.MessageType messageType) { switch (messageType) diff --git a/com.unity.netcode.gameobjects/Tests/Editor/DummyMessageHandler.cs b/com.unity.netcode.gameobjects/Tests/Editor/DummyMessageHandler.cs index 793b2a61a1..8f3c4fa3b4 100644 --- a/com.unity.netcode.gameobjects/Tests/Editor/DummyMessageHandler.cs +++ b/com.unity.netcode.gameobjects/Tests/Editor/DummyMessageHandler.cs @@ -50,6 +50,8 @@ public void MessageReceiveQueueItem(ulong clientId, Stream stream, float receive public void HandleNetworkLog(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleNetworkLog)); + public void HandleSnapshot(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleSnapshot)); + public void HandleAllClientsSwitchSceneCompleted(ulong clientId, Stream stream) => VerifyCalled(nameof(HandleAllClientsSwitchSceneCompleted)); private void VerifyCalled(string method) From eff9a3627ce785abe42931ab1f42f4dc22c35471 Mon Sep 17 00:00:00 2001 From: Jeffrey Rainy Date: Fri, 10 Sep 2021 14:11:30 -0400 Subject: [PATCH 3/3] feat: snapshot. Removing the default on for snapshot spawns --- .../Runtime/Configuration/NetworkConfig.cs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/com.unity.netcode.gameobjects/Runtime/Configuration/NetworkConfig.cs b/com.unity.netcode.gameobjects/Runtime/Configuration/NetworkConfig.cs index 06d8f0fafc..74f8abefb5 100644 --- a/com.unity.netcode.gameobjects/Runtime/Configuration/NetworkConfig.cs +++ b/com.unity.netcode.gameobjects/Runtime/Configuration/NetworkConfig.cs @@ -151,7 +151,7 @@ public class NetworkConfig /// /// Whether or not to enable Snapshot System for spawn and despawn commands. Working but experimental. /// - public bool UseSnapshotSpawn { get; } = true; + public bool UseSnapshotSpawn { get; } = false; /// /// When Snapshot System spawn is enabled: max size of Snapshot Messages. Meant to fit MTU. ///