1.0.0-pre.2
JesseOlmer
released this
20 Oct 19:07
·
638 commits
to develop
since this release
Netcode for GameObjects
Added
- Added
ClientNetworkTransform
sample to the SDK package (#1168) - Added
Bootstrap
sample to the SDK package (#1140) - Enhanced
NetworkSceneManager
implementation with additive scene loading capabilities (#1080, #955, #913)NetworkSceneManager.OnSceneEvent
provides improved scene event notificaitons
- Enhanced
NetworkTransform
implementation with per axis/component based and threshold based state replication (#1042, #1055, #1061, #1084, #1101) - Added a jitter-resistent
BufferedLinearInterpolator<T>
forNetworkTransform
(#1060) - Implemented
NetworkPrefabHandler
that provides support for object pooling andNetworkPrefab
overrides (#1073, #1004, #977, #905,#749, #727) - Implemented auto
NetworkObject
transform parent synchronization at runtime over the network (#855) - Adopted Unity C# Coding Standards in the codebase with
.editorconfig
ruleset (#666, #670) - When a client tries to spawn a
NetworkObject
an exception is thrown to indicate unsupported behavior. (#981) - Added a
NetworkTime
andNetworkTickSystem
which allows for improved control over time and ticks. (#845) - Added a
OnNetworkDespawn
function toNetworkObject
which gets called when aNetworkObject
gets despawned and can be overriden. (#865) - Added
SnapshotSystem
that 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
NetworkBehaviour
andNetworkObject
'sNetworkManager
instances 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.IsSpawned
a quick (and stable) way to determine if the associated NetworkObject is spawned (#1190)- Added
NetworkRigidbody
andNetworkRigidbody2D
components to support networkingRigidbody
andRigidbody2D
components (#1202, #1175) - Added
NetworkObjectReference
andNetworkBehaviourReference
structs which allow to sendingNetworkObject/Behaviours
over RPCs/NetworkVariable
s (#1173) - Added
NetworkAnimator
component to support networkingAnimator
component (#1281, #872)
Changed
- Bumped minimum Unity version, renamed package as "Unity Netcode for GameObjects", replaced
MLAPI
namespace and its variants withUnity.Netcode
namespace 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.x
namespaces are replaced withUnity.Netcode
MLAPI.Messaging
→Unity.Netcode
MLAPI.Connection
→Unity.Netcode
MLAPI.Logging
→Unity.Netcode
MLAPI.SceneManagement
→Unity.Netcode
- and other
MLAPI.x
variants toUnity.Netcode
- All assembly definitions are renamed with
Unity.Netcode.x
variantsUnity.Multiplayer.MLAPI.Runtime
→Unity.Netcode.Runtime
Unity.Multiplayer.MLAPI.Editor
→Unity.Netcode.Editor
- and other
Unity.Multiplayer.MLAPI.x
variants toUnity.Netcode.x
variants
- Minimum Unity version:
- Renamed
Prototyping
namespace and assembly definition toComponents
(#1145) - Changed
NetworkObject.Despawn(bool destroy)
API to default todestroy = true
for better usability (#1217) - Scene registration in
NetworkManager
is now replaced by Build Setttings → Scenes in Build List (#1080) NetworkSceneManager.SwitchScene
has been replaced byNetworkSceneManager.LoadScene
(#955)NetworkManager, NetworkConfig, and NetworkSceneManager
scene registration replaced with scenes in build list (#1080)GlobalObjectIdHash
replacedPrefabHash
andPrefabHashGenerator
for stability and consistency (#698)NetworkStart
has been renamed toOnNetworkSpawn
. (#865)- Network variable cleanup - eliminated shared mode, variables are server-authoritative (#1059, #1074)
NetworkManager
and 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.NetworkSerialize
method signature to useBufferSerializer<T>
instead ofNetworkSerializer
(#1187) - Changed
CustomMessagingManager
's methods to useFastBufferWriter
andFastBufferReader
instead 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
NetworkChannel
andMultiplexTransportAdapter
(#1133) - Removed ILPP backend for 2019.4, minimum required version is 2020.3+ (#895)
NetworkManager.NetworkConfig
had 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
UpdateStage
parameter fromServerRpcSendParams
andClientRpcSendParams
(#1187) - Removed
NetworkBuffer
,NetworkWriter
,NetworkReader
,NetworkSerializer
,PooledNetworkBuffer
,PooledNetworkWriter
, andPooledNetworkReader
(#1187) - Removed
EnableNetworkVariable
inNetworkConfig
, 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.LogError
instead ofDebug.LogWarning
(#1126) - Fixed
NetworkObject.OwnerClientId
property changing beforeNetworkBehaviour.OnGainedOwnership()
callback (#1092) - Fixed
NetworkBehaviourILPP
to iterate over all types in an assembly (#803) - Fixed cross-asmdef RPC ILPP by importing types into external assemblies (#678)
- Fixed
NetworkManager
shutdown when quitting the application or switching scenes (#1011)- Now
NetworkManager
shutdowns correctly and despawns existingNetworkObject
s
- Now
- Fixed Only one
PlayerPrefab
can be selected onNetworkManager
inspector 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
NetworkVariable
s 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,NetworkTransform
now usesNetworkVariable
s 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
NetworkVariable
does not serializeINetworkSerializable
types through theirNetworkSerialize
implementationNetworkObjects
marked asDontDestroyOnLoad
are disabled during some network scene transitionsNetworkTransform
interpolates from the origin when switching Local Space synchronization- Exceptions thrown in
OnNetworkSpawn
user code for an object will prevent the callback in other objects - Cannot send an array of
INetworkSerializable
in 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.