Skip to content

1.0.0-pre.2

Compare
Choose a tag to compare
@JesseOlmer JesseOlmer released this 20 Oct 19:07
· 638 commits to develop since this release
bcef5b9

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> for NetworkTransform (#1060)
  • Implemented NetworkPrefabHandler that provides support for object pooling and NetworkPrefab 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 and NetworkTickSystem which allows for improved control over time and ticks. (#845)
  • Added a OnNetworkDespawn function to NetworkObject which gets called when a NetworkObject 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 and NetworkObject's NetworkManager 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 and NetworkRigidbody2D components to support networking Rigidbody and Rigidbody2D components (#1202, #1175)
  • Added NetworkObjectReference and NetworkBehaviourReference structs which allow to sending NetworkObject/Behaviours over RPCs/NetworkVariables (#1173)
  • Added NetworkAnimator component to support networking Animator component (#1281, #872)

Changed

  • Bumped minimum Unity version, renamed package as "Unity Netcode for GameObjects", replaced MLAPI namespace and its variants with Unity.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 LibraryNetcode for GameObjects
      • Name: com.unity.multiplayer.mlapicom.unity.netcode.gameobjects
      • Updated package description
    • All MLAPI.x namespaces are replaced with Unity.Netcode
      • MLAPI.MessagingUnity.Netcode
      • MLAPI.ConnectionUnity.Netcode
      • MLAPI.LoggingUnity.Netcode
      • MLAPI.SceneManagementUnity.Netcode
      • and other MLAPI.x variants to Unity.Netcode
    • All assembly definitions are renamed with Unity.Netcode.x variants
      • Unity.Multiplayer.MLAPI.RuntimeUnity.Netcode.Runtime
      • Unity.Multiplayer.MLAPI.EditorUnity.Netcode.Editor
      • and other Unity.Multiplayer.MLAPI.x variants to Unity.Netcode.x variants
  • Renamed Prototyping namespace and assembly definition to Components (#1145)
  • Changed NetworkObject.Despawn(bool destroy) API to default to destroy = 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 by NetworkSceneManager.LoadScene (#955)
  • NetworkManager, NetworkConfig, and NetworkSceneManager scene registration replaced with scenes in build list (#1080)
  • GlobalObjectIdHash replaced PrefabHash and PrefabHashGenerator for stability and consistency (#698)
  • NetworkStart has been renamed to OnNetworkSpawn. (#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 use BufferSerializer<T> instead of NetworkSerializer (#1187)
  • Changed CustomMessagingManager's methods to use FastBufferWriter and FastBufferReader instead of Stream (#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 NetworkChannel and MultiplexTransportAdapter (#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 from ServerRpcSendParams and ClientRpcSendParams (#1187)
  • Removed NetworkBuffer, NetworkWriter, NetworkReader, NetworkSerializer, PooledNetworkBuffer, PooledNetworkWriter, and PooledNetworkReader (#1187)
  • Removed EnableNetworkVariable in NetworkConfig, 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's StopServer(), StopClient() and StopHost() methods and replaced with single NetworkManager.Shutdown() method for all (#1108)

Fixed

  • Fixed ServerRpc ownership check to Debug.LogError instead of Debug.LogWarning (#1126)
  • Fixed NetworkObject.OwnerClientId property changing before NetworkBehaviour.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 existing NetworkObjects
  • Fixed Only one PlayerPrefab can be selected on NetworkManager 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 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, NetworkTransform now uses NetworkVariables 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 serialize INetworkSerializable types through their NetworkSerialize implementation
  • NetworkObjects marked as DontDestroyOnLoad are disabled during some network scene transitions
  • NetworkTransform 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.