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

@@ -139,21 +139,21 @@ namespace Unity.Netcode.TestHelpers.Runtime
protected bool m_UseHost = true;
protected bool m_DistributedAuthority;
protected SessionModeTypes m_SessionModeType = SessionModeTypes.ClientServer;
protected NetworkTopologyTypes m_NetworkTopologyType = NetworkTopologyTypes.ClientServer;
protected virtual bool UseCMBService()
{
return false;
}
protected virtual SessionModeTypes OnGetSessionmode()
protected virtual NetworkTopologyTypes OnGetNetworkTopologyType()
{
return m_SessionModeType;
return m_NetworkTopologyType;
}
protected void SetDistributedAuthorityProperties(NetworkManager networkManager)
{
networkManager.NetworkConfig.SessionMode = m_SessionModeType;
networkManager.NetworkConfig.NetworkTopology = m_NetworkTopologyType;
networkManager.NetworkConfig.AutoSpawnPlayerPrefabClientSide = m_DistributedAuthority;
networkManager.NetworkConfig.UseCMBService = UseCMBService() && m_DistributedAuthority;
}
@@ -1567,7 +1567,7 @@ namespace Unity.Netcode.TestHelpers.Runtime
Assert.IsFalse(m_ServerNetworkManager.IsListening, prefabCreateAssertError);
var prefabObject = NetcodeIntegrationTestHelpers.CreateNetworkObjectPrefab(baseName, m_ServerNetworkManager, m_ClientNetworkManagers);
// DANGO-TODO: Ownership flags could require us to change this
// For testing purposes, we default to true for the distribute ownership property when in distirbuted authority session mode.
// For testing purposes, we default to true for the distribute ownership property when in a distirbuted authority network topology.
prefabObject.GetComponent<NetworkObject>().Ownership |= NetworkObject.OwnershipStatus.Distributable;
return prefabObject;
}
@@ -1605,7 +1605,7 @@ namespace Unity.Netcode.TestHelpers.Runtime
var newInstance = Object.Instantiate(prefabNetworkObject.gameObject);
var networkObjectToSpawn = newInstance.GetComponent<NetworkObject>();
if (owner.NetworkConfig.SessionMode == SessionModeTypes.DistributedAuthority)
if (owner.NetworkConfig.NetworkTopology == NetworkTopologyTypes.DistributedAuthority)
{
networkObjectToSpawn.NetworkManagerOwner = owner; // Required to assure the client does the spawning
if (isPlayerObject)
@@ -1687,15 +1687,15 @@ namespace Unity.Netcode.TestHelpers.Runtime
/// </summary>
public NetcodeIntegrationTest()
{
m_SessionModeType = OnGetSessionmode();
m_DistributedAuthority = OnGetSessionmode() == SessionModeTypes.DistributedAuthority;
m_NetworkTopologyType = OnGetNetworkTopologyType();
m_DistributedAuthority = m_NetworkTopologyType == NetworkTopologyTypes.DistributedAuthority;
NetworkMessageManager.EnableMessageOrderConsoleLog = false;
}
public NetcodeIntegrationTest(SessionModeTypes sessionMode)
public NetcodeIntegrationTest(NetworkTopologyTypes networkTopologyType)
{
m_SessionModeType = sessionMode;
m_DistributedAuthority = OnGetSessionmode() == SessionModeTypes.DistributedAuthority;
m_NetworkTopologyType = networkTopologyType;
m_DistributedAuthority = m_NetworkTopologyType == NetworkTopologyTypes.DistributedAuthority;
}
/// <summary>
@@ -1717,8 +1717,8 @@ namespace Unity.Netcode.TestHelpers.Runtime
public NetcodeIntegrationTest(HostOrServer hostOrServer)
{
m_UseHost = hostOrServer == HostOrServer.Host || hostOrServer == HostOrServer.DAHost;
m_SessionModeType = hostOrServer == HostOrServer.DAHost ? SessionModeTypes.DistributedAuthority : SessionModeTypes.ClientServer;
m_DistributedAuthority = OnGetSessionmode() == SessionModeTypes.DistributedAuthority;
m_NetworkTopologyType = hostOrServer == HostOrServer.DAHost ? NetworkTopologyTypes.DistributedAuthority : NetworkTopologyTypes.ClientServer;
m_DistributedAuthority = OnGetNetworkTopologyType() == NetworkTopologyTypes.DistributedAuthority;
}
/// <summary>