com.unity.netcode.gameobjects@1.0.0-pre.8
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/) and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html). Additional documentation and release notes are available at [Multiplayer Documentation](https://docs-multiplayer.unity3d.com). ## [1.0.0-pre.8] - 2022-04-27 ### Changed - `unmanaged` structs are no longer universally accepted as RPC parameters because some structs (i.e., structs with pointers in them, such as `NativeList<T>`) can't be supported by the default memcpy struct serializer. Structs that are intended to be serialized across the network must add `INetworkSerializeByMemcpy` to the interface list (i.e., `struct Foo : INetworkSerializeByMemcpy`). This interface is empty and just serves to mark the struct as compatible with memcpy serialization. For external structs you can't edit, you can pass them to RPCs by wrapping them in `ForceNetworkSerializeByMemcpy<T>`. (#1901) ### Removed - Removed `SIPTransport` (#1870) - Removed `ClientNetworkTransform` from the package samples and moved to Boss Room's Utilities package which can be found [here](https://github.com/Unity-Technologies/com.unity.multiplayer.samples.coop/blob/main/Packages/com.unity.multiplayer.samples.coop/Utilities/Net/ClientAuthority/ClientNetworkTransform.cs). ### Fixed - Fixed `NetworkTransform` generating false positive rotation delta checks when rolling over between 0 and 360 degrees. (#1890) - Fixed client throwing an exception if it has messages in the outbound queue when processing the `NetworkEvent.Disconnect` event and is using UTP. (#1884) - Fixed issue during client synchronization if 'ValidateSceneBeforeLoading' returned false it would halt the client synchronization process resulting in a client that was approved but not synchronized or fully connected with the server. (#1883) - Fixed an issue where UNetTransport.StartServer would return success even if the underlying transport failed to start (#854) - Passing generic types to RPCs no longer causes a native crash (#1901) - Fixed an issue where calling `Shutdown` on a `NetworkManager` that was already shut down would cause an immediate shutdown the next time it was started (basically the fix makes `Shutdown` idempotent). (#1877)
This commit is contained in:
@@ -27,12 +27,12 @@ namespace Unity.Netcode.RuntimeTests.Metrics
|
||||
{
|
||||
var waitForMetricValues = new WaitForEventMetricValues<NetworkMessageEvent>(ServerMetrics.Dispatcher, NetworkMetricTypes.NetworkMessageSent);
|
||||
|
||||
var messageName = Guid.NewGuid();
|
||||
var messageName = new ForceNetworkSerializeByMemcpy<Guid>(Guid.NewGuid());
|
||||
using (var writer = new FastBufferWriter(1300, Allocator.Temp))
|
||||
{
|
||||
writer.WriteValueSafe(messageName);
|
||||
|
||||
Server.CustomMessagingManager.SendNamedMessage(messageName.ToString(), FirstClient.LocalClientId, writer);
|
||||
Server.CustomMessagingManager.SendNamedMessage(messageName.Value.ToString(), FirstClient.LocalClientId, writer);
|
||||
}
|
||||
|
||||
yield return waitForMetricValues.WaitForMetricsReceived();
|
||||
@@ -47,12 +47,12 @@ namespace Unity.Netcode.RuntimeTests.Metrics
|
||||
public IEnumerator TrackNetworkMessageSentMetricToMultipleClients()
|
||||
{
|
||||
var waitForMetricValues = new WaitForEventMetricValues<NetworkMessageEvent>(ServerMetrics.Dispatcher, NetworkMetricTypes.NetworkMessageSent);
|
||||
var messageName = Guid.NewGuid();
|
||||
var messageName = new ForceNetworkSerializeByMemcpy<Guid>(Guid.NewGuid());
|
||||
using (var writer = new FastBufferWriter(1300, Allocator.Temp))
|
||||
{
|
||||
writer.WriteValueSafe(messageName);
|
||||
|
||||
Server.CustomMessagingManager.SendNamedMessage(messageName.ToString(), new List<ulong> { FirstClient.LocalClientId, SecondClient.LocalClientId }, writer);
|
||||
Server.CustomMessagingManager.SendNamedMessage(messageName.Value.ToString(), new List<ulong> { FirstClient.LocalClientId, SecondClient.LocalClientId }, writer);
|
||||
}
|
||||
|
||||
|
||||
@@ -65,10 +65,10 @@ namespace Unity.Netcode.RuntimeTests.Metrics
|
||||
[UnityTest]
|
||||
public IEnumerator TrackNetworkMessageReceivedMetric()
|
||||
{
|
||||
var messageName = Guid.NewGuid();
|
||||
var messageName = new ForceNetworkSerializeByMemcpy<Guid>(Guid.NewGuid());
|
||||
|
||||
LogAssert.Expect(LogType.Log, $"Received from {Server.LocalClientId}");
|
||||
FirstClient.CustomMessagingManager.RegisterNamedMessageHandler(messageName.ToString(), (ulong sender, FastBufferReader payload) =>
|
||||
FirstClient.CustomMessagingManager.RegisterNamedMessageHandler(messageName.Value.ToString(), (ulong sender, FastBufferReader payload) =>
|
||||
{
|
||||
Debug.Log($"Received from {sender}");
|
||||
});
|
||||
@@ -79,7 +79,7 @@ namespace Unity.Netcode.RuntimeTests.Metrics
|
||||
{
|
||||
writer.WriteValueSafe(messageName);
|
||||
|
||||
Server.CustomMessagingManager.SendNamedMessage(messageName.ToString(), FirstClient.LocalClientId, writer);
|
||||
Server.CustomMessagingManager.SendNamedMessage(messageName.Value.ToString(), FirstClient.LocalClientId, writer);
|
||||
}
|
||||
|
||||
yield return waitForMetricValues.WaitForMetricsReceived();
|
||||
@@ -94,12 +94,12 @@ namespace Unity.Netcode.RuntimeTests.Metrics
|
||||
{
|
||||
var waitForMetricValues = new WaitForEventMetricValues<NamedMessageEvent>(ServerMetrics.Dispatcher, NetworkMetricTypes.NamedMessageSent);
|
||||
|
||||
var messageName = Guid.NewGuid();
|
||||
var messageName = new ForceNetworkSerializeByMemcpy<Guid>(Guid.NewGuid());
|
||||
using (var writer = new FastBufferWriter(1300, Allocator.Temp))
|
||||
{
|
||||
writer.WriteValueSafe(messageName);
|
||||
|
||||
Server.CustomMessagingManager.SendNamedMessage(messageName.ToString(), FirstClient.LocalClientId, writer);
|
||||
Server.CustomMessagingManager.SendNamedMessage(messageName.Value.ToString(), FirstClient.LocalClientId, writer);
|
||||
}
|
||||
|
||||
|
||||
@@ -109,7 +109,7 @@ namespace Unity.Netcode.RuntimeTests.Metrics
|
||||
Assert.AreEqual(1, namedMessageSentMetricValues.Count);
|
||||
|
||||
var namedMessageSent = namedMessageSentMetricValues.First();
|
||||
Assert.AreEqual(messageName.ToString(), namedMessageSent.Name);
|
||||
Assert.AreEqual(messageName.Value.ToString(), namedMessageSent.Name);
|
||||
Assert.AreEqual(FirstClient.LocalClientId, namedMessageSent.Connection.Id);
|
||||
Assert.AreEqual(FastBufferWriter.GetWriteSize(messageName) + k_NamedMessageOverhead, namedMessageSent.BytesCount);
|
||||
}
|
||||
@@ -118,12 +118,12 @@ namespace Unity.Netcode.RuntimeTests.Metrics
|
||||
public IEnumerator TrackNamedMessageSentMetricToMultipleClients()
|
||||
{
|
||||
var waitForMetricValues = new WaitForEventMetricValues<NamedMessageEvent>(ServerMetrics.Dispatcher, NetworkMetricTypes.NamedMessageSent);
|
||||
var messageName = Guid.NewGuid();
|
||||
var messageName = new ForceNetworkSerializeByMemcpy<Guid>(Guid.NewGuid());
|
||||
using (var writer = new FastBufferWriter(1300, Allocator.Temp))
|
||||
{
|
||||
writer.WriteValueSafe(messageName);
|
||||
|
||||
Server.CustomMessagingManager.SendNamedMessage(messageName.ToString(), new List<ulong> { FirstClient.LocalClientId, SecondClient.LocalClientId }, writer);
|
||||
Server.CustomMessagingManager.SendNamedMessage(messageName.Value.ToString(), new List<ulong> { FirstClient.LocalClientId, SecondClient.LocalClientId }, writer);
|
||||
}
|
||||
|
||||
|
||||
@@ -131,7 +131,7 @@ namespace Unity.Netcode.RuntimeTests.Metrics
|
||||
|
||||
var namedMessageSentMetricValues = waitForMetricValues.AssertMetricValuesHaveBeenFound();
|
||||
Assert.AreEqual(2, namedMessageSentMetricValues.Count);
|
||||
Assert.That(namedMessageSentMetricValues.Select(x => x.Name), Has.All.EqualTo(messageName.ToString()));
|
||||
Assert.That(namedMessageSentMetricValues.Select(x => x.Name), Has.All.EqualTo(messageName.Value.ToString()));
|
||||
Assert.That(namedMessageSentMetricValues.Select(x => x.BytesCount), Has.All.EqualTo(FastBufferWriter.GetWriteSize(messageName) + k_NamedMessageOverhead));
|
||||
}
|
||||
|
||||
@@ -139,12 +139,12 @@ namespace Unity.Netcode.RuntimeTests.Metrics
|
||||
public IEnumerator TrackNamedMessageSentMetricToSelf()
|
||||
{
|
||||
var waitForMetricValues = new WaitForEventMetricValues<NamedMessageEvent>(ServerMetrics.Dispatcher, NetworkMetricTypes.NamedMessageSent);
|
||||
var messageName = Guid.NewGuid();
|
||||
var messageName = new ForceNetworkSerializeByMemcpy<Guid>(Guid.NewGuid());
|
||||
using (var writer = new FastBufferWriter(1300, Allocator.Temp))
|
||||
{
|
||||
writer.WriteValueSafe(messageName);
|
||||
|
||||
Server.CustomMessagingManager.SendNamedMessage(messageName.ToString(), Server.LocalClientId, writer);
|
||||
Server.CustomMessagingManager.SendNamedMessage(messageName.Value.ToString(), Server.LocalClientId, writer);
|
||||
}
|
||||
|
||||
yield return waitForMetricValues.WaitForMetricsReceived();
|
||||
@@ -157,10 +157,10 @@ namespace Unity.Netcode.RuntimeTests.Metrics
|
||||
{
|
||||
var waitForMetricValues = new WaitForEventMetricValues<NamedMessageEvent>(FirstClientMetrics.Dispatcher, NetworkMetricTypes.NamedMessageReceived);
|
||||
|
||||
var messageName = Guid.NewGuid();
|
||||
var messageName = new ForceNetworkSerializeByMemcpy<Guid>(Guid.NewGuid());
|
||||
|
||||
LogAssert.Expect(LogType.Log, $"Received from {Server.LocalClientId}");
|
||||
FirstClient.CustomMessagingManager.RegisterNamedMessageHandler(messageName.ToString(), (ulong sender, FastBufferReader payload) =>
|
||||
FirstClient.CustomMessagingManager.RegisterNamedMessageHandler(messageName.Value.ToString(), (ulong sender, FastBufferReader payload) =>
|
||||
{
|
||||
Debug.Log($"Received from {sender}");
|
||||
});
|
||||
@@ -169,7 +169,7 @@ namespace Unity.Netcode.RuntimeTests.Metrics
|
||||
{
|
||||
writer.WriteValueSafe(messageName);
|
||||
|
||||
Server.CustomMessagingManager.SendNamedMessage(messageName.ToString(), FirstClient.LocalClientId, writer);
|
||||
Server.CustomMessagingManager.SendNamedMessage(messageName.Value.ToString(), FirstClient.LocalClientId, writer);
|
||||
}
|
||||
|
||||
|
||||
@@ -179,7 +179,7 @@ namespace Unity.Netcode.RuntimeTests.Metrics
|
||||
Assert.AreEqual(1, namedMessageReceivedValues.Count);
|
||||
|
||||
var namedMessageReceived = namedMessageReceivedValues.First();
|
||||
Assert.AreEqual(messageName.ToString(), namedMessageReceived.Name);
|
||||
Assert.AreEqual(messageName.Value.ToString(), namedMessageReceived.Name);
|
||||
Assert.AreEqual(Server.LocalClientId, namedMessageReceived.Connection.Id);
|
||||
Assert.AreEqual(FastBufferWriter.GetWriteSize(messageName) + k_NamedMessageOverhead, namedMessageReceived.BytesCount);
|
||||
}
|
||||
@@ -187,7 +187,7 @@ namespace Unity.Netcode.RuntimeTests.Metrics
|
||||
[UnityTest]
|
||||
public IEnumerator TrackUnnamedMessageSentMetric()
|
||||
{
|
||||
var message = Guid.NewGuid();
|
||||
var message = new ForceNetworkSerializeByMemcpy<Guid>(Guid.NewGuid());
|
||||
using (var writer = new FastBufferWriter(1300, Allocator.Temp))
|
||||
{
|
||||
writer.WriteValueSafe(message);
|
||||
@@ -211,7 +211,7 @@ namespace Unity.Netcode.RuntimeTests.Metrics
|
||||
[UnityTest]
|
||||
public IEnumerator TrackUnnamedMessageSentMetricToMultipleClients()
|
||||
{
|
||||
var message = Guid.NewGuid();
|
||||
var message = new ForceNetworkSerializeByMemcpy<Guid>(Guid.NewGuid());
|
||||
var waitForMetricValues = new WaitForEventMetricValues<UnnamedMessageEvent>(ServerMetrics.Dispatcher, NetworkMetricTypes.UnnamedMessageSent);
|
||||
using (var writer = new FastBufferWriter(1300, Allocator.Temp))
|
||||
{
|
||||
@@ -236,7 +236,7 @@ namespace Unity.Netcode.RuntimeTests.Metrics
|
||||
public IEnumerator TrackUnnamedMessageSentMetricToSelf()
|
||||
{
|
||||
var waitForMetricValues = new WaitForEventMetricValues<UnnamedMessageEvent>(ServerMetrics.Dispatcher, NetworkMetricTypes.UnnamedMessageSent);
|
||||
var messageName = Guid.NewGuid();
|
||||
var messageName = new ForceNetworkSerializeByMemcpy<Guid>(Guid.NewGuid());
|
||||
using (var writer = new FastBufferWriter(1300, Allocator.Temp))
|
||||
{
|
||||
writer.WriteValueSafe(messageName);
|
||||
@@ -252,7 +252,7 @@ namespace Unity.Netcode.RuntimeTests.Metrics
|
||||
[UnityTest]
|
||||
public IEnumerator TrackUnnamedMessageReceivedMetric()
|
||||
{
|
||||
var message = Guid.NewGuid();
|
||||
var message = new ForceNetworkSerializeByMemcpy<Guid>(Guid.NewGuid());
|
||||
var waitForMetricValues = new WaitForEventMetricValues<UnnamedMessageEvent>(FirstClientMetrics.Dispatcher, NetworkMetricTypes.UnnamedMessageReceived);
|
||||
using (var writer = new FastBufferWriter(1300, Allocator.Temp))
|
||||
{
|
||||
|
||||
@@ -24,11 +24,6 @@ namespace Unity.Netcode.RuntimeTests.Metrics
|
||||
: base(HostOrServer.Server)
|
||||
{}
|
||||
|
||||
protected override void OnOneTimeSetup()
|
||||
{
|
||||
m_NetworkTransport = NetcodeIntegrationTestHelpers.InstanceTransport.UTP;
|
||||
}
|
||||
|
||||
protected override void OnServerAndClientsCreated()
|
||||
{
|
||||
var clientTransport = (UnityTransport)m_ClientNetworkManagers[0].NetworkConfig.NetworkTransport;
|
||||
|
||||
@@ -12,13 +12,6 @@ namespace Unity.Netcode.RuntimeTests.Metrics
|
||||
{
|
||||
internal class PacketMetricsTests : SingleClientMetricTestBase
|
||||
{
|
||||
|
||||
protected override void OnOneTimeSetup()
|
||||
{
|
||||
m_NetworkTransport = NetcodeIntegrationTestHelpers.InstanceTransport.UTP;
|
||||
base.OnOneTimeSetup();
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator TrackPacketSentMetric()
|
||||
{
|
||||
|
||||
@@ -40,15 +40,6 @@ namespace Unity.Netcode.RuntimeTests.Metrics
|
||||
m_ClientCount = numberOfClients == ClientCount.OneClient ? 1 : 2;
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// Note: We are using the OnOneTimeSetup to select the transport to use for
|
||||
/// this test set.
|
||||
/// </summary>
|
||||
protected override void OnOneTimeSetup()
|
||||
{
|
||||
m_NetworkTransport = NetcodeIntegrationTestHelpers.InstanceTransport.UTP;
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator TrackRttMetricServerToClient()
|
||||
{
|
||||
|
||||
@@ -16,6 +16,12 @@ namespace Unity.Netcode.RuntimeTests.Metrics
|
||||
private static readonly int k_ServerLogSentMessageOverhead = 2 + k_MessageHeaderSize;
|
||||
private static readonly int k_ServerLogReceivedMessageOverhead = 2;
|
||||
|
||||
protected override IEnumerator OnSetup()
|
||||
{
|
||||
m_CreateServerFirst = false;
|
||||
return base.OnSetup();
|
||||
}
|
||||
|
||||
[UnityTest]
|
||||
public IEnumerator TrackServerLogSentMetric()
|
||||
{
|
||||
|
||||
@@ -20,14 +20,14 @@ namespace Unity.Netcode.RuntimeTests.Metrics
|
||||
[UnityTest]
|
||||
public IEnumerator TrackTotalNumberOfBytesSent()
|
||||
{
|
||||
var messageName = Guid.NewGuid();
|
||||
var messageName = new ForceNetworkSerializeByMemcpy<Guid>(Guid.NewGuid());
|
||||
var writer = new FastBufferWriter(1300, Allocator.Temp);
|
||||
var observer = new TotalBytesObserver(ClientMetrics.Dispatcher, NetworkMetricTypes.TotalBytesReceived);
|
||||
try
|
||||
{
|
||||
writer.WriteValueSafe(messageName);
|
||||
|
||||
Server.CustomMessagingManager.SendNamedMessage(messageName.ToString(), Client.LocalClientId, writer);
|
||||
Server.CustomMessagingManager.SendNamedMessage(messageName.Value.ToString(), Client.LocalClientId, writer);
|
||||
}
|
||||
finally
|
||||
{
|
||||
@@ -48,14 +48,14 @@ namespace Unity.Netcode.RuntimeTests.Metrics
|
||||
[UnityTest]
|
||||
public IEnumerator TrackTotalNumberOfBytesReceived()
|
||||
{
|
||||
var messageName = Guid.NewGuid();
|
||||
var messageName = new ForceNetworkSerializeByMemcpy<Guid>(Guid.NewGuid());
|
||||
var writer = new FastBufferWriter(1300, Allocator.Temp);
|
||||
var observer = new TotalBytesObserver(ClientMetrics.Dispatcher, NetworkMetricTypes.TotalBytesReceived);
|
||||
try
|
||||
{
|
||||
writer.WriteValueSafe(messageName);
|
||||
|
||||
Server.CustomMessagingManager.SendNamedMessage(messageName.ToString(), Client.LocalClientId, writer);
|
||||
Server.CustomMessagingManager.SendNamedMessage(messageName.Value.ToString(), Client.LocalClientId, writer);
|
||||
}
|
||||
finally
|
||||
{
|
||||
|
||||
Reference in New Issue
Block a user