2022 Change Log
Mirror is published to the Asset Store at the start of every month, unless some critical issue causes a delay.
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.
v71.0.0 -- 2022-Dec-31
Added:
NetworkClient.activeHostadded as static.Added: Sync* collections now support Client-to-Server Sync Direction.
Added: Network Manager HUD now has a StopClient button for Host mode.
This leaves the server running in Server Only mode and removes the host client.
Fixed: KCP updated to version 1.26.
Fixed:
NetworkManager.OnStopClientnow checks if client was started.Fixed:
NetworkManager.OnClientSceneChangednow checks for authenticated client before callingNetworkClient.Ready.Fixed:
NetworkManager.modeis now set toofflinebefore calling OnStopClient to prevent a recursion.Fixed:
SimpleWebSocketlogging improved.Fixed:
NetworkManagertemplate now resets singleton in Awake override.Fixed:
NetworkDiscoverytemplate now correctly has the messages defined as structs.Fixed: NetworkTransform / NetworkTransformReliable now check for null connectionToClient in UpdateServer.
This cures the NRE's when player object is abandoned by scene changes.
Fixed:
NetworkTransformChildAddComponentMenuattribute reset since it's obsolete.Fixed:
NetworkRigidbody2Dnow hasHelpURLattribute.Fixed:
NetworkServerlogs now have game object references for easier debugging.Fixed: FPS script had wrong namespace.
Fixed: Network Authenticators now use
NetworkClient.Sendso we don't bypass a null check.Fixed:
NetworkClient.ownedis now correctly cleaned up in OnDestroy.Fixed:
NetworkIdentity.spawnedis now correctly cleaned up in OnDestroy.Fixed:
SpawnObjectwas missing a check for identities already spawned.This cleans up the warnings in Additive Scenes implementations.
Changed:
NetworkServer.localConnectionis nowLocalConnectionToClienttype.Changed: NetworkManager's OnStartServer and OnStartHost are now called later in the startup sequence.
Changed:
NetworkRoomManagerno longer does max connection checks...NetworkServeralready does that sooner.Obsolete:
NetworkServer.localClientActiverenamed toactiveHost.BREAKING:
NetworkTransformandNetworkTransformReliablenow inherit from a newNetworkTransformBase.
v70.0.0 -- 2022-Dec-09
Added: Support for Unity 2019 LTS was restored
No promises as how long this will last. Unity no longer supports it, and code debt adds up.
Fixed: KCP updated to version 1.23.
Fixed: Examples have been updated to work with this release.
Fixed: Interest Management now uses
TryGetValuein several places.Fixed: Telepathy no longer calls OnDisconnected twice incorrectly.
Fixed: Transport handlers are cleared when NetworkClient restarts.
Fixed: Several errors with Multiplex Transport were fixed.
Fixed: Weaver now supports inheritance for
NetworkConnectionParameter.Fixed: Client-To-Server SyncVars weren't being sent to clients.
Fixed: Logging in transports was improved.
Changed: NetworkManager.OnClientDisconnect is now an empty virtual method.
Script Template also updated.
Breaking:
NetworkTransformReliable and UnreliableUnreliable version replaces the old
NetworkTransform.SyncIntervalis now managed byNetworkServersendRate(set in Network Manager).NetworkTransformChildremoved...use Network Transform and set target to a child.clientAuthorityobsoleted in favor ofsyncDirectionimpemented in previous release.
Support for Unity 2019 LTS was restored in this release, but we cannot promise how long we'll be able to maintain compatibility as code debt adds up.
v69.0.0 -- 2022-Nov-10
This version was published to the Asset Store as 2022-10.
Added: CCU Test example.
Added:
NetworkStatisticscomponent.Fixed:
NetworkRigidbodynow uses double time to keep precision over long runtime.Fixed:
NetworkLerpRigidbodynow uses double time to keep precision over long runtime.Fixed:
NetworkWriter.WriteString()now ensures capacity before writing.Changed: Tools folder created and some rearrangement was done.
v68.0.0 -- 2022-Oct-21
This version was published to the Asset Store as 2022-09.
Added: Snapshot Interpolation example.
Added:
NetworkPingDisplaynow has configurable size.Added:
NetworkManager.GetStartPositionis now virtual so it can be overridden.Added: Network Manager now has an Auto Connect option for headless clients / CCU testing.
Added:
NetworkConnectionnow maintainsownedHashSet on both server and client.Added:
NetworkBehaviournow hasSyncDirectionto make client authority components easier.Note: This feature will continue to evolve and may change in future releases.
Fixed: Benchmark, Chat and Tanks examples were improved.
Fixed: Network Manager script template was updated.
Fixed:
NetworkBehaviourlogging was improved.Fixed:
SimpleWebTransportheader lookup is now case-insensitive.Fixed: Spatial Hash Interest Mgmt. now calculates visibility range correctly.
Fixed: Read/Write GUID no longer allocates garbage.
Fixed: Telepathy
ClientDisconnectnow callsDisconnectevent correctly.Fixed
NetworkServer.Spawnnow checks and warns for duplicates.Fixed:
NetworkIdentitynow only checksApplication.isPlayingin Editor context.Fixed: Network Statistics properties made public so other components can access them.
Fixed:
InterestManagement.Awakeis nowprotected virtualso it can be overridden.Fixed:
NetworkIdentityserialization ofcomponentIndexreduced to ~1 bit instead of 1 byte.Fixed:
NetworkBehaviourserialization of headers reduced to 1 byte instead of 4 bytes.Fixed:
NetworkClientnow resets time interpolation whenever host connects or reconnects.Changed:
NetworkBehaviour.ComponentIndexreduced frominttobyte.Changed: Snapshot Interpolation refactored to version 2.
Changed: Latency Simulator
latencySpikerenamed tojitter.Changed: Snapshot Interpolation split into time + value interpolation.
Breaking: Transports folder was moved up and various transports moved into that folder.
Breaking: Runtime folder renamed to Core.
Breaking:
NetworkIdentity/NetworkBehaviourOnSerializeno longer returns abool.Breaking:
NetworkBehaviour.SerializeSyncVarsno longer returns abool.Breaking:
assetIdinSpawnMessagechanged fromGuidtouint.Breaking:
OnError(Exception)is nowOnError(TransportError, string)whereTransportErroris an enum and string is free text provided by transports.Breaking:
NTSnapshotrenamed toTransformSnapshotfor clarity.Breaking:
NetworkTimewas rewritten to useNetworkClient's snapshot interpolation timeline.Obsolete:
NetworkManager.serverTickRaterenamed tosendRate.Obsolete:
NetworkManager.serverTickintervalwas moved toNetworkServer.Obsolete:
NetworkTransport.activeTransportrenamed toactive.Obsolete:
NetworkBehavior.hasAuthorityrenamed to isOwned for clarity.Obsolete:
NetworkConnection.clientOwnedObjectsrenamed toownedfor clarity.
v67.1.0 -- 2022-May-05
Fixed: KCP updated to version 1.19.
Fixed: Team Interest Mgmt
OnDestroyedlogic was improved.Fixed: Comments in various Network Authenticators were updated.
Fixed: Benchmark example was improved so movement revolves around origin.
Fixed: Cmd/Rpc bandwidth reduced from 4 bytes to 2.
Fixed:
Texture2Dnow includes dimensions and readsColor32correctly and supports nulls.Fixed:
NetworkServer.SendToObserversnow correctly usesNetworkConnectionToClient.Fixed:
NetworkClientnow checks and warns for duplicate scene ID.Changed:
NetworkClient/NetworkServerOnErrorrenamed toOnTransportErrorfor clarity.Breaking: Obsoletes were removed.
v66.0.9 -- 2022-Apr-17
NOTE: This was to be the last Mirror release to support Unity 2019 LTS, as it has reached end of life by Unity. Support was restored in Mirror 70.0.0 above.
Added: Network Statistics component, showing messages & packets sent & received per second.
Added:
Queue.TryDequeueextension added for Unity 2019 & 2020 compatibility.Fixed:
NetworkClient.ChangeOwnernow usesisLocalPlayerflag to check ifOnStopLocalPlayershould be called.Fixed:
ReadNetworkBehaviornow correctly reads data on client even if the associateNetworkIdentityis missing from the client.Fixed:
NetworkClient.SpawnPrefabnow correctly looks for custom spawn handlers before using registered prefabs list instead of after.Fixed:
NetworkWriterExtensionsnow usesWriteArrayinstead ofWrite.Fixed: Attempting to serialize prefabs and not-spawned game objects throws a more obvious exception.
Fixed:
DestroyAllClientObjectsnow also resets after unspawn handler called.Fixed: Calling
StopClientin Host mode no longer resetsnextNetId.Fixed: Calling
StopClientin Host mode no longer destroys objects on clients.Fixed: It should now be possible to call StopClient in Host mode to leave the server in a running "Server Only" state, keeping all clients connected and running normally.
Fixed:
AggressiveInliningattribute added in many places to improve performance.Changed:
NetworkWriter/NetworkReaderAPI simplified.Changed:
PooledNetworkReader/PooledNetworkWriterrenamed toNetworkReaderPooled/NetworkWriterPooled.Changed: Transport base class moved to Runtime folder, Transport folder renamed to Transports
v65.0.0 -- 2022-Mar-09
Added: Command / ClientRpc / TargetRpc can now be overloaded.
Added: Network Behaviour now has
OnStopLocalPlayervirtual method, invoked right beforeOnStopClient. Script Template has also been updated.Added: Network Manager Template overrides
singletonto eliminate the need to cast Network Manager's singleton to derived class type.Added: Support for generic
NetworkBehaviour<T>subclasses.Fixed: Network Reader/Writer uses blittable reads/writes where possible.
Fixed: Android compatibility for Read/Write blittable.
Fixed: Android Multicast Discovery.
Fixed:
NetworkTransformChildnow correctly syncs initial state when spawned.Fixed: Latency Simulation now uses
Time.unscaledTime.Fixed:
SimpleWebsocketTransporthas been updated to fix a number of bugs, including compatibility with Unity 2021.x, and handling of messages larger than 64K.Changed: A bunch of virtual methods now take
NetworkConnectionToClientinstead ofNetworkConnection.Changed:
RemoteCallHelperrenamed toRemoteProcedureCalls.Changed:
CmdDelegaterenamed toRemoteCallDelegate.Changed:
MirrorInvokeTyperenamed toRemoteCallType.Changed:
NetworkManager.clientLoadedSceneis nowprotected.Obsolete:
NetworkTransformnow has overloads forCmdTeleport/RpcTeleportwith Quaternion rotation, deprecating separateCmdTeleportAndRotate/RpcTeleportAndRotatemethods, made possible by implementing Command / ClientRpc overloads mentioned above.Obsolete: Experimental Network Transform components. Use the regular ones instead.
v57.0.0 -- 2022-Jan-12
Fixed: KCP updated to version 1.17.
Fixed: Use Read/Write blittable for performance improvement.
Removed: Obsolete Network Visibility.
v55.3.8 -- 2022-Jan-05
Added: Team Interest Management and Network Team components.
Added: Device Authenticator.
Added: Custom Interest Management Script Template.
Added: Custom Network Transform Script Template.
Added: Rotation parameter added to
NetworkTransformCmdTeleport/RpcTeleport.Added: Support for a bunch more nullable types.
Added: Additive Levels example.
Added: Texture2D and Sprite are now supported Data Types.
Fixed: Fast Enter Play mode without Reload Domain now supported by resetting all statics.
Fixed: Network Transform now uses less bandwidth by only syncing changes based on sensitivity.
Fixed: KCP updated to version 1.15.
Fixed:
ReplacePlayerForConnectionnow correctly updatesisLocalPlayerflag.Fixed:
OnStopClientno longer called twice in certain cases.Fixed:
NetworkServernow checks foractivebefore invoking Interest Management updates.Fixed: Objects spawned with a client owner no longer lose ownership when respawned via interest management.
Fixed: Delayed Disconnect in Basic Authenticator now uses
HashSetof connections pending disconnect.Fixed:
NetworkTransformnow checks for ready client before sending updates to server.Fixed:
OnStartLocalPlayernow correctly called again afterRemovePlayerForConnectionfollowed byAddPlayerForConnectionwith the same player object.Changed:
NetworkMatchmoved toInterestManagement/Matchfolder.Changed: Internal code for
SyncVar. Resetting non-default inspector values may be required.Changed: Tanks example updated.
Changed: Chat example updated...overhauled really.
Changed: Network Reader / Writer now use blittable serialization where possible (4-6x performance improvement).
Breaking: Removed obsolete
ConfigureServerFrameRateUseConfigureHeadlessFrameRateinstead.Breaking: Removed obsolete
PersistNetworkManagerToOfflineScene.Breaking:
NetworkAuthenticatorOnClientAuthenticatedevent no longer needs a NetworkConnection parameter.Obsolete: OnClient* virtual methods in Network Manager no longer take a
NetworkConnectionparameter.Obsolete: Network Room Manager client overrides no longer have
NetworkConnectionparameter. UseNetworkClient.connectionin your overrides instead.
Last updated