Comment on page
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.
RemoveClientAuthoritynow 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.
SyncDictionarycan now be declared and initialized from an existing List.
- Added: Nullable color added to Data Types Mirror handles.
ILPostProcessoris 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.
NetworkManager.ServerChangeScenenow aborts if scene change already in progress.
hasAuthorityis now properly cleared on client when unspawning scene objects.
- Fixed: Match Interest Management now correctly handles networked objects without
NetworkMatchcomponents, and no longer throws Key not found exception in certain cases.
NetworkManager.StopClientno longer fires twice in certain cases.
NetworkMatchwas missing attributes.
NetworkLoopstatic class is now public.
NetworkConnection.observingis now public.Changed:
NetworkTransformV2default values updated.
interpolateScalealso defaults to
- Changed: Examples using
NetworkTransformV2now using default values.
- Changed: Updated
- Changed: Tanks example has health bars now.
componentIndexis now a
SyncObjectis now a class instead of an interface.
- Removed: Various obsolete methods that were at least 3 months old.
- Removed: Fallback transport -- no longer included or supported.
- Added: Tanks example now has
GUIConsolefor easier debugging.
UnpackAndInvokenow throws error and disconnects in case of missing handlers.
NetworkClientnow detects ever-growing batches.
- Fixed: Weaver now uses
ILPostProcessingin Unity 2020+.
- Fixed: Movement delay in
NetworkTransformBase.OnDrawGizmosnow only runs in play mode.
- Fixed: Added missing
usingto Network Manager template.
- Fixed: Some
OnGUIcalls are now wrapped in
#if UNITY_EDITOR || DEVELOPMENT_BUILD.
NetworkLoopnow exposed via Action events.
- Changed: Multiple Matches example now uses Match Interest Management.
- Changed: Multiple Additive Scenes example now uses Scene Interest Management.
NetworkIdentity.spawnedhas been split into
- Removed: Network Observer template.
- 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
- Added: Network Transform V2 with Snapshot Interpolation.
- Added: Network Transport exception events that transports can raise to Network Manager's
OnClientErroroverrides. Transports still need to implement their part.
ZigZag VarIntadded back to Compression module.
- Fixed: Network Discovery HUD now calls
StopDiscoverywhen stopping server/host/client.
NetworkTime.lastPingTimeis now reset properly.
- Fixed: KCP updated to version 1.12.
NetworkBehaviourdirty check uses double time.
NetworkTime.UpdateClientuses double precision time for accuracy over days/weeks.
NetworkAnimatoruses double precision time for accuracy over days/weeks
- Fixed: Quaternion Compression would produce wrong result for certain values.
- Fixed: Added missing
DestroyObjectis now called when cleaning up scene identities too. Sends unspawn messages and calls
- Fixed: Clear
hasAuthoritywhen destroying and call
- 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.
NetworkManager.isNetworkActiveis now a readonly bool.
- Added: Timestamp-based batching. Batching is always on now and is bidirectional.
OnDisconnectedevents now public so custom Network Managers can hook into them.
Shutdownnow correctly clears
- Fixed: Scene loading with batching works now.
- Fixed: KCP 1.11 significantly reduced garbage allocations.
- Fixed: Fallback Transport didn't propagate Early/Late Update.
OnClientDisconnectwasn't being called for host client.
- Fixed: Interest Management V2 now allows
- Fixed: Serialization precision over days using frame count instead of single precision time.
- Fixed: Added null check and error logging when
networkBehavioursarray is null.
- Fixed: Force calling
NetworkIdentity.Awakewhen parent is inactive.
OnClientChangeScenewas not firing for host client.
- Fixed: Avoid NRE in
- Fixed: Null handling in
FinishLoadSceneshould not be called when
customHandlingis true (Additive Scenes).
- Fixed: Prevent assetId from being set to an empty string.
clientAuthorityis now public in
- Changed: Transports are no longer paused (disabled) during scene loading. Message processor handles this correctly now, so transports can be simplified.
ServerAuthFailedbool 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.
NetworkIdentitydefault script execution order set to -1.
- Fixed: Discovery now properly shuts down in
- Fixed: Discovery now stops discovering when client is connected to game server.
NetworkTransformsync 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.
NetworkManagerdoesn't handle it.
NetworkClient.Disconnectnow checks for null connection and that it's not called twice.
NetworkTimenow resets when server starts.
- Fixed: Basic example
- Fixed: Timeouts in Telepathy fixed.
- Fixed: Observers are now correctly cleared after other clients disconnect.
NetworkConnectionparameter removed from Network Authenticator's Client messages.
MessagePacking GetId<T>return value changed to
Transport.ServerDisconnectreturn 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.
- Added: Network Discovery now has a bool to disable automatic active discovery.
PersistNetworkManagerToOfflineSceneto 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
targetFrameratelike headless servers
NetworkTransformnow 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/ScriptAssembliesfolder and IL2CPP cache
NetworkIdentity.isLocalPlayeris only set, but never reset. Fixes a bug where
isLocalPlayerwould be false in
OnDestroy, so some components couldn't rely on it in
NetworkIdentity.OnDestroynow only clears
NetworkClient.localPlayerif we are still the local player.
- Fixed: Client Shutdown is no longer run twice via user code calling
SyncVarfield label not shown in Unity 2020 versions (Unity bug).
- Changed: Network Manager
OnServerAddPlayernow adds the connection id to the object name (on the server only, not synced to clients).
- Changed: Several fields in
NetworkTimewere renamed. The previous field names are still there and obsolete and will be removed in a later version.
- Changed: Most of
ClientSceneis now obsolete, use same or similar properties in
ClientScenewill be fully deprecated and removed in a later version.
NetworkClient.RegisterHandleroverload that included a
NetworkConnectionis now obsolete and will be removed in a later version. Handlers can use
- 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: Compiler symbols culled to Mirror 17 and later versions.
- 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
StopClientwhen 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
TickOutgoingto utilize the new NetworkEarly/LateUpdate functions...minimizes latency.
- Added: Push > Pull Broadcasting Part 1.
- Fixed: Telepathy 1.7 receive timeout disabled by default, increased
MirrorTransporttimeout to 30sec from 5sec to cover scene changes.
NetworkServer.SpawnObserversForConnectionrefactored to support all visibility cases (
Default) and all systems (legacy / new / default).
NullReferenceExceptionwhen called in
OnApplicationQuitor from tests.
NetworkServer.Update: inactive connection check moved into the main connections
foreachloop. Eliminates a
NetworkServer.Update: separate connections update loop moved into the main loop. Now there is only one connections loop.
NetworkManagerHUD.showGUIis now obsolete and will be removed in a later version.
SendToClientOfPlayeris now obsolete and will be removed in a later version.
LogFactoryand logging asset feature removed.
- Breaking: Command
ignoreAuthorityparameter renamed to
requiresAuthority, default true.
excludeOwnerparameter renamed to
includeOwner, default true.
ClientScene.spawnableObjectsis no longer public.
- 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.
NetworkClientdon't use Connect/Disconnect messages any more. Connect/Disconnect events are raised by the transport instead.
OnClientErrorremoved since no transport ever implemented them.
- Breaking Removed
NetworkConnection.InvokeHandleras no longer needed.
- Added: Batching support for server messages - See Network Manager to enable.
- Added: Unreliable channel added to KCP Transport.
- Fixed: Performance improvements to KCP Transport.
- Fixed: Examples with UI now work with Unity 2018.4 again
connectionId< 0 now.
- Fixed: Corrected
- Changed: Ping/Pong messages now use unreliable channel if available from transports.
- Breaking Read / Write Blittable has been removed.