Mirror
Search…
⌃K

2021 ChangeLog

Mirror uses semantic versioning, and the versions shown here are those that were published to the Asset Store, and occasionally major version bumps happen mid-month between store submissions and are therefore not individually shown here.

Version 53.0.0 -- 2021-Oct-20

  • Added: ChangeOwnerMessage. NetworkIdentity.AssignClientAuthority and RemoveClientAuthority now send this message instead of a SpawnMessage, so transform data is no longer reset to server values, so no more snap-back of moving objects.
  • Added: SyncDictionary can now be declared and initialized from an existing List.
  • Added: Nullable color added to Data Types Mirror handles.
  • Added: ILPostProcessor is now used for Unity versions 2020.3 and later.
  • Fixed: Stopping Discovery no longer causes a crash.
  • Fixed: Additive Scenes example had misplaced scene objects.
  • Fixed: NetworkManager.ServerChangeScene now aborts if scene change already in progress.
  • Fixed: hasAuthority is now properly cleared on client when unspawning scene objects.
  • Fixed: Match Interest Management now correctly handles networked objects without NetworkMatch components, and no longer throws Key not found exception in certain cases.
  • Fixed: NetworkManager.StopClient no longer fires twice in certain cases.
  • Fixed: NetworkMatch was missing attributes.
  • Changed: NetworkLoop static class is now public.
  • Changed: NetworkConnection.observing is now public.
    Changed: NetworkTransformV2 default values updated. interpolateScale also defaults to false now.
  • Changed: NetworkTransformV2 isClientAuthority now protected instead of private.
  • Changed: Examples using NetworkTransformV2 now using default values.
  • Changed: Updated NetworkManager Script Template.
  • Changed: Tanks example has health bars now.
  • Changed: componentIndex is now a byte in CmdMessage and RpcMessage structs.
  • Changed: SyncObject is now a class instead of an interface.
  • Obsolete: SyncObject.Flush - Use ClearChanges instead.
  • Obsolete: NetworkBehaviour.getSyncVarHookGuard - Use GetSyncVarHookGuard instead.
  • Obsolete: NetworkBehaviour.setSyncVarHookGuard - Use SetSyncVarHookGuard instead.
  • Obsolete: NetworkBehaviour.SetDirtyBit - Use SetSyncVarDirtyBit instead.
  • Obsolete: NetworkServer.SendToReady - Use SendToReadyObservers instead.
  • Removed: Various obsolete methods that were at least 3 months old.
  • Removed: Fallback transport -- no longer included or supported.

Version 46.0.4 - 2021-Sep-03

  • Added: Tanks example now has GUIConsole for easier debugging.
  • Fixed: UnpackAndInvoke now throws error and disconnects in case of missing handlers.
  • Fixed: NetworkServer/NetworkClient now detects ever-growing batches.
  • Fixed: Weaver now uses ILPostProcessing in Unity 2020+.
  • Fixed: Movement delay in NetworkTransformV2.
  • Fixed: NetworkTransformBase.OnDrawGizmos now only runs in play mode.
  • Fixed: Added missing using to Network Manager template.
  • Fixed: Some OnGUI calls are now wrapped in #if UNITY_EDITOR || DEVELOPMENT_BUILD.
  • Changed: NetworkEarlyUpdate/NetworkLateUpdate in NetworkLoop now exposed via Action events.
  • Changed: Multiple Matches example now uses Match Interest Management.
  • Changed: Multiple Additive Scenes example now uses Scene Interest Management.
  • Obsolete: NetworkIdentity.spawned has been split into NetworkServer.spawned and NetworkClient.spawned.
  • Removed: Network Observer template.

Version 44.0.2 -- 2021-Aug-08

  • Added: Scene Interest Management. Put this on Network Manager and remove all Network Scene Checker components.
  • Added: Match Interest Management. Put this on Network Manager and replace Network Match Checker with new Network Match component.
  • Added: Interest Management now has OnSpawned / OnDestroyed events.
  • Added: Network Transform V2 with Snapshot Interpolation.
  • Added: Network Transport exception events that transports can raise to Network Manager's OnServerError and OnClientError overrides. Transports still need to implement their part.
  • Added: ZigZag VarInt added back to Compression module.
  • Fixed: Network Discovery HUD now calls StopDiscovery when stopping server/host/client.
  • Fixed: NetworkTime.lastPingTime is now reset properly.
  • Fixed: KCP updated to version 1.12.
  • Fixed: NetworkBehaviour dirty check uses double time.
  • Fixed: NetworkTime.UpdateClient uses double precision time for accuracy over days/weeks.
  • Fixed: NetworkAnimator uses double precision time for accuracy over days/weeks
  • Fixed: Quaternion Compression would produce wrong result for certain values.
  • Fixed: Added missing [Command] attribute to NetworkAnimator.CmdSetAnimatorSpeed.
  • Fixed: DestroyObject is now called when cleaning up scene identities too. Sends unspawn messages and calls OnStopClient/OnStopServerproperly.
  • Fixed: Clear hasAuthority when destroying and call OnStopAuthority.
  • Changed: Distance Interest Management now has custom range component, replacing Network Proximity Checker.
  • Changed: Per-scene interest management replaces Network Scene Checker.
  • Changed: Network Match component separated from Network Match Checker.
  • Changed: Match Interest Management replaces Network Match Checker.
  • Changed: NetworkManager.isNetworkActive is now a readonly bool.
  • Changed: NetworkManager.ConfigureServerFrameRate renamed to ConfigureHeadlessFrameRate.

Version 42.2.12 -- 2021-Jul-12

  • Added: Timestamp-based batching. Batching is always on now and is bidirectional.
  • Added: NetworkServer / NetworkClient OnConnected / OnDisconnected events now public so custom Network Managers can hook into them.
  • Fixed: NetworkServer / NetworkClient Shutdown now correctly clears OnConnected / OnDisconnected event handlers.
  • Fixed: Scene loading with batching works now.
  • Fixed: KCP 1.11 significantly reduced garbage allocations.
  • Fixed: Fallback Transport didn't propagate Early/Late Update.
  • Fixed: OnClientDisconnect wasn't being called for host client.
  • Fixed: Interest Management V2 now allows SetHostVisibility overwriting.
  • Fixed: Serialization precision over days using frame count instead of single precision time.
  • Fixed: Added null check and error logging when networkBehaviours array is null.
  • Fixed: Force calling NetworkIdentity.Awake when parent is inactive.
  • Fixed: OnClientChangeScene was not firing for host client.
  • Fixed: Avoid NRE in UnpackAndInvoke.
  • Fixed: Null handling in WriteUri and ReadUri.
  • Fixed: FinishLoadScene should not be called when customHandling is true (Additive Scenes).
  • Fixed: Prevent assetId from being set to an empty string.
  • Fixed: clientAuthority is now public in NetworkRigidbody / NetworkRigidbody2D.
  • Changed: Transports are no longer paused (disabled) during scene loading. Message processor handles this correctly now, so transports can be simplified.

Version 40.0.9 -- 2021-Jun-08

  • Added: ServerAuthFailed bool to Basic Authenticator.
  • Added: Discovery HUD now has a Stop Button.
  • Fixed: KCP updated to version 1.10.
  • Fixed: Telepathy updated to version 1.8.
  • Fixed: NetworkIdentity default script execution order set to -1.
  • Fixed: Discovery now properly shuts down in OnDisable / OnDestroy.
  • Fixed: Discovery now stops discovering when client is connected to game server.
  • Fixed: NetworkTransform sync scale and interpolation.
  • Fixed: Player object now prevented from being added to Network Manager's spawnable prefabs list
  • Fixed: Simple Web Sockets transport SSL Handshake.
  • Fixed: NetworkServer.OnDisconnect now calls DestroyPlayerForConnection if NetworkManager doesn't handle it.
  • Fixed: NetworkClient.Disconnect now checks for null connection and that it's not called twice.
  • Fixed: NetworkTime now resets when server starts.
  • Fixed: Basic example PlayerUI text corrected.
  • Fixed: Timeouts in Telepathy fixed.
  • Fixed: Observers are now correctly cleared after other clients disconnect.
  • Changed: NetworkConnection parameter removed from Network Authenticator's Client messages.
  • Changed: MessagePacking GetId<T> return value changed to ushort.
  • Changed: Transport.ServerDisconnect return is now void instead of bool.
  • Removed: Network Manager's Idle Timeout.
  • Removed: Cloud API and examples.
  • Obsolete: Fallback Transport will be removed in a later release.

Version 35.1.0 -- 2021-Mar-29

  • Added: Network Discovery now has a bool to disable automatic active discovery.
  • Added: PersistNetworkManagerToOfflineScene to Network Manager...see tooltip.
  • Added: Latency Simulation Transport that can be added to Network Manager and have normal transport chained to it to simulate network latency.
  • Added: Sync Mode tooltip.
  • Added: Headless clients now set targetFramerate like headless servers
  • Added: NetworkTransform now has the following features:
    • Compress Rotation option
    • Sync Scale option
    • Interpolate Scale option
  • Fixed: No Writer found / No Reader found errors have been resolved.
    • NOTE: You may need to delete your Library/ScriptAssemblies folder and IL2CPP cache
  • Fixed: NetworkIdentity.isLocalPlayer is only set, but never reset. Fixes a bug where isLocalPlayer would be false in OnDestroy, so some components couldn't rely on it in OnDestroy.
  • Fixed: NetworkIdentity.Reset now resets isLocalPlayer after the isLocalPlayer /ClearLocalPlayer check.
  • Fixed: NetworkIdentity.OnDestroy now only clears NetworkClient.localPlayer if we are still the local player.
  • Fixed: Client Shutdown is no longer run twice via user code calling StopClient.
  • Fixed: SyncVar field label not shown in Unity 2020 versions (Unity bug).
  • Changed: Network Manager OnServerAddPlayer now adds the connection id to the object name (on the server only, not synced to clients).
  • Changed: Several fields in NetworkTime were renamed. The previous field names are still there and obsolete and will be removed in a later version.
  • Changed: Most of ClientScene is now obsolete, use same or similar properties in NetworkClient instead. ClientScene will be fully deprecated and removed in a later version.
  • Changed: NetworkClient.RegisterHandler overload that included a NetworkConnection is now obsolete and will be removed in a later version. Handlers can use NetworkClient.connection directly.
  • Changed: Channel constants names were shortened. The original constants are still there and obsolete, and will be removed in a later version.
  • Breaking: Minimum supported Unity version is now 2019.4.x LTS.
  • Breaking: ClientScene.onLocalPlayerChanged removed.
  • Breaking: Compiler symbols culled to Mirror 17 and later versions.

Version 32.1.4 -- 2021-Mar-08

  • Added: NetworkIdentity now has isServer / isClientOnly.
  • Added: Global Interest Management. This may eventually lead to replacement of Scene Checker, Match Checker, and Owner Checker components.
  • Added: GUI Console ported from uMMORPG (F12 to show/hide).
  • Added: Network Manager now takes itself out of DDOL in StopServer / StopClient when offline scene is defined to avoid singleton collision.
  • Added: Message batching. Enable in Network Manager.
  • Added: Custom Player Loop:
    • NetworkEarlyUpdate (before any Update/FixedUpdate)
    • NetworkLateUpdate (after any Update/FixedUpdate/LateUpdate) loops
  • Added: KCP Tick split into TickIncoming / TickOutgoing to utilize the new NetworkEarly/LateUpdate functions...minimizes latency.
  • Added: Push > Pull Broadcasting Part 1.
  • Fixed: Telepathy 1.7 receive timeout disabled by default, increased MirrorTransport timeout to 30sec from 5sec to cover scene changes.
  • Fixed: NetworkServer.SpawnObserversForConnection refactored to support all visibility cases (ForceShown / ForceHidden / Default) and all systems (legacy / new / default).
  • Fixed: NetworkManager.StopServer/StopClient: avoid NullReferenceException when called in OnApplicationQuit or from tests.
  • Fixed: NetworkServer.Update: inactive connection check moved into the main connections foreach loop. Eliminates a foreach-connections loop.
  • Fixed: NetworkServer.Update: separate connections update loop moved into the main loop. Now there is only one connections loop.
  • Changed: NetworkManagerHUD.showGUI is now obsolete and will be removed in a later version.
  • Changed: SendToClientOfPlayer is now obsolete and will be removed in a later version.
  • Breaking: LogFactory and logging asset feature removed.
  • Breaking: Command ignoreAuthority parameter renamed to requiresAuthority, default true.
  • Breaking: ClientRpc excludeOwner parameter renamed to includeOwner, default true.
  • Breaking: ClientScene.spawnableObjects is no longer public.

Version 30.5.3 -- 2021-Feb-15

  • Fixed: Fixed a bug in batching for messages larger than MTU.
  • Fixed: Telepathy 1.6 fixes data races and improves stability.
  • Fixed: KCP 1.8 fixes empty message sending / receiving undefined behaviour and fixes IPv6 on Nintendo Switch.
  • Changed: Network Manager default max connections is now 100.
  • Breaking: NetworkServer / NetworkClient don't use Connect/Disconnect messages any more. Connect/Disconnect events are raised by the transport instead.
  • Breaking: OnServerError / OnClientError removed since no transport ever implemented them.
  • Breaking Removed NetworkConnection.InvokeHandler as no longer needed.

Version 30.5.0 -- 2021-Feb-05

  • Added: KCP Transport updated to version 1.7.
  • Added: Batching support for server messages - See Network Manager to enable.
  • Added: Script Templates are back in the package -- See the new Mirror section in the Assets > Create menu.
  • Added: Unreliable channel added to KCP Transport.
  • Fixed: Performance improvements to KCP Transport.
  • Fixed: Examples with UI now work with Unity 2018.4 again
  • Fixed: NetworkServer.OnConnected allows for connectionId < 0 now.
  • Fixed: Corrected NetworkRoomPlayer ReadyStateChanged oldReadyState parameter name.
  • Changed: Ping/Pong messages now use unreliable channel if available from transports.
  • Breaking Read / Write Blittable has been removed.