Skip to main content

Netcode 1.1.0

The following content tracks features, updates, bug fixes, and refactoring for the next release of Unity Netcode. Specific release information including supported Unity versions, release date, and release version is to be announced. All content and development information is subject to change.

This release contains features, updates, bug fixes, and refactoring for the Netcode for GameObjects v1.0.0 Pre-Release.

ProductVersionStatusRelease DateSupported Unity Versions
Netcode for GameObjects1.1.0ReleaseOctober 10, 20222020.3 and later
note

Netcode for GameObjects supports Windows, MacOS, Ubuntu 20.4 LTS, and Ubuntu 18.04 LTS versions of Unity Editor and Player

NGO [1.1.0] - 2022-10-20#

Added#

  • Added NetworkManager.IsApproved flag that is set to true if a client is approved. (#2261)
  • UnityTransport now provides a way to set the Relay server data directly from the RelayServerData structure (provided by the Unity Transport package) through its SetRelayServerData method. This allows you to use the new APIs in UTP 1.3 that simplify integrating the Relay SDK. (#2235)
  • Added IPv6 support for direct connections when using UnityTransport. (#2232)
  • Added WebSocket support when using UTP 2.0 with the UseWebSockets property in the UnityTransport component of the NetworkManager. This allows you to pick WebSockets for communication. If you’re building for WebGL, NGO uses WebSockets automatically. (#2201)
  • Added position, rotation, and scale to the ParentSyncMessage. This allows users to specify the final values on the server side when invoking OnNetworkObjectParentChanged just before creating the message (when the Transform values are applied to the message). (#2146)
  • Added the NetworkObject.TryRemoveParent convenience method. You can now use this method instead of casting null to GameObject or NetworkObject. (#2146)

Changed#

  • Updated UnityTransport dependency on com.unity.transport to 1.3.0. (#2231)
  • Made the send queues of UnityTransport dynamically sized. This means that you shouldn't need to tweak the Max Send Queue Size value. In fact, this field is no longer available in the Inspector (and won’t be serialized anymore). While not recommended in most cases, you can still set the value manually using the MaxSendQueueSize property for special cases, such as limiting the amount of memory used by the send queues in very constrained environments. (#2212)
  • As a consequence of the above change, the UnityTransport.InitialMaxSendQueueSize field is now deprecated. There is no default value anymore since send queues are dynamically-sized. (#2212)
  • Made the debug simulator in UnityTransport non-deterministic. Before this change, its random number generator was seeded with a constant value, which lead to the same pattern of packet drops, delays, and jitter in every run. (#2196)
  • Added support for managed INetworkSerializable types to NetworkVariable<>. It also supports other managed types with serialization and deserialization delegates registered to UserNetworkVariableSerialization<T>.WriteValue and UserNetworkVariableSerialization<T>.ReadValue (#2219)
  • NetworkVariable<> and BufferSerializer<BufferSerializerReader> now deserialize INetworkSerializable types in-place, rather than constructing new ones. (#2219)

Fixed#

  • Fixed NetworkManager.ApprovalTimeout so that it will not timeout due to slower client synchronization times. It now uses the added NetworkManager.IsApproved flag to determine if the client has been approved or not. (#2261)
  • Fixed an issue caused by changing ownership of objects hidden from some clients. (#2242)
  • Fixed an issue where an in-scene placed NetworkObject would not invoke NetworkBehaviour.OnNetworkSpawn if the GameObject was disabled when it despawned. (#2239)
  • Fixed an issue where clients were not rebuilding the NetworkConfig hash value for each unique connection request. (#2226)
  • Fixed an issue where player objects were not taking the DontDestroyWithOwner property into consideration when a client disconnected. (#2225)
  • Fixed an issue where SceneEventProgress would not complete if a client joins late while it is still in progress. (#2222)
  • Fixed an issue where SceneEventProgress would not complete if a client disconnects. (#2222)
  • Fixed issues with detecting if a SceneEventProgress has timed out. (#2222)
  • Fixed issue #1924 where UnityTransport would fail to restart after a first failure (even if what caused the initial failure was addressed). (#2220)
  • Fixed an issue where NetworkTransform.SetStateServerRpc and NetworkTransform.SetStateClientRpc were not honoring local vs world space settings when applying the position and rotation. (#2203)
  • Fixed ILPP TypeLoadException on WebGL on MacOS Editor and potentially other platforms. (#2199)
  • Fixed an issue with implicit conversion of NetworkObjectReference to GameObject. It now returns null instead of throwing an exception if the referenced object could not be found (that is, it was already despawned). (#2158)
  • Fixed a warning resulting from a stray NetworkAnimator.meta file. (#2153)
  • Fixed an issue with Connection Approval Timeout not working client side. (#2164)
  • Fixed an issue where the WorldPositionStays parenting parameter was not synchronizing with clients. (#2146)
  • Fixed an issue where parented in-scene placed NetworkObjects would fail for late joining clients. (#2146)
  • Fixed an issue where the scale was not being synchronized, which caused issues with nested parenting and scale when WorldPositionStays was true. (#2146)
  • Fixed an issue with NetworkTransform.ApplyTransformToNetworkStateWithInfo where it was not honoring axis sync settings when NetworkTransformState.IsTeleportingNextFrame was true. (#2146)
  • Fixed an issue with NetworkTransform.TryCommitTransformToServer where it was not honoring the InLocalSpace setting. (#2146)
  • Fixed an issue with ClientRpcs always reporting in the profiler view as going to all clients, even when limited to a subset of clients by ClientRpcParams. (#2144)
  • Fixed an issue with RPC code generation (codegen) failing to choose the correct extension methods for FastBufferReader and FastBufferWriter when the parameters were a generic type (that is, List) and extensions for multiple instantiations of that type have been defined (that is, List and List). (#2142)
  • Fixed the issue where running a server (not a host) causes the second player to not receive updates (unless a third player joined). (#2127)
  • Fixed an issue where late-joining client transition synchronization could fail when more than one transition occurred. (#2127)
  • Fixed an issue that was throwing an exception in OnNetworkUpdate, causing other OnNetworkUpdate calls to not be executed. (#1739)
  • Fixed a synchronization issue that occurs when Time.timeScale is set to 0. This changes the timing update to use unscaled delta-time. Now network update rates are independent of the local time scale. (#2171)
  • Fixed an issue where not all NetworkVariables were sent to all clients when a client connects to a server. (#1987)
  • Fixed an issue with IsOwner/IsOwnedByServer being wrong on the server after calling RemoveOwnership. (#2211)