{% hint style="info" %} 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. {% endhint %}
-
Added:
ChangeOwnerMessage
.NetworkIdentity.AssignClientAuthority
andRemoveClientAuthority
now send this message instead of aSpawnMessage
, 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 tofalse
now. -
Changed:
NetworkTransformV2
isClientAuthority
nowprotected
instead ofprivate
. -
Changed: Examples using
NetworkTransformV2
now using default values. -
Changed: Updated
NetworkManager
Script Template. -
Changed: Tanks example has health bars now.
-
Changed:
componentIndex
is now abyte
inCmdMessage
andRpcMessage
structs. -
Changed:
SyncObject
is now a class instead of an interface. -
Obsolete:
SyncObject.Flush
- UseClearChanges
instead. -
Obsolete:
NetworkBehaviour.getSyncVarHookGuard
- UseGetSyncVarHookGuard
instead. -
Obsolete:
NetworkBehaviour.setSyncVarHookGuard
- UseSetSyncVarHookGuard
instead. -
Obsolete:
NetworkBehaviour.SetDirtyBit
- UseSetSyncVarDirtyBit
instead. -
Obsolete:
NetworkServer.SendToReady
- UseSendToReadyObservers
instead. -
Removed: Various obsolete methods that were at least 3 months old.
-
Removed: Fallback transport -- no longer included or supported.
- 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
inNetworkLoop
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 intoNetworkServer.spawned
andNetworkClient.spawned
. - 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
OnSpawned
/OnDestroyed
events. - Added: Network Transform V2 with Snapshot Interpolation.
- Added: Network Transport exception events that transports can raise to Network Manager's
OnServerError
andOnClientError
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 toNetworkAnimator.CmdSetAnimatorSpeed
. - Fixed:
DestroyObject
is now called when cleaning up scene identities too. Sends unspawn messages and callsOnStopClient
/OnStopServer
properly. - Fixed: Clear
hasAuthority
when destroying and callOnStopAuthority
. - 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 toConfigureHeadlessFrameRate
.
- 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 clearsOnConnected
/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
andReadUri
. - Fixed:
FinishLoadScene
should not be called whencustomHandling
is true (Additive Scenes). - Fixed: Prevent assetId from being set to an empty string.
- Fixed:
clientAuthority
is now public inNetworkRigidbody
/NetworkRigidbody2D
. - Changed: Transports are no longer paused (disabled) during scene loading. Message processor handles this correctly now, so transports can be simplified.
- 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 callsDestroyPlayerForConnection
ifNetworkManager
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 toushort
. - 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.
- 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
- NOTE: You may need to delete your
- Fixed:
NetworkIdentity.isLocalPlayer
is only set, but never reset. Fixes a bug whereisLocalPlayer
would be false inOnDestroy
, so some components couldn't rely on it inOnDestroy
. - Fixed:
NetworkIdentity.Reset
now resetsisLocalPlayer
after theisLocalPlayer
/ClearLocalPlayer
check. - Fixed:
NetworkIdentity.OnDestroy
now only clearsNetworkClient.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 inNetworkClient
instead.ClientScene
will be fully deprecated and removed in a later version. - Changed:
NetworkClient.RegisterHandler
overload that included aNetworkConnection
is now obsolete and will be removed in a later version. Handlers can useNetworkClient.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.
- Added:
NetworkIdentity
now hasisServer
/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
: avoidNullReferenceException
when called inOnApplicationQuit
or from tests. - Fixed:
NetworkServer.Update
: inactive connection check moved into the main connectionsforeach
loop. Eliminates aforeach
-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 torequiresAuthority
, default true. - Breaking:
ClientRpc
excludeOwner
parameter renamed toincludeOwner
, default true. - Breaking:
ClientScene.spawnableObjects
is 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.
- 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.
- Added: KCP Transport updated to version 1.7.
- Added: Batching support for server messages - See Network Manager to enable.
- Added: Network Owner Checker.
- 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 forconnectionId
< 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.