2021 Change Log

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.

v53.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.

v46.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.

v44.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.

v42.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.

v40.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.

v35.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.

v32.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.

v30.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.

v30.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.

Last updated