Skip to content

feat: enum ordered message versioning #2929

Merged
NoelStephensUnity merged 7 commits intodevelop-2.0.0from
feat/message-versioning-alternative
May 21, 2024
Merged

feat: enum ordered message versioning #2929
NoelStephensUnity merged 7 commits intodevelop-2.0.0from
feat/message-versioning-alternative

Conversation

@NoelStephensUnity
Copy link
Copy Markdown
Member

This PR changes the ordinal sorting of message types to an enum based ordering schema to simplify updates to adding new message types.

MPSNGM-202

Changelog

  • Changed: Messages are now sorted by enum values as opposed to ordinally sorting the messages by their type name.

Testing and Documentation

  • No tests have been added.
  • No documentation changes or additions were necessary.

Added the MessageTypeDefines ordering class that orders messages based on the NetworkMessageType.
Adding changelog entry
Adding additional comment about two of the required enum positions
@NoelStephensUnity NoelStephensUnity marked this pull request as ready for review May 17, 2024 19:21
@NoelStephensUnity NoelStephensUnity requested a review from a team as a code owner May 17, 2024 19:21
whitespaace fixes
Fixing issue with tests using their own message provider.
Fixing a few more tests that don't need the message ordering or count verification stuff to be running.
@NoelStephensUnity NoelStephensUnity requested a review from a team as a code owner May 17, 2024 20:54
Decided that we don't need an extra class to handle this and to migrate the NetworkMessageTypes and type to NetworkMessageTypes enum index value table creation within the GetMessages method.

Removed the message ordering related tests since this it was no longer needed.

Adjusted name of integration test ILPPMessageProvider.IntegrationTestNoMessages to better reflect what it is used for and also removed it from the NetworkMessageManager.
/// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
/// Add any new Message types to this table at the END with incremented index value
/// !!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
internal enum NetworkMessageTypes : uint
Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

👍 Looks great. Thank you

@NoelStephensUnity NoelStephensUnity merged commit 6a4bb8f into develop-2.0.0 May 21, 2024
@NoelStephensUnity NoelStephensUnity deleted the feat/message-versioning-alternative branch May 21, 2024 18:29
NoelStephensUnity added a commit that referenced this pull request May 30, 2024
* feat: enum ordered message versioning  (#2929)

* chore: migrate tests from public to internal (#2930)

* update

Added the MessageTypeDefines ordering class that orders messages based on the NetworkMessageType.
Use tick offset.
Change the ticks ago based on whether DAHost or CMBService.
Changing all test public api to internal
Adding FixedJoint attach and detach methods to NetworkRigidbodyBase.

* test

Fixing issue with tests using their own message provider.
Fixing a few more tests that don't need the message ordering or count verification stuff to be running.
Removed the message ordering related tests since this it was no longer needed.


---------

Co-authored-by: Noel Stephens <noel.stephens@unity3d.com>

* update

Migrated non-authority NetworkTransform updates to the pre late update to more align with how it is handled in v1.x.
Added NetworkRigidbodyBase reference to NetworkObject.
For now, added the ability to add a fixed joint when parenting two NetworkObjects with NetworkTransforms and NetworkRigidbodies that both have UseRigidBodyForMotion set to true (i.e. Rigidbody has no concept of "local space" motion).

* update

Change the FixedJoint approach so it does not require parenting.
The "parent" rigid body now updates its children in NetworkTransform when the "parent's" state is updated in order to keep both parent and children state updates synchronized on the same network tick.
Added NetworkObject.CurrentParent that is set when a NetworkObject is parented.
NetworkObject.NetworkTransform is now NetworkObject.NetworkTransforms (a single NetworkObject can have many NetworkTransforms).
NetworkObject.NetworkRigidbodybase is now NetworkObject.NetworkRigidbodies (a single NetworkObject can have many NetworkRigidbodybase components).

* fix

Adding COM_UNITY_MODULES_PHYSICS wrappers around NetworkObject.NetworkRigidbodies.

* fix

wrapping some physics dependent properties in #if COM_UNITY_MODULES_PHYSICS.

* fix

Last missed NetworkRigidbodies needed wrapping in #if COM_UNITY_MODULES_PHYSICS

* fix

Only invoke DetachFromFixedJoint if HasAuthority is true during despawn.

* fix

Fixing issue where NetworkTransforms updated during FixedUpdate can have a render time that is slightly earlier than the start time. The delta between the two is typically in the nano to pico seconds range.

This first pass approach to resolve this issue is to just cast the two double properties to floats prior to subtracting one from the other in order to reduce that level of granularity of the delta between the two.

---------

Co-authored-by: Frank Luong <100299641+fluong6@users.noreply.github.com>
NoelStephensUnity added a commit that referenced this pull request May 31, 2024
* chore: distributed authority UI displays dependent upon multiplayer SDK package (#2875)

* update

Renaming Session Mode to Network Topology.
This includes any related properties or XML API documentation references.

Adding package dependent conditional define MULTIPLAYER_SDK_INSTALLED that is defined when the com.unity.services.multiplayer package is installed to the editor assembly definition file.

This removes the custom property drawer since it appears the default enum flag drawer visual bug is resolved in Unity 6.

incrementing the version change

* feat: expose the UTP connect (#2935)

* feat: expose the UTP connect payload

* pass accept payload

* fix formatting

* make Connect and m_Driver protected

* remove payload output

* chore: Merge develop 2.0.0 into exp.3 (#2933)

* feat: enum ordered message versioning  (#2929)

* chore: migrate tests from public to internal (#2930)

* update

Added the MessageTypeDefines ordering class that orders messages based on the NetworkMessageType.
Use tick offset.
Change the ticks ago based on whether DAHost or CMBService.
Changing all test public api to internal
Adding FixedJoint attach and detach methods to NetworkRigidbodyBase.

* test

Fixing issue with tests using their own message provider.
Fixing a few more tests that don't need the message ordering or count verification stuff to be running.
Removed the message ordering related tests since this it was no longer needed.


---------

Co-authored-by: Noel Stephens <noel.stephens@unity3d.com>

* update

Migrated non-authority NetworkTransform updates to the pre late update to more align with how it is handled in v1.x.
Added NetworkRigidbodyBase reference to NetworkObject.
For now, added the ability to add a fixed joint when parenting two NetworkObjects with NetworkTransforms and NetworkRigidbodies that both have UseRigidBodyForMotion set to true (i.e. Rigidbody has no concept of "local space" motion).

* update

Change the FixedJoint approach so it does not require parenting.
The "parent" rigid body now updates its children in NetworkTransform when the "parent's" state is updated in order to keep both parent and children state updates synchronized on the same network tick.
Added NetworkObject.CurrentParent that is set when a NetworkObject is parented.
NetworkObject.NetworkTransform is now NetworkObject.NetworkTransforms (a single NetworkObject can have many NetworkTransforms).
NetworkObject.NetworkRigidbodybase is now NetworkObject.NetworkRigidbodies (a single NetworkObject can have many NetworkRigidbodybase components).

* fix

Adding COM_UNITY_MODULES_PHYSICS wrappers around NetworkObject.NetworkRigidbodies.

* fix

wrapping some physics dependent properties in #if COM_UNITY_MODULES_PHYSICS.

* fix

Last missed NetworkRigidbodies needed wrapping in #if COM_UNITY_MODULES_PHYSICS

* fix

Only invoke DetachFromFixedJoint if HasAuthority is true during despawn.

* fix

Fixing issue where NetworkTransforms updated during FixedUpdate can have a render time that is slightly earlier than the start time. The delta between the two is typically in the nano to pico seconds range.

This first pass approach to resolve this issue is to just cast the two double properties to floats prior to subtracting one from the other in order to reduce that level of granularity of the delta between the two.

---------

Co-authored-by: Frank Luong <100299641+fluong6@users.noreply.github.com>

* chore: add NGO 2.0.0-exp.3 version and date to changelog (#2937)

adding release version and date to changelog

* removing "unreleased" tag

* chore: update changelog in ngo 2.0.0 exp.4 (#2939)

* updating changelog

* bumping ngo version in package json

* adding unreleased section back

---------

Co-authored-by: Noel Stephens <noel.stephens@unity3d.com>
Co-authored-by: Dominick <dominick@schroer.ca>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants