Releases: Unity-Technologies/com.unity.netcode.gameobjects
Releases · Unity-Technologies/com.unity.netcode.gameobjects
1.1.0
[1.1.0] - 2022-10-20
Added
- Added
NetworkManager.IsApprovedflag that is set totruea client has been approved.(#2261) UnityTransportnow provides a way to set the Relay server data directly from theRelayServerDatastructure (provided by the Unity Transport package) throuh itsSetRelayServerDatamethod. This allows making use of the new APIs in UTP 1.3 that simplify integration of the Relay SDK. (#2235)- IPv6 is now supported for direct connections when using
UnityTransport. (#2232) - Added WebSocket support when using UTP 2.0 with
UseWebSocketsproperty in theUnityTransportcomponent of theNetworkManagerallowing to pick WebSockets for communication. When building for WebGL, this selection happens automatically. (#2201) - Added position, rotation, and scale to the
ParentSyncMessagewhich provides users the ability to specify the final values on the server-side whenOnNetworkObjectParentChangedis invoked just before the message is created (when theTransformvalues are applied to the message). (#2146) - Added
NetworkObject.TryRemoveParentmethod for convenience purposes opposed to having to cast null to eitherGameObjectorNetworkObject. (#2146)
Changed
- Updated
UnityTransportdependency oncom.unity.transportto 1.3.0. (#2231) - The send queues of
UnityTransportare now dynamically-sized. This means that there shouldn't be any need anymore to tweak the 'Max Send Queue Size' value. In fact, this field is now removed from the inspector and will not be serialized anymore. It is still possible to set it manually using theMaxSendQueueSizeproperty, but it is not recommended to do so aside from some specific needs (e.g. limiting the amount of memory used by the send queues in very constrained environments). (#2212) - As a consequence of the above change, the
UnityTransport.InitialMaxSendQueueSizefield is now deprecated. There is no default value anymore since send queues are dynamically-sized. (#2212) - The debug simulator in
UnityTransportis now non-deterministic. Its random number generator used to be seeded with a constant value, leading to the same pattern of packet drops, delays, and jitter in every run. (#2196) NetworkVariable<>now supports managedINetworkSerializabletypes, as well as other managed types with serialization/deserialization delegates registered toUserNetworkVariableSerialization<T>.WriteValueandUserNetworkVariableSerialization<T>.ReadValue(#2219)NetworkVariable<>andBufferSerializer<BufferSerializerReader>now deserializeINetworkSerializabletypes in-place, rather than constructing new ones. (#2219)
Fixed
- Fixed
NetworkManager.ApprovalTimeoutwill not timeout due to slower client synchronization times as it now uses the addedNetworkManager.IsApprovedflag to determined if the client has been approved or not.(#2261) - Fixed issue caused when changing ownership of objects hidden to some clients (#2242)
- Fixed issue where an in-scene placed NetworkObject would not invoke NetworkBehaviour.OnNetworkSpawn if the GameObject was disabled when it was despawned. (#2239)
- Fixed issue where clients were not rebuilding the
NetworkConfighash value for each unique connection request. (#2226) - Fixed the issue where player objects were not taking the
DontDestroyWithOwnerproperty into consideration when a client disconnected. (#2225) - Fixed issue where
SceneEventProgresswould not complete if a client late joins while it is still in progress. (#2222) - Fixed issue where
SceneEventProgresswould not complete if a client disconnects. (#2222) - Fixed issues with detecting if a
SceneEventProgresshas timed out. (#2222) - Fixed issue #1924 where
UnityTransportwould fail to restart after a first failure (even if what caused the initial failure was addressed). (#2220) - Fixed issue where
NetworkTransform.SetStateServerRpcandNetworkTransform.SetStateClientRpcwere not honoring local vs world space settings when applying the position and rotation. (#2203) - Fixed ILPP
TypeLoadExceptionon WebGL on MacOS Editor and potentially other platforms. (#2199) - Implicit conversion of NetworkObjectReference to GameObject will now return null instead of throwing an exception if the referenced object could not be found (i.e., was already despawned) (#2158)
- Fixed warning resulting from a stray NetworkAnimator.meta file (#2153)
- Fixed Connection Approval Timeout not working client side. (#2164)
- Fixed issue where the
WorldPositionStaysparenting parameter was not being synchronized with clients. (#2146) - Fixed issue where parented in-scene placed
NetworkObjects would fail for late joining clients. (#2146) - Fixed issue where scale was not being synchronized which caused issues with nested parenting and scale when
WorldPositionStayswas true. (#2146) - Fixed issue with
NetworkTransform.ApplyTransformToNetworkStateWithInfowhere it was not honoring axis sync settings whenNetworkTransformState.IsTeleportingNextFramewas true. (#2146) - Fixed issue with
NetworkTransform.TryCommitTransformToServerwhere it was not honoring theInLocalSpacesetting. (#2146) - Fixed ClientRpcs always reporting in the profiler view as going to all clients, even when limited to a subset of clients by
ClientRpcParams. (#2144) - Fixed RPC codegen failing to choose the correct extension methods for
FastBufferReaderandFastBufferWriterwhen the parameters were a generic type (i.e., List) and extensions for multiple instantiations of that type have been defined (i.e., List and List) (#2142) - Fixed the issue where running a server (i.e. not host) the second player would not receive updates (unless a third player joined). (#2127)
- Fixed issue where late-joining client transition synchronization could fail when more than one transition was occurring.(#2127)
- Fixed throwing an exception in
OnNetworkUpdatecausing otherOnNetworkUpdatecalls to not be executed. (#1739) - Fixed synchronization when Time.timeScale is set to 0. This changes timing update to use unscaled deltatime. Now network updates rate are independent from the local time scale. (#2171)
- Fixed not sending all NetworkVariables to all clients when a client connects to a server. (#1987)
- Fixed IsOwner/IsOwnedByServer being wrong on the server after calling RemoveOwnership (#2211)
1.0.2
Fixed
- Fixed issue where
NetworkTransformwas not honoring the InLocalSpace property on the authority side during OnNetworkSpawn. (#2170) - Fixed issue where
NetworkTransformwas not ending extrapolation for the previous state causing non-authoritative instances to become out of synch. (#2170) - Fixed issue where
NetworkTransformwas not continuing to interpolate for the remainder of the associated tick period. (#2170) - Fixed issue during
NetworkTransform.OnNetworkSpawnfor non-authoritative instances where it was initializing interpolators with the replicated network state which now only contains the transform deltas that occurred during a network tick and not the entire transform state. (#2170)
1.0.1
Changed
- Changed version to 1.0.1. (#2131)
- Updated dependency on
com.unity.transportto 1.2.0. (#2129) - When using
UnityTransport, reliable payloads are now allowed to exceed the configured 'Max Payload Size'. Unreliable payloads remain bounded by this setting. (#2081) - Performance improvements for cases with large number of NetworkObjects, by not iterating over all unchanged NetworkObjects
Fixed
- Fixed not sending all NetworkVariables to all clients when a client connects to a server. (#1987)
- Fixed an issue where reading/writing more than 8 bits at a time with BitReader/BitWriter would write/read from the wrong place, returning and incorrect result. (#2130)
- Fixed issue with the internal
NetworkTransformState.m_Bitsetflag not getting cleared upon the next tick advancement. (#2110) - Fixed interpolation issue with
NetworkTransform.Teleport. (#2110) - Fixed issue where the authoritative side was interpolating its transform. (#2110)
- Fixed Owner-written NetworkVariable infinitely write themselves (#2109)
- Fixed NetworkList issue that showed when inserting at the very end of a NetworkList (#2099)
- Fixed issue where a client owner of a
NetworkVariablewith both owner read and write permissions would not update the server side when changed. (#2097) - Fixed issue when attempting to spawn a parent
GameObject, withNetworkObjectcomponent attached, that has one or more childGameObjects, that are inactive in the hierarchy, withNetworkBehaviourcomponents it will no longer attempt to spawn the associatedNetworkBehaviour(s) or invoke ownership changed notifications but will log a warning message. (#2096) - Fixed an issue where destroying a NetworkBehaviour would not deregister it from the parent NetworkObject, leading to exceptions when the parent was later destroyed. (#2091)
- Fixed issue where
NetworkObject.NetworkHidewas despawning and destroying, as opposed to only despawning, in-scene placedNetworkObjects. (#2086) - Fixed
NetworkAnimatorsynchronizing transitions twice due to it detecting the change in animation state once a transition is started by a trigger. (#2084) - Fixed issue where
NetworkAnimatorwould not synchronize a looping animation for late joining clients if it was at the very end of its loop. (#2076) - Fixed issue where
NetworkAnimatorwas not removing its subscription fromOnClientConnectedCallbackwhen despawned during the shutdown sequence. (#2074) - Fixed IsServer and IsClient being set to false before object despawn during the shutdown sequence. (#2074)
- Fixed NetworkList Value event on the server. PreviousValue is now set correctly when a new value is set through property setter. (#2067)
- Fixed NetworkLists not populating on client. NetworkList now uses the most recent list as opposed to the list at the end of previous frame, when sending full updates to dynamically spawned NetworkObject. The difference in behaviour is required as scene management spawns those objects at a different time in the frame, relative to updates. (#2062)
1.0.0
1.0.0-pre.10
[1.0.0-pre.10] - 2022-06-21
Added
- Added a new
OnTransportFailurecallback toNetworkManager. This callback is invoked when the manager'sNetworkTransportencounters an unrecoverable error. Transport failures also cause theNetworkManagerto shut down. Currently, this is only used byUnityTransportto signal a timeout of its connection to the Unity Relay servers. (#1994) - Added
NetworkEvent.TransportFailure, which can be used by implementations ofNetworkTransportto signal toNetworkManagerthat an unrecoverable error was encountered. (#1994) - Added test to ensure a warning occurs when nesting NetworkObjects in a NetworkPrefab (#1969)
- Added
NetworkManager.RemoveNetworkPrefab(...)to remove a prefab from the prefabs list (#1950)
Changed
- Updated
UnityTransportdependency oncom.unity.transportto 1.1.0. (#2025) - (API Breaking)
ConnectionApprovalCallbackis no longer aneventand will not allow more than 1 handler registered at a time. Also,ConnectionApprovalCallbackis now anAction<>taking aConnectionApprovalRequestand aConnectionApprovalResponsethat the client code must fill (#1972) (#2002)
Removed
Fixed
- Fixed issue where dynamically spawned
NetworkObjects could throw an exception if the scene of origin handle was zero (0) and theNetworkObjectwas already spawned. (#2017) - Fixed issue where
NetworkObject.Observerswas not being cleared when despawned. (#2009) - Fixed
NetworkAnimatorcould not run in the server authoritative mode. (#2003) - Fixed issue where late joining clients would get a soft synchronization error if any in-scene placed NetworkObjects were parented under another
NetworkObject. (#1985) - Fixed issue where
NetworkBehaviourReferencewould throw a type cast exception if usingNetworkBehaviourReference.TryGetand the component type was not found. (#1984) - Fixed
NetworkSceneManagerwas not sending scene event notifications for the currently active scene and any additively loaded scenes when loading a new scene inLoadSceneMode.Singlemode. (#1975) - Fixed issue where one or more clients disconnecting during a scene event would cause
LoadEventCompletedorUnloadEventCompletedto wait until theNetworkConfig.LoadSceneTimeOutperiod before being triggered. (#1973) - Fixed issues when multiple
ConnectionApprovalCallbacks were registered (#1972) - Fixed a regression in serialization support:
FixedString,Vector2Int, andVector3Inttypes can now be used in NetworkVariables and RPCs again without requiring aForceNetworkSerializeByMemcpy<>wrapper. (#1961) - Fixed generic types that inherit from NetworkBehaviour causing crashes at compile time. (#1976)
- Fixed endless dialog boxes when adding a
NetworkBehaviourto aNetworkManageror vice-versa. (#1947) - Fixed
NetworkAnimatorissue where it was only synchronizing parameters if the layer or state changed or was transitioning between states. (#1946) - Fixed
NetworkAnimatorissue where when it did detect a parameter had changed it would send all parameters as opposed to only the parameters that changed. (#1946) - Fixed
NetworkAnimatorissue where it was not always disposing theNativeArraythat is allocated when spawned. (#1946) - Fixed
NetworkAnimatorissue where it was not taking the animation speed or state speed multiplier into consideration. (#1946) - Fixed
NetworkAnimatorissue where it was not properly synchronizing late joining clients if they joined whileAnimatorwas transitioning between states. (#1946) - Fixed
NetworkAnimatorissue where the server was not relaying changes to non-owner clients when a client was the owner. (#1946) - Fixed issue where the
PacketLossmetric for tools would return the packet loss over a connection lifetime instead of a single frame. (#2004)
1.0.0-pre.9
1.0.0-pre.8
[1.0.0-pre.8] - 2022-04-27
Changed
unmanagedstructs are no longer universally accepted as RPC parameters because some structs (i.e., structs with pointers in them, such asNativeList<T>) can't be supported by the default memcpy struct serializer. Structs that are intended to be serialized across the network must addINetworkSerializeByMemcpyto the interface list (i.e.,struct Foo : INetworkSerializeByMemcpy). This interface is empty and just serves to mark the struct as compatible with memcpy serialization. For external structs you can't edit, you can pass them to RPCs by wrapping them inForceNetworkSerializeByMemcpy<T>. (#1901)
Removed
-
Removed
SIPTransport(#1870) -
Removed
ClientNetworkTransformfrom the package samples and moved to Boss Room's Utilities package which can be found here.
Fixed
- Fixed
NetworkTransformgenerating false positive rotation delta checks when rolling over between 0 and 360 degrees. (#1890) - Fixed client throwing an exception if it has messages in the outbound queue when processing the
NetworkEvent.Disconnectevent and is using UTP. (#1884) - Fixed issue during client synchronization if 'ValidateSceneBeforeLoading' returned false it would halt the client synchronization process resulting in a client that was approved but not synchronized or fully connected with the server. (#1883)
- Fixed an issue where UNetTransport.StartServer would return success even if the underlying transport failed to start (#854)
- Passing generic types to RPCs no longer causes a native crash (#1901)
- Fixed an issue where calling
Shutdownon aNetworkManagerthat was already shut down would cause an immediate shutdown the next time it was started (basically the fix makesShutdownidempotent). (#1877)
1.0.0-pre.7
[1.0.0-pre.7] - 2022-04-06
Added
- Added editor only check prior to entering into play mode if the currently open and active scene is in the build list and if not displays a dialog box asking the user if they would like to automatically add it prior to entering into play mode. (#1828)
- Added
UnityTransportimplementation andcom.unity.transportpackage dependency (#1823) - Added
NetworkVariableWritePermissiontoNetworkVariableBaseand implementedOwnerclient writable netvars. (#1762) UnityTransportsettings can now be set programmatically. (#1845)FastBufferWriterand Reader IsInitialized property. (#1859)
Changed
- Updated
UnityTransportdependency oncom.unity.transportto 1.0.0 (#1849)
Removed
- Removed
SnapshotSystem(#1852) - Removed
com.unity.modules.animation,com.unity.modules.physicsandcom.unity.modules.physics2ddependencies from the package (#1812) - Removed
com.unity.collectionsdependency from the package (#1849)
Fixed
- Fixed in-scene placed NetworkObjects not being found/ignored after a client disconnects and then reconnects. (#1850)
- Fixed issue where
UnityTransportsend queues were not flushed when callingDisconnectLocalClientorDisconnectRemoteClient. (#1847) - Fixed NetworkBehaviour dependency verification check for an existing NetworkObject not searching from root parent transform relative GameObject. (#1841)
- Fixed issue where entries were not being removed from the NetworkSpawnManager.OwnershipToObjectsTable. (#1838)
- Fixed ClientRpcs would always send to all connected clients by default as opposed to only sending to the NetworkObject's Observers list by default. (#1836)
- Fixed clarity for NetworkSceneManager client side notification when it receives a scene hash value that does not exist in its local hash table. (#1828)
- Fixed client throws a key not found exception when it times out using UNet or UTP. (#1821)
- Fixed network variable updates are no longer limited to 32,768 bytes when NetworkConfig.EnsureNetworkVariableLengthSafety is enabled. The limits are now determined by what the transport can send in a message. (#1811)
- Fixed in-scene NetworkObjects get destroyed if a client fails to connect and shuts down the NetworkManager. (#1809)
- Fixed user never being notified in the editor that a NetworkBehaviour requires a NetworkObject to function properly. (#1808)
- Fixed PlayerObjects and dynamically spawned NetworkObjects not being added to the NetworkClient's OwnedObjects (#1801)
- Fixed issue where NetworkManager would continue starting even if the NetworkTransport selected failed. (#1780)
- Fixed issue when spawning new player if an already existing player exists it does not remove IsPlayer from the previous player (#1779)
- Fixed lack of notification that NetworkManager and NetworkObject cannot be added to the same GameObject with in-editor notifications (#1777)
- Fixed parenting warning printing for false positives (#1855)
1.0.0-pre.6
Netcode for GameObjects
Added
- NetworkAnimator now properly synchrhonizes all animation layers as well as runtime-adjusted weighting between them (#1765)
- Added first set of tests for NetworkAnimator - parameter syncing, trigger set / reset, override network animator (#1735)
Changed
Fixed
- Fixed an issue where sometimes the first client to connect to the server could see messages from the server as coming from itself. (#1683)
- Fixed an issue where clients seemed to be able to send messages to ClientId 1, but these messages would actually still go to the server (id 0) instead of that client. (#1683)
- Improved clarity of error messaging when a client attempts to send a message to a destination other than the server, which isn't allowed. (#1683)
- Disallowed async keyword in RPCs (#1681)
- Fixed an issue where Alpha release versions of Unity (version 2022.2.0a5 and later) will not compile due to the UNet Transport no longer existing (#1678)
- Fixed messages larger than 64k being written with incorrectly truncated message size in header (#1686) (credit: @kaen)
- Fixed overloading RPC methods causing collisions and failing on IL2CPP targets. (#1694)
- Fixed spawn flow to propagate
IsSceneObjectdown to children NetworkObjects, decouple implicit relationship between object spawning &IsSceneObjectflag (#1685) - Fixed error when serializing ConnectionApprovalMessage with scene management disabled when one or more objects is hidden via the CheckObjectVisibility delegate (#1720)
- Fixed CheckObjectVisibility delegate not being properly invoked for connecting clients when Scene Management is enabled. (#1680)
- Fixed NetworkList to properly call INetworkSerializable's NetworkSerialize() method (#1682)
- Fixed NetworkVariables containing more than 1300 bytes of data (such as large NetworkLists) no longer cause an OverflowException (the limit on data size is now whatever limit the chosen transport imposes on fragmented NetworkDelivery mechanisms) (#1725)
- Fixed ServerRpcParams and ClientRpcParams must be the last parameter of an RPC in order to function properly. Added a compile-time check to ensure this is the case and trigger an error if they're placed elsewhere (#1721)
- Fixed FastBufferReader being created with a length of 1 if provided an input of length 0 (#1724)
- Fixed The NetworkConfig's checksum hash includes the NetworkTick so that clients with a different tickrate than the server are identified and not allowed to connect (#1728)
- Fixed OwnedObjects not being properly modified when using ChangeOwnership (#1731)
- Improved performance in NetworkAnimator (#1735)
- Removed the "always sync" network animator (aka "autosend") parameters (#1746)
Unity Transport for Netcode for GameObjects
Added
- New parameters are available to simulate network conditions (delay, jitter, packet loss) in the editor and in development builds. The parameters are available under the 'Debug Simulator' section of the 'Unity Transport' component, or can be set with the
SetDebugSimulatorParameterscall. (#1745) GetCurrentRttis now properly implemented. (#1755)
Changed
- Updated Unity Transport package to 1.0.0-pre.14. (#1760)
- Updated Netcode for GameObjects dependency to 1.0.0-pre.6 (#1771)
- Overflowing the reliable send queue of a connection will now result in the connection being closed, rather than spamming the log with errors about not being able to send a payload. It is deemed better to close the connection than to lose reliable traffic (which could cause all sorts of weird synchronization issues). (#1747)
Fixed
- Fixed issue where disconnecting from the server with data still in the queue would result in an error message about a stale connection. (#1649)
- Fixed issue where the server
NetworkEndPointwould fail to be created when 'Server Listen Address' is empty. (#1636) - Fixed issue with native collections not all being disposed of when destroying the component without shutting it down properly. This would result in errors in the console and memory leaks. (#1640)
- Fixed an issue where packets causing errors would not be removed from the send queue, which would cause the error message to be spammed on every frame as the adapter would try to resend the packet. (#1648)
- Fixed and issue where a server would fail to disconnect a client if another client had previously disconnected itself. (#1673)
1.0.0-pre.5
Netcode for GameObjects
Added
- Added
PreviousValueinNetworkListEvent, whenValuehas changed (#1528)
Changed
- NetworkManager's GameObject is no longer allowed to be nested under one or more GameObject(s).(#1484)
- NetworkManager DontDestroy property was removed and now NetworkManager always is migrated into the DontDestroyOnLoad scene. (#1484)
Fixed
- Fixed network tick value sometimes being duplicated or skipped. (#1614)
- Fixed The ClientNetworkTransform sample script to allow for owner changes at runtime. (#1606)
Unity Transport for Netcode for GameObjects
Added
- A new 'Server Listen Address' field under 'Connection Data' in the inspector has been added to specify the address a server should listen to, in case it differs from the main 'Address' field. The
SetConnectionDatamethod has been updated accordingly to take an optional parameter to specify that listen address. (#1605) - Added new methods to set the relay server data:
SetHostRelayDataandSetClientRelayData. These are meant to be less error-prone thanSetRelayServerData(which remains available). (#1609)
Changed
- Updated Netcode for GameObjects dependency to 1.0.0-pre.5 (#1626)
- Updated Unity Transport package to 1.0.0-pre.12. (#1615)
- Rename the 'Send Queue Batch Size' property to 'Max Payload Size' to better reflect its usage. (#1584)
- Implicit conversions between
ConnectionAddressDataandNetworkEndPointare now deprecated, since their semantics are no longer clear with the introduction of the newServerListenAddressfield (see above). (#1605)
Fixed
- Lifted the limit of ~44KB for reliable payloads. Before the fix, attempting to send a payload larger than that with reliable delivery would silently fail. Note that it is still not recommended to send such large reliable payloads, since their delivery could take a few network round-trips. (#1596)
- Fixed a bug where NetworkList.contains value was inverted (#1363)