com.unity.netcode.gameobjects@2.0.0-exp.4

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).

## [2.0.0-exp.4] - 2024-05-31

### Added

- Added `NetworkRigidbodyBase.AttachToFixedJoint` and `NetworkRigidbodyBase.DetachFromFixedJoint` to replace parenting for rigid bodies that have `NetworkRigidbodyBase.UseRigidBodyForMotion` enabled. (#2933)
- Added `NetworkBehaviour.OnNetworkPreSpawn` and `NetworkBehaviour.OnNetworkPostSpawn` methods that provide the ability to handle pre and post spawning actions during the `NetworkObject` spawn sequence. (#2912)
- Added a client-side only `NetworkBehaviour.OnNetworkSessionSynchronized` convenience method that is invoked on all `NetworkBehaviour`s after a newly joined client has finished synchronizing with the network session in progress. (#2912)
- Added `NetworkBehaviour.OnInSceneObjectsSpawned` convenience method that is invoked when all in-scene `NetworkObject`s have been spawned after a scene has been loaded or upon a host or server starting. (#2912)

### Fixed

- Fixed issue where non-authoritative rigid bodies with `NetworkRigidbodyBase.UseRigidBodyForMotion` enabled would constantly log errors about the renderTime being before `StartTimeConsumed`. (#2933)
- Fixed issue where in-scene placed NetworkObjects could be destroyed if a client disconnects early and/or before approval. (#2924)
- Fixed issue where a `NetworkObject` component's associated `NetworkBehaviour` components would not be detected if scene loading is disabled in the editor and the currently loaded scene has in-scene placed `NetworkObject`s. (#2912)
- Fixed issue where an in-scene placed `NetworkObject` with `NetworkTransform` that is also parented under a `GameObject` would not properly synchronize when the parent `GameObject` had a world space position other than 0,0,0. (#2898)

### Changed

- Change all the access modifiers of test class from Public to Internal (#2930)
- Changed messages are now sorted by enum values as opposed to ordinally sorting the messages by their type name. (#2929)
- Changed `NetworkClient.SessionModeTypes` to `NetworkClient.NetworkTopologyTypes`. (#2875)
- Changed `NetworkClient.SessionModeType` to `NetworkClient.NetworkTopologyType`. (#2875)
- Changed `NetworkConfig.SessionMode` to `NeworkConfig.NetworkTopology`. (#2875)
This commit is contained in:
Unity Technologies
2024-05-31 00:00:00 +00:00
parent 143a6cbd34
commit 63c7e4c78a
177 changed files with 1792 additions and 820 deletions

View File

@@ -2,7 +2,7 @@ using NUnit.Framework;
namespace Unity.Netcode.EditorTests
{
public class ArithmeticTests
internal class ArithmeticTests
{
[Test]
public void TestCeil()

View File

@@ -8,7 +8,7 @@ using UnityEngine;
namespace Unity.Netcode.EditorTests
{
public class BuildTests
internal class BuildTests
{
public const string DefaultBuildScenePath = "Tests/Editor/Build/BuildTestScene.unity";

View File

@@ -3,7 +3,7 @@ using Unity.Collections;
namespace Unity.Netcode.EditorTests
{
public class DisconnectMessageTests
internal class DisconnectMessageTests
{
[Test]
public void EmptyDisconnectReason()

View File

@@ -3,7 +3,7 @@ using NUnit.Framework;
namespace Unity.Netcode.EditorTests
{
public class InterpolatorTests
internal class InterpolatorTests
{
private const float k_Precision = 0.00000001f;
private const int k_MockTickRate = 1;

View File

@@ -3,7 +3,7 @@ using NUnit.Framework;
namespace Unity.Netcode.EditorTests
{
public class DisconnectOnSendTests
internal class DisconnectOnSendTests
{
private struct TestMessage : INetworkMessage, INetworkSerializeByMemcpy
{

View File

@@ -10,7 +10,7 @@ using UnityEngine.TestTools;
namespace Unity.Netcode.EditorTests
{
public class MessageCorruptionTests
internal class MessageCorruptionTests
{
private struct TestMessage : INetworkMessage, INetworkSerializeByMemcpy

View File

@@ -7,7 +7,7 @@ using Unity.Collections.LowLevel.Unsafe;
namespace Unity.Netcode.EditorTests
{
public class MessageReceivingTests
internal class MessageReceivingTests
{
private struct TestMessage : INetworkMessage, INetworkSerializeByMemcpy
{

View File

@@ -3,7 +3,7 @@ using NUnit.Framework;
namespace Unity.Netcode.EditorTests
{
public class MessageRegistrationTests
internal class MessageRegistrationTests
{
private struct TestMessageOne : INetworkMessage, INetworkSerializeByMemcpy
{
@@ -191,77 +191,5 @@ namespace Unity.Netcode.EditorTests
Assert.AreEqual(handlerFour, systemThree.MessageHandlers[systemThree.GetMessageType(typeof(TestMessageFour))]);
}
}
internal class AAAEarlyLexicographicNetworkMessage : INetworkMessage
{
public void Serialize(FastBufferWriter writer, int targetVersion)
{
}
public bool Deserialize(FastBufferReader reader, ref NetworkContext context, int receivedMessageVersion)
{
return true;
}
public void Handle(ref NetworkContext context)
{
}
public int Version => 0;
}
#pragma warning disable IDE1006
internal class zzzLateLexicographicNetworkMessage : AAAEarlyLexicographicNetworkMessage
{
}
#pragma warning restore IDE1006
internal class OrderingMessageProvider : INetworkMessageProvider
{
public List<NetworkMessageManager.MessageWithHandler> GetMessages()
{
var listMessages = new List<NetworkMessageManager.MessageWithHandler>();
var messageWithHandler = new NetworkMessageManager.MessageWithHandler
{
MessageType = typeof(zzzLateLexicographicNetworkMessage),
GetVersion = NetworkMessageManager.CreateMessageAndGetVersion<zzzLateLexicographicNetworkMessage>
};
listMessages.Add(messageWithHandler);
messageWithHandler.MessageType = typeof(ConnectionRequestMessage);
messageWithHandler.GetVersion = NetworkMessageManager.CreateMessageAndGetVersion<ConnectionRequestMessage>;
listMessages.Add(messageWithHandler);
messageWithHandler.MessageType = typeof(ConnectionApprovedMessage);
messageWithHandler.GetVersion = NetworkMessageManager.CreateMessageAndGetVersion<ConnectionApprovedMessage>;
listMessages.Add(messageWithHandler);
messageWithHandler.MessageType = typeof(AAAEarlyLexicographicNetworkMessage);
messageWithHandler.GetVersion = NetworkMessageManager.CreateMessageAndGetVersion<AAAEarlyLexicographicNetworkMessage>;
listMessages.Add(messageWithHandler);
return listMessages;
}
}
[Test]
public void MessagesGetPrioritizedCorrectly()
{
var sender = new NopMessageSender();
var provider = new OrderingMessageProvider();
using var messageManager = new NetworkMessageManager(sender, null, provider);
// the 2 priority messages should appear first, in lexicographic order
Assert.AreEqual(messageManager.MessageTypes[0], typeof(ConnectionApprovedMessage));
Assert.AreEqual(messageManager.MessageTypes[1], typeof(ConnectionRequestMessage));
// the other should follow after
Assert.AreEqual(messageManager.MessageTypes[2], typeof(AAAEarlyLexicographicNetworkMessage));
Assert.AreEqual(messageManager.MessageTypes[3], typeof(zzzLateLexicographicNetworkMessage));
// there should not be any extras
Assert.AreEqual(messageManager.MessageHandlerCount, 4);
}
}
}

View File

@@ -10,7 +10,7 @@ using Random = System.Random;
namespace Unity.Netcode.EditorTests
{
public class MessageSendingTests
internal class MessageSendingTests
{
private struct TestMessage : INetworkMessage, INetworkSerializeByMemcpy
{

View File

@@ -5,7 +5,7 @@ using NUnit.Framework.Internal;
namespace Unity.Netcode.EditorTests
{
public class MessageVersioningTests
internal class MessageVersioningTests
{
public static int SentVersion;
public static int ReceivedVersion;

View File

@@ -8,7 +8,7 @@ using Unity.Multiplayer.Tools.NetStats;
namespace Unity.Netcode.EditorTests.Metrics
{
public class NetworkMetricsRegistrationTests
internal class NetworkMetricsRegistrationTests
{
private static Type[] s_MetricTypes = AppDomain.CurrentDomain.GetAssemblies()
.SelectMany(x => x.GetTypes())

View File

@@ -4,7 +4,7 @@ using Object = UnityEngine.Object;
namespace Unity.Netcode.EditorTests
{
public class NetworkBehaviourTests
internal class NetworkBehaviourTests
{
[Test]
public void HasNetworkObjectTest()
@@ -66,12 +66,12 @@ namespace Unity.Netcode.EditorTests
// Note: in order to repro https://github.com/Unity-Technologies/com.unity.netcode.gameobjects/issues/1078
// this child class must be defined before its parent to assure it is processed first by ILPP
public class DerivedNetworkBehaviour : EmptyNetworkBehaviour
internal class DerivedNetworkBehaviour : EmptyNetworkBehaviour
{
}
public class EmptyNetworkBehaviour : NetworkBehaviour
internal class EmptyNetworkBehaviour : NetworkBehaviour
{
}

View File

@@ -9,8 +9,20 @@ using UnityEngine.TestTools;
namespace Unity.Netcode.EditorTests
{
public class NetworkManagerConfigurationTests
internal class NetworkManagerConfigurationTests
{
[SetUp]
public void OnSetup()
{
ILPPMessageProvider.IntegrationTestNoMessages = true;
}
[TearDown]
public void OnTearDown()
{
ILPPMessageProvider.IntegrationTestNoMessages = false;
}
/// <summary>
/// Does a simple check to make sure the nested network manager will
/// notify the user when in the editor. This is just a unit test to

View File

@@ -6,7 +6,7 @@ using UnityEngine.TestTools;
namespace Unity.Netcode.EditorTests
{
public class NetworkObjectTests
internal class NetworkObjectTests
{
[Test]
public void NetworkManagerOverrideTest()
@@ -146,12 +146,12 @@ namespace Unity.Netcode.EditorTests
public int NetworkBehaviourIndex;
}
public class EmptyNetworkBehaviour : NetworkBehaviour
internal class EmptyNetworkBehaviour : NetworkBehaviour
{
}
public class EmptyMonoBehaviour : MonoBehaviour
internal class EmptyMonoBehaviour : MonoBehaviour
{
}

View File

@@ -5,7 +5,7 @@ using UnityEngine;
namespace Unity.Netcode.EditorTests
{
public class NetworkPrefabProcessorTests
internal class NetworkPrefabProcessorTests
{
private NetcodeForGameObjectsProjectSettings m_Settings;
private bool m_EditorDefaultPrefabSetting;

View File

@@ -3,9 +3,9 @@ using UnityEngine;
namespace Unity.Netcode.EditorTests.NetworkVar
{
public class NetworkVarTests
internal class NetworkVarTests
{
public class NetworkVarComponent : NetworkBehaviour
internal class NetworkVarComponent : NetworkBehaviour
{
public NetworkVariable<int> NetworkVariable = new NetworkVariable<int>();
}

View File

@@ -6,7 +6,7 @@ using Random = System.Random;
namespace Unity.Netcode.EditorTests
{
public abstract class BaseFastBufferReaderWriterTest
internal abstract class BaseFastBufferReaderWriterTest
{
protected enum ByteEnum : byte
{

View File

@@ -2,7 +2,7 @@ using NUnit.Framework;
namespace Unity.Netcode.EditorTests
{
public class BitCounterTests
internal class BitCounterTests
{
[Test]
public void WhenCountingUsedBitsIn64BitValue_ResultMatchesHighBitSetPlusOne([Range(0, 63)] int highBit)

View File

@@ -4,7 +4,7 @@ using Unity.Collections;
namespace Unity.Netcode.EditorTests
{
public class BitReaderTests
internal class BitReaderTests
{
[Test]
public void TestReadingOneBit()

View File

@@ -4,7 +4,7 @@ using Unity.Collections;
namespace Unity.Netcode.EditorTests
{
public class BitWriterTests
internal class BitWriterTests
{
[Test]
public unsafe void TestWritingOneBit()

View File

@@ -5,7 +5,7 @@ using Random = System.Random;
namespace Unity.Netcode.EditorTests
{
public class BufferSerializerTests
internal class BufferSerializerTests
{
[Test]
public void TestIsReaderIsWriter()

View File

@@ -8,7 +8,7 @@ using Random = System.Random;
namespace Unity.Netcode.EditorTests
{
public class BytePackerTests
internal class BytePackerTests
{
private enum ByteEnum : byte
{

View File

@@ -7,7 +7,7 @@ using Random = System.Random;
namespace Unity.Netcode.EditorTests
{
public class FastBufferReaderTests : BaseFastBufferReaderWriterTest
internal class FastBufferReaderTests : BaseFastBufferReaderWriterTest
{
private void WriteCheckBytes(FastBufferWriter writer, int writeSize, string failMessage = "")
{

View File

@@ -8,7 +8,7 @@ using Random = System.Random;
namespace Unity.Netcode.EditorTests
{
public class FastBufferWriterTests : BaseFastBufferReaderWriterTest
internal class FastBufferWriterTests : BaseFastBufferReaderWriterTest
{
private void WriteCheckBytes(FastBufferWriter writer, int writeSize, string failMessage = "")
{

View File

@@ -3,7 +3,7 @@ using Unity.Collections;
namespace Unity.Netcode.EditorTests
{
public class UserBitReaderAndBitWriterTests_NCCBUG175
internal class UserBitReaderAndBitWriterTests_NCCBUG175
{
[Test]

View File

@@ -7,7 +7,7 @@ namespace Unity.Netcode.EditorTests
/// <summary>
/// Tests for running a <see cref="NetworkTimeSystem"/> as a client.
/// </summary>
public class ClientNetworkTimeSystemTests
internal class ClientNetworkTimeSystemTests
{
private const double k_AcceptableRttOffset = 0.03d; // 30ms offset is fine

View File

@@ -7,7 +7,7 @@ using Random = System.Random;
namespace Unity.Netcode.EditorTests
{
public class NetworkTimeTests
internal class NetworkTimeTests
{
[Test]
[TestCase(0d, 0u)]

View File

@@ -3,7 +3,7 @@ using UnityEngine;
namespace Unity.Netcode.EditorTests
{
public class ServerNetworkTimeSystemTests
internal class ServerNetworkTimeSystemTests
{
/// <summary>

View File

@@ -7,7 +7,7 @@ namespace Unity.Netcode.EditorTests
/// <summary>
/// Helper functions for timing related tests. Allows to get a set of time steps and simulate time advancing without the need of a full playmode test.
/// </summary>
public static class TimingTestHelper
internal static class TimingTestHelper
{
public static List<float> GetRandomTimeSteps(float totalDuration, float min, float max, int seed)
{

View File

@@ -8,7 +8,7 @@ using Unity.Networking.Transport;
namespace Unity.Netcode.EditorTests
{
public class BatchedReceiveQueueTests
internal class BatchedReceiveQueueTests
{
[Test]
public void BatchedReceiveQueue_EmptyReader()

View File

@@ -8,7 +8,7 @@ using Unity.Networking.Transport;
namespace Unity.Netcode.EditorTests
{
public class BatchedSendQueueTests
internal class BatchedSendQueueTests
{
private const int k_TestQueueCapacity = 16 * 1024;
private const int k_TestMessageSize = 1020;

View File

@@ -7,7 +7,7 @@ using UnityEngine.TestTools;
namespace Unity.Netcode.EditorTests
{
public class UNetTransportTests
internal class UNetTransportTests
{
[Test]
public void StartServerReturnsFalseOnFailure()

View File

@@ -5,8 +5,20 @@ using UnityEngine.TestTools;
namespace Unity.Netcode.EditorTests
{
public class UnityTransportTests
internal class UnityTransportTests
{
[SetUp]
public void OnSetup()
{
ILPPMessageProvider.IntegrationTestNoMessages = true;
}
[TearDown]
public void OnTearDown()
{
ILPPMessageProvider.IntegrationTestNoMessages = false;
}
// Check that starting an IPv4 server succeeds.
[Test]
public void UnityTransport_BasicInitServer_IPv4()

View File

@@ -2,7 +2,7 @@ using NUnit.Framework;
namespace Unity.Netcode.EditorTests
{
public class XXHashTests
internal class XXHashTests
{
[Test]
public void TestXXHash32Short()