🎉 Netcode for GameObjects v2.7.0 is now publicly available

Edit: Newer version here 🎉 Netcode for GameObjects v2.8.0 is now publicly available


Hang on to your netcode hats as this release includes a cornucopia of fixes and improvements! Universal RPCs (RpcAttribute) now provide you with the ability to apply invoke permissions as an RPC attribute parameter. Improvements with error messaging which includes more details on the reason for a disconnect. Unless specified by user script, all messages now use reliable fragmented sequenced delivery which is part of a continued effort to improve upon the NGO messaging pipeline and preserving order of operations. NetworkTransform and the BufferedLinearInterpolator both have been refactored to improve transform space transitions when SwitchTransformSpaceWhenParented is enabled. This version also includes some optimizations, fixes, and documentation updates.

Added

  • RpcInvokePermission to control who has permission to invoke specific RPC methods. (#3731)
  • Added NetworkRigidbody documentation section. (#3664)
  • Added new fields to the SceneMap struct when using Unity 6.3 or higher. These fields allow referencing scene handles via the new SceneHandle struct. (#3734)

Changed

  • Better error message when using generic IEquatable in a generic INetworkSerializable class and updated documentation with workaround. (#3739)
  • The NetworkManager functions GetTransportIdFromClientId and GetClientIdFromTransportId will now return ulong.MaxValue when the clientId or transportId do not exist. (#3707)
  • Changed NetworkShow to send a message at the end of the frame and force a NetworkVariable synchronization prior to generating the CreateObjectMessage as opposed to waiting until the next network tick to synchronize the show with the update to NetworkVariables. (#3664)
  • Changed NetworkTransform now synchronizes NetworkTransform.SwitchTransformSpaceWhenParented when it is updated by the motion model authority. (#3664)
  • Changed when NetworkObjects pending to be shown to clients can now occur on partial network ticks. If any pending NetworkObjects pending to be shown to clients happens to be ready on a new network tick they still are shown after network variable deltas have been processed. (#3664)
  • Changed the default NetworkDelivery used by all messages is now reliable fragmented sequenced with the exception of named, unnamed, and any messages sent with a user specified network delivery type. This assures certain order of operations to be preserved when same call-stack changes are applied to a newly spawned, authority side, NetworkObject. (#3664)
  • Changed NetworkTransform documentation to better reflect the Teleport methods intended usage along with updates to NetworkObject and physics areas of the documentation. (#3664)
  • The first session owner no longer sends two synchronization messages to the service. (#3563)
  • Updated transport dependency of the package to 2.6.0 (#3736)

Deprecated

  • Deprecated all RequireOwnership fields around the RPCs in favor of the RpcInvokePermission. (#3731)
  • On Unity 6.5 some SceneMap fields that use an int to represent a SceneHandle are deprecated. (#3734)

Removed

  • Removed usage of UNITY_UNET_PRESENT define (#3736)

Fixed

  • Initialization errors with NetworkAnimator. (#3767)
  • Multiple disconnect events from the same transport will no longer disconnect the host. (#3707)
  • Fixed NetworkTransform state synchronization issue when NetworkTransform.SwitchTransformSpaceWhenParented is enabled and the associated NetworkObject is parented multiple times in a single frame or within a couple of frames. (#3664)
  • Fixed issue when spawning, parenting, and immediately re-parenting when NetworkTransform.SwitchTransformSpaceWhenParented is enabled. (#3664)
  • Fixed issue where the disconnect event and provided message was too generic to know why the disconnect occurred. (#3551)
  • Exception when the network prefab list in the network manager has uninitialized elements. (#3739)
5 Likes