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.
- 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
- 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: 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 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.
Last modified 10mo ago