Skip to content

Commit e7ac3c8

Browse files
chore: update to for Unity6 support (#2863)
* update make the unity 6 editor the target * update updating the target editor to use for all tests * update Update changes from PascalCasing to camelCasing. Updating the manifest.json. Updating the ProjectVersion. * fixes and update fixing an issue with one of the scene integration tests. Updating the addressable asset settings for Unity 6 compatibility. other minor updates. * update NGO version number. Added a large chunk of the changelog entries.
1 parent 0f34139 commit e7ac3c8

11 files changed

Lines changed: 134 additions & 67 deletions

File tree

.yamato/project.metafile

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
1-
validation_editor: 2022.3
2-
mobile_validation_editor: 2022.3
1+
validation_editor: 6000.0
2+
mobile_validation_editor: 6000.0
33

44
# Platforms that will be tested. The first entry in this array will also
55
# be used for validation
@@ -42,8 +42,7 @@ projects:
4242
- name: com.unity.netcode.gameobjects
4343
path: com.unity.netcode.gameobjects
4444
test_editors:
45-
- 2022.3
46-
- 2023.2
45+
- 6000.0
4746
- trunk
4847
- name: minimalproject
4948
path: minimalproject
@@ -54,22 +53,22 @@ projects:
5453
- name: com.unity.netcode.gameobjects
5554
path: com.unity.netcode.gameobjects
5655
test_editors:
57-
- 2022.3
56+
- 6000.0
5857
- name: testproject-tools-integration
5958
path: testproject-tools-integration
6059
validate: false
6160
publish: false
6261
has_tests: true
6362
test_editors:
64-
- 2022.3
63+
- 6000.0
6564
- trunk
6665

6766
# Package dependencies
6867
dependencies:
6968
- name: com.unity.transport
70-
version: 2.0.0-pre.2
69+
version: 2.2.1
7170
test_editors:
72-
- 2022.2
71+
- 6000.0
7372
- trunk
7473

7574
# Scripting backends used by Standalone Playmode Tests

com.unity.netcode.gameobjects/CHANGELOG.md

Lines changed: 60 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -6,9 +6,61 @@ The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/)
66

77
Additional documentation and release notes are available at [Multiplayer Documentation](https://docs-multiplayer.unity3d.com).
88

9-
## [Unreleased]
9+
## [2.0.0-exp.2] - 2024-04-02
1010

1111
### Added
12+
- Added updates to all internal messages to account for a distributed authority network session connection. (#2863)
13+
- Added `NetworkRigidbodyBase` that provides users with a more customizable network rigidbody, handles both `Rigidbody` and `Rigidbody2D`, and provides an option to make `NetworkTransform` use the rigid body for motion. (#2863)
14+
- For a customized `NetworkRigidbodyBase` class:
15+
- `NetworkRigidbodyBase.AutoUpdateKinematicState` provides control on whether the kinematic setting will be automatically set or not when ownership changes.
16+
- `NetworkRigidbodyBase.AutoSetKinematicOnDespawn` provides control on whether isKinematic will automatically be set to true when the associated `NetworkObject` is despawned.
17+
- `NetworkRigidbodyBase.Initialize` is a protected method that, when invoked, will initialize the instance. This includes options to:
18+
- Set whether using a `RigidbodyTypes.Rigidbody` or `RigidbodyTypes.Rigidbody2D`.
19+
- Includes additional optional parameters to set the `NetworkTransform`, `Rigidbody`, and `Rigidbody2d` to use.
20+
- Provides additional public methods:
21+
- `NetworkRigidbodyBase.GetPosition` to return the position of the `Rigidbody` or `Rigidbody2d` (depending upon its initialized setting).
22+
- `NetworkRigidbodyBase.GetRotation` to return the rotation of the `Rigidbody` or `Rigidbody2d` (depending upon its initialized setting).
23+
- `NetworkRigidbodyBase.MovePosition` to move to the position of the `Rigidbody` or `Rigidbody2d` (depending upon its initialized setting).
24+
- `NetworkRigidbodyBase.MoveRotation` to move to the rotation of the `Rigidbody` or `Rigidbody2d` (depending upon its initialized setting).
25+
- `NetworkRigidbodyBase.Move` to move to the position and rotation of the `Rigidbody` or `Rigidbody2d` (depending upon its initialized setting).
26+
- `NetworkRigidbodyBase.Move` to move to the position and rotation of the `Rigidbody` or `Rigidbody2d` (depending upon its initialized setting).
27+
- `NetworkRigidbodyBase.SetPosition` to set the position of the `Rigidbody` or `Rigidbody2d` (depending upon its initialized setting).
28+
- `NetworkRigidbodyBase.SetRotation` to set the rotation of the `Rigidbody` or `Rigidbody2d` (depending upon its initialized setting).
29+
- `NetworkRigidbodyBase.ApplyCurrentTransform` to set the position and rotation of the `Rigidbody` or `Rigidbody2d` based on the associated `GameObject` transform (depending upon its initialized setting).
30+
- `NetworkRigidbodyBase.WakeIfSleeping` to wake up the rigid body if sleeping.
31+
- `NetworkRigidbodyBase.SleepRigidbody` to put the rigid body to sleep.
32+
- `NetworkRigidbodyBase.IsKinematic` to determine if the `Rigidbody` or `Rigidbody2d` (depending upon its initialized setting) is currently kinematic.
33+
- `NetworkRigidbodyBase.SetIsKinematic` to set the `Rigidbody` or `Rigidbody2d` (depending upon its initialized setting) current kinematic state.
34+
- `NetworkRigidbodyBase.ResetInterpolation` to reset the `Rigidbody` or `Rigidbody2d` (depending upon its initialized setting) back to its original interpolation value when initialized.
35+
- Now includes a `MonoBehaviour.FixedUpdate` implementation that will update the assigned `NetworkTransform` when `NetworkRigidbodyBase.UseRigidBodyForMotion` is true. (#2863)
36+
- Added `RigidbodyContactEventManager` that provides a more optimized way to process collision enter and collision stay events as opposed to the `Monobehaviour` approach. (#2863)
37+
- Can be used in client-server and distributed authority modes, but is particularly useful in distributed authority.
38+
- Added rigid body motion updates to `NetworkTransform` which allows users to set interolation on rigid bodies. (#2863)
39+
- Extrapolation is only allowed on authoritative instances, but custom class derived from `NetworkRigidbodyBase` or `NetworkRigidbody` or `NetworkRigidbody2D` automatically switches non-authoritative instances to interpolation if set to extrapolation.
40+
- Added distributed authority mode support to `NetworkAnimator`. (#2863)
41+
- Added session mode selection to `NetworkManager` inspector view. (#2863)
42+
- Added distributed authority permissions feature. (#2863)
43+
- Added distributed authority mode specific `NetworkObject` permissions flags (Distributable, Transferable, and RequestRequired). (#2863)
44+
- Added distributed authority mode specific `NetworkObject.SetOwnershipStatus` method that applies one or more `NetworkObject` instance's ownership flags. If updated when spawned, the ownership permission changes are synchronized with the other connected clients. (#2863)
45+
- Added distributed authority mode specific `NetworkObject.RemoveOwnershipStatus` method that removes one or more `NetworkObject` instance's ownership flags. If updated when spawned, the ownership permission changes are synchronized with the other connected clients. (#2863)
46+
- Added distributed authority mode specific `NetworkObject.HasOwnershipStatus` method that will return (true or false) whether one or more ownership flags is set. (#2863)
47+
- Added distributed authority mode specific `NetworkObject.SetOwnershipLock` method that locks ownership of a `NetworkObject` to prevent ownership from changing until the current owner releases the lock. (#2863)
48+
- Added distributed authority mode specific `NetworkObject.RequestOwnership` method that sends an ownership request to the current owner of a spawned `NetworkObject` instance. (#2863)
49+
- Added distributed authority mode specific `NetworkObject.OnOwnershipRequested` callback handler that is invoked on the owner/authoritative side when a non-owner requests ownership. Depending upon the boolean returned value depends upon whether the request is approved or denied. (#2863)
50+
- Added distributed authority mode specific `NetworkObject.OnOwnershipRequestResponse` callback handler that is invoked when a non-owner's request has been processed. This callback includes a `NetworkObjet.OwnershipRequestResponseStatus` response parameter that describes whether the request was approved or the reason why it was not approved. (#2863)
51+
- Added distributed authority mode specific `NetworkObject.DeferDespawn` method that defers the despawning of `NetworkObject` instances on non-authoritative clients based on the tick offset parameter. (#2863)
52+
- Added distributed authority mode specific `NetworkObject.OnDeferredDespawnComplete` callback handler that can be used to further control when deferring the despawning of a `NetworkObject` on non-authoritative instances. (#2863)
53+
- Added `NetworkClient.SessionModeType` as one way to determine the current session mode of the network session a client is connected to. (#2863)
54+
- Added distributed authority mode specific `NetworkClient.IsSessionOwner` property to determine if the current local client is the current session owner of a distributed authority session. (#2863)
55+
- Added distributed authority mode specific client side spawning capabilities. When running in distributed authority mode, clients can instantiate and spawn `NetworkObject` instances (the local client is authomatically the owner of the spawned object). (#2863)
56+
- This is useful to better visually synchronize owner authoritative motion models and newly spawned `NetworkObject` instances (i.e. projectiles for example).
57+
- Added distributed authority mode specific client side player spawning capabilities. Clients will automatically spawn their associated player object locally. (#2863)
58+
- Added distributed authority mode specific `NetworkConfig.AutoSpawnPlayerPrefabClientSide` property (default is true) to provide control over the automatic spawning of player prefabs on the local client side. (#2863)
59+
- Added distributed authority mode specific `NetworkManager.OnFetchLocalPlayerPrefabToSpawn` callback that, when assigned, will allow the local client to provide the player prefab to be spawned for the local client. (#2863)
60+
- This is only invoked if the `NetworkConfig.AutoSpawnPlayerPrefabClientSide` property is set to true.
61+
- Added distributed authority mode specific `NetworkBehaviour.HasAuthority` property that determines if the local client has authority over the associated `NetworkObject` instance (typical use case is within a `NetworkBehaviour` script much like that of `IsServer` or `IsClient`). (#2863)
62+
- Added distributed authority mode specific `NetworkBehaviour.IsSessionOwner` property that determines if the local client is the session owner (typical use case would be to determine if the local client can has scene management authority within a `NetworkBehaviour` script). (#2863)
63+
- Added support for distributed authority mode scene management where the currently assigned session owner can start scene events (i.e. scene loading and scene unloading). (#2863)
1264

1365
### Fixed
1466

@@ -17,7 +69,13 @@ Additional documentation and release notes are available at [Multiplayer Documen
1769
- Fixed issue where in-scene placed `NetworkObject`s with complex nested children `NetworkObject`s (more than one child in depth) would not synchronize properly if WorldPositionStays was set to true. (#2796)
1870

1971
### Changed
20-
72+
- Changed client side awareness of other clients is now the same as a server or host. (#2863)
73+
- Changed `NetworkManager.ConnectedClients` can now be accessed by both server and clients. (#2863)
74+
- Changed `NetworkManager.ConnectedClientsList` can now be accessed by both server and clients. (#2863)
75+
- Changed `NetworkTransform` defaults to owner authoritative when connected to a distributed authority session. (#2863)
76+
- Changed `NetworkVariable` defaults to owner write and everyone read permissions when connected to a distributed authority session (even if declared with server read or write permissions). (#2863)
77+
- Changed `NetworkObject` no longer implements the `MonoBehaviour.Update` method in order to determine whether a `NetworkObject` instance has been migrated to a different scene. Instead, only `NetworkObjects` with the `SceneMigrationSynchronization` property set will be updated internally during the `NetworkUpdateStage.PostLateUpdate` by `NetworkManager`. (#2863)
78+
- Changed `NetworkManager` inspector view layout where properties are now organized by category. (#2863)
2179
- Changed `NetworkTransform` to now use `NetworkTransformMessage` as opposed to named messages for NetworkTransformState updates. (#2810)
2280
- Changed `CustomMessageManager` so it no longer attempts to register or "unregister" a null or empty string and will log an error if this condition occurs. (#2807)
2381

com.unity.netcode.gameobjects/Components/RigidbodyContactEventManager.cs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -170,28 +170,28 @@ public void Execute(int index)
170170
int count = 0;
171171
int collisionStaycount = 0;
172172
int positionCount = 0;
173-
for (int j = 0; j < PairedHeaders[index].PairCount; j++)
173+
for (int j = 0; j < PairedHeaders[index].pairCount; j++)
174174
{
175175
ref readonly var pair = ref PairedHeaders[index].GetContactPair(j);
176176

177-
if (pair.IsCollisionExit)
177+
if (pair.isCollisionExit)
178178
{
179179
continue;
180180
}
181181

182-
for (int k = 0; k < pair.ContactCount; k++)
182+
for (int k = 0; k < pair.contactCount; k++)
183183
{
184184
ref readonly var contact = ref pair.GetContactPoint(k);
185-
averagePoint += contact.Position;
185+
averagePoint += contact.position;
186186
positionCount++;
187-
if (!pair.IsCollisionStay)
187+
if (!pair.isCollisionStay)
188188
{
189-
averageNormal += contact.Normal;
189+
averageNormal += contact.normal;
190190
count++;
191191
}
192192
else
193193
{
194-
averageCollisionStay += contact.Normal;
194+
averageCollisionStay += contact.normal;
195195
collisionStaycount++;
196196
}
197197
}
@@ -214,8 +214,8 @@ public void Execute(int index)
214214

215215
var result = new JobResultStruct()
216216
{
217-
ThisInstanceID = PairedHeaders[index].BodyInstanceID,
218-
OtherInstanceID = PairedHeaders[index].OtherBodyInstanceID,
217+
ThisInstanceID = PairedHeaders[index].bodyInstanceID,
218+
OtherInstanceID = PairedHeaders[index].otherBodyInstanceID,
219219
AverageNormal = averageNormal,
220220
HasCollisionStay = collisionStaycount != 0,
221221
AverageCollisionStayNormal = averageCollisionStay,

com.unity.netcode.gameobjects/Runtime/SceneManagement/NetworkSceneManager.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1888,7 +1888,7 @@ private void OnSessionOwnerLoadedScene(uint sceneEventId, Scene scene)
18881888
OnLoadComplete?.Invoke(NetworkManager.LocalClientId, SceneNameFromHash(sceneEventData.SceneHash), sceneEventData.LoadSceneMode);
18891889

18901890
//Second, only if we are a host do we want register having loaded for the associated SceneEventProgress
1891-
if (SceneEventProgressTracking.ContainsKey(sceneEventData.SceneEventProgressId) && NetworkManager.IsHost)
1891+
if (SceneEventProgressTracking.ContainsKey(sceneEventData.SceneEventProgressId) && NetworkManager.IsClient)
18921892
{
18931893
SceneEventProgressTracking[sceneEventData.SceneEventProgressId].ClientFinishedSceneEvent(NetworkManager.LocalClientId);
18941894
}

com.unity.netcode.gameobjects/Runtime/SceneManagement/SceneEventProgress.cs

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ internal void TryFinishingSceneEventProgress()
300300
m_NetworkManager.OnClientDisconnectCallback -= OnClientDisconnectCallback;
301301
}
302302

303-
if (m_TimeOutCoroutine != null)
303+
if (m_TimeOutCoroutine != null && m_NetworkManager != null)
304304
{
305305
m_NetworkManager.StopCoroutine(m_TimeOutCoroutine);
306306
}

com.unity.netcode.gameobjects/Tests/Runtime/NetworkTransform/NetworkTransformOwnershipTests.cs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -277,7 +277,7 @@ void LogOwnerRigidBody(int stage)
277277
{
278278
var ownerRigidbody = ownerInstance.GetComponent<Rigidbody>();
279279
ownerRigidbody.Move(valueSetByOwner, rotation);
280-
ownerRigidbody.velocity = Vector3.zero;
280+
ownerRigidbody.linearVelocity = Vector3.zero;
281281
yield return s_DefaultWaitForTick;
282282
ownerInstance.transform.localScale = valueSetByOwner;
283283
}
@@ -359,7 +359,7 @@ void LogOwnerRigidBody(int stage)
359359
LogOwnerRigidBody(2);
360360
ownerInstance.GetComponent<NetworkTransform>().LogMotion = m_EnableVerboseDebug;
361361
nonOwnerInstance.GetComponent<NetworkTransform>().LogMotion = m_EnableVerboseDebug;
362-
ownerRigidbody.velocity = Vector3.zero;
362+
ownerRigidbody.linearVelocity = Vector3.zero;
363363
}
364364
else
365365
{

com.unity.netcode.gameobjects/package.json

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,8 @@
22
"name": "com.unity.netcode.gameobjects",
33
"displayName": "Netcode for GameObjects",
44
"description": "Netcode for GameObjects is a high-level netcode SDK that provides networking capabilities to GameObject/MonoBehaviour workflows within Unity and sits on top of underlying transport layer.",
5-
"version": "2.0.0-exp.1",
6-
"unity": "2022.3",
5+
"version": "2.0.0-exp.2",
6+
"unity": "6000.0",
77
"dependencies": {
88
"com.unity.nuget.mono-cecil": "1.11.4",
99
"com.unity.transport": "2.2.1"

0 commit comments

Comments
 (0)