1.0.0-pre.2
·
807 commits
to develop
since this release
Netcode for GameObjects
Added
- Added
ClientNetworkTransformsample to the SDK package (#1168) - Added
Bootstrapsample to the SDK package (#1140) - Enhanced
NetworkSceneManagerimplementation with additive scene loading capabilities (#1080, #955, #913)NetworkSceneManager.OnSceneEventprovides improved scene event notificaitons
- Enhanced
NetworkTransformimplementation with per axis/component based and threshold based state replication (#1042, #1055, #1061, #1084, #1101) - Added a jitter-resistent
BufferedLinearInterpolator<T>forNetworkTransform(#1060) - Implemented
NetworkPrefabHandlerthat provides support for object pooling andNetworkPrefaboverrides (#1073, #1004, #977, #905,#749, #727) - Implemented auto
NetworkObjecttransform parent synchronization at runtime over the network (#855) - Adopted Unity C# Coding Standards in the codebase with
.editorconfigruleset (#666, #670) - When a client tries to spawn a
NetworkObjectan exception is thrown to indicate unsupported behavior. (#981) - Added a
NetworkTimeandNetworkTickSystemwhich allows for improved control over time and ticks. (#845) - Added a
OnNetworkDespawnfunction toNetworkObjectwhich gets called when aNetworkObjectgets despawned and can be overriden. (#865) - Added
SnapshotSystemthat would allow variables and spawn/despawn messages to be sent in blocks (#805, #852, #862, #963, #1012, #1013, #1021, #1040, #1062, #1064, #1083, #1091, #1111, #1129, #1166, #1192)- Disabled by default for now, except spawn/despawn messages
- Will leverage unreliable messages with eventual consistency
NetworkBehaviourandNetworkObject'sNetworkManagerinstances can now be overriden (#762)- Added metrics reporting for the new network profiler if the Multiplayer Tools package is present (#1104, #1089, #1096, #1086, #1072, #1058, #960, #897, #891, #878)
NetworkBehaviour.IsSpawneda quick (and stable) way to determine if the associated NetworkObject is spawned (#1190)- Added
NetworkRigidbodyandNetworkRigidbody2Dcomponents to support networkingRigidbodyandRigidbody2Dcomponents (#1202, #1175) - Added
NetworkObjectReferenceandNetworkBehaviourReferencestructs which allow to sendingNetworkObject/Behavioursover RPCs/NetworkVariables (#1173) - Added
NetworkAnimatorcomponent to support networkingAnimatorcomponent (#1281, #872)
Changed
- Bumped minimum Unity version, renamed package as "Unity Netcode for GameObjects", replaced
MLAPInamespace and its variants withUnity.Netcodenamespace and per asm-def variants (#1007, #1009, #1015, #1017, #1019, #1025, #1026, #1065)- Minimum Unity version:
- 2019.4 → 2020.3+
- Package rename:
- Display name:
MLAPI Networking Library→Netcode for GameObjects - Name:
com.unity.multiplayer.mlapi→com.unity.netcode.gameobjects - Updated package description
- Display name:
- All
MLAPI.xnamespaces are replaced withUnity.NetcodeMLAPI.Messaging→Unity.NetcodeMLAPI.Connection→Unity.NetcodeMLAPI.Logging→Unity.NetcodeMLAPI.SceneManagement→Unity.Netcode- and other
MLAPI.xvariants toUnity.Netcode
- All assembly definitions are renamed with
Unity.Netcode.xvariantsUnity.Multiplayer.MLAPI.Runtime→Unity.Netcode.RuntimeUnity.Multiplayer.MLAPI.Editor→Unity.Netcode.Editor- and other
Unity.Multiplayer.MLAPI.xvariants toUnity.Netcode.xvariants
- Minimum Unity version:
- Renamed
Prototypingnamespace and assembly definition toComponents(#1145) - Changed
NetworkObject.Despawn(bool destroy)API to default todestroy = truefor better usability (#1217) - Scene registration in
NetworkManageris now replaced by Build Setttings → Scenes in Build List (#1080) NetworkSceneManager.SwitchScenehas been replaced byNetworkSceneManager.LoadScene(#955)NetworkManager, NetworkConfig, and NetworkSceneManagerscene registration replaced with scenes in build list (#1080)GlobalObjectIdHashreplacedPrefabHashandPrefabHashGeneratorfor stability and consistency (#698)NetworkStarthas been renamed toOnNetworkSpawn. (#865)- Network variable cleanup - eliminated shared mode, variables are server-authoritative (#1059, #1074)
NetworkManagerand other systems are no longer singletons/statics (#696, #705, #706, #737, #738, #739, #746, #747, #763, #765, #766, #783, #784, #785, #786, #787, #788)- Changed
INetworkSerializable.NetworkSerializemethod signature to useBufferSerializer<T>instead ofNetworkSerializer(#1187) - Changed
CustomMessagingManager's methods to useFastBufferWriterandFastBufferReaderinstead ofStream(#1187) - Reduced internal runtime allocations by removing LINQ calls and replacing managed lists/arrays with native collections (#1196)
Removed
- Removed
NetworkNavMeshAgent(#1150) - Removed
NetworkDictionary,NetworkSet(#1149) - Removed
NetworkVariableSettings(#1097) - Removed predefined
NetworkVariable<T>types (#1093)- Removed
NetworkVariableBool,NetworkVariableByte,NetworkVariableSByte,NetworkVariableUShort,NetworkVariableShort,NetworkVariableUInt,NetworkVariableInt,NetworkVariableULong,NetworkVariableLong,NetworkVariableFloat,NetworkVariableDouble,NetworkVariableVector2,NetworkVariableVector3,NetworkVariableVector4,NetworkVariableColor,NetworkVariableColor32,NetworkVariableRay,NetworkVariableQuaternion
- Removed
- Removed
NetworkChannelandMultiplexTransportAdapter(#1133) - Removed ILPP backend for 2019.4, minimum required version is 2020.3+ (#895)
NetworkManager.NetworkConfighad the following properties removed: (#1080)- Scene Registrations no longer exists
- Allow Runtime Scene Changes was no longer needed and was removed
- Removed the NetworkObject.Spawn payload parameter (#1005)
- Removed
ProfilerCounter, the original MLAPI network profiler, and the built-in network profiler module (2020.3). A replacement can now be found in the Multiplayer Tools package. (#1048) - Removed UNet RelayTransport and related relay functionality in UNetTransport (#1081)
- Removed
UpdateStageparameter fromServerRpcSendParamsandClientRpcSendParams(#1187) - Removed
NetworkBuffer,NetworkWriter,NetworkReader,NetworkSerializer,PooledNetworkBuffer,PooledNetworkWriter, andPooledNetworkReader(#1187) - Removed
EnableNetworkVariableinNetworkConfig, it is always enabled now (#1179) - Removed
NetworkTransform's FixedSendsPerSecond, AssumeSyncedSends, InterpolateServer, ExtrapolatePosition, MaxSendsToExtrapolate, Channel, EnableNonProvokedResendChecks, DistanceSendrate (#1060) (#826) (#1042, #1055, #1061, #1084, #1101) - Removed
NetworkManager'sStopServer(),StopClient()andStopHost()methods and replaced with singleNetworkManager.Shutdown()method for all (#1108)
Fixed
- Fixed ServerRpc ownership check to
Debug.LogErrorinstead ofDebug.LogWarning(#1126) - Fixed
NetworkObject.OwnerClientIdproperty changing beforeNetworkBehaviour.OnGainedOwnership()callback (#1092) - Fixed
NetworkBehaviourILPPto iterate over all types in an assembly (#803) - Fixed cross-asmdef RPC ILPP by importing types into external assemblies (#678)
- Fixed
NetworkManagershutdown when quitting the application or switching scenes (#1011)- Now
NetworkManagershutdowns correctly and despawns existingNetworkObjects
- Now
- Fixed Only one
PlayerPrefabcan be selected onNetworkManagerinspector UI in the editor (#676) - Fixed connection approval not being triggered for host (#675)
- Fixed various situations where messages could be processed in an invalid order, resulting in errors (#948, #1187, #1218)
- Fixed
NetworkVariables being default-initialized on the client instead of being initialized with the desired value (#1266) - Improved runtime performance and reduced GC pressure (#1187)
- Fixed #915 - clients are receiving data from objects not visible to them (#1099)
- Fixed
NetworkTransform's "late join" issues,NetworkTransformnow usesNetworkVariables instead of RPCs (#826) - Throw an exception for silent failure when a client tries to get another player's
PlayerObject, it is now only allowed on the server-side (#844)
Known Issues
NetworkVariabledoes not serializeINetworkSerializabletypes through theirNetworkSerializeimplementationNetworkObjectsmarked asDontDestroyOnLoadare disabled during some network scene transitionsNetworkTransforminterpolates from the origin when switching Local Space synchronization- Exceptions thrown in
OnNetworkSpawnuser code for an object will prevent the callback in other objects - Cannot send an array of
INetworkSerializablein RPCs - ILPP generation fails with special characters in project path
Unity Transport for Netcode for GameObjects
Added
- Support for Unity Relay (#887)
- New SetConnectionData function that takes in a NetworkEndpoint
Changed
- No longer use coroutines when connecting to relay
- Consolidated the Send/Recv queue properties as they always needed to be the same.
- Consolidated the Fragmentation/Queue size as they always needed to be the same.
- Updated Unity Transport package to 1.0.0-pre.6
Fixed
- Fixed an issue where OnClientDisconnectCallback was not being called (#1243)
- Flush the UnityTransport send queue on shutdown (#1234)
- Exposed a way to set ip and port from code (#1208)
- Possible Editor crash when trying to read a batched packet where the size of the packet was larger than the max packet size.
- Removed the requirement that MaxPacketSize needs to be the same size as the batched/fragmentation buffer size.