Changelog

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.

Version 41.x.x -- In Progress

  • Fixed: KCP 1.11 significantly reduced garbage allocations

Version 40.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: 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.

Version 35.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.

  • Changed: Breaking: Minimum supported Unity version is now 2019.4.x LTS.

  • Changed: Breaking: ClientScene.onLocalPlayerChanged removed.

  • Changed: Breaking: Compiler symbols culled to Mirror 17 and later versions.

Version 32.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.

  • Changed: Breaking: LogFactory and logging asset feature removed.

  • Changed: Breaking: Command ignoreAuthority parameter renamed to requiresAuthority, default true.

  • Changed: Breaking: ClientRpc excludeOwner parameter renamed to includeOwner, default true.

  • Changed: Breaking: ClientScene.spawnableObjects is no longer public.

Version 30.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.

  • Changed: Breaking:NetworkServer / NetworkClient don't use Connect/Disconnect messages any more. Connect/Disconnect events are raised by the transport instead.

  • Changed: Breaking: OnServerError / OnClientError removed since no transport ever implemented them.

  • Changed: Breaking Removed NetworkConnection.InvokeHandler as no longer needed.

Version 30.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 connectionIds < 0 now.

  • Fixed: Corrected NetworkRoomPlayer ReadyStateChanged oldReadyState parameter name.

  • Changed: Ping/Pong messages now use unreliable channel if available from transports.

  • Changed: Breaking Read / Write Blittable has been removed.

Version 30.2.2 -- 2020-Dec-17

  • Added: Network Reader/Writer now does Read/WriteBlittable for better performance.

  • Added: KCP Transport updated to version 1.4.

  • Added: Network Authenticator now has OnStopServer and OnStopClient overrides.

  • Added: Network Transform now applies compression to rotations.

  • Added: SyncVars now support using types that inherit from NetworkBehaviour.

  • Added: SimpleWebTransport now has option for TLS outside the transport.

  • Added: MultipleMatches example featuring Network Match Checker with Lobby and Match functionality.

  • Fixed: Better presentation of Network Ping Display..

  • Fixed: Middleware Transport now listens for inner events correctly..

  • Fixed: Calling StartServer / StartClient more than once is now prevented..

  • Fixed: NRE when no host player in PlayerScore in MultipleAdditiveScenes example.

  • Fixed: player collisions in MultipleAdditiveScenes example.

  • Fixed: Weaver now properly generates readers and writers for structs in other assemblies, e.g. Mathematics.

  • Fixed: NetworkServer.maxConnections is now public.

  • Fixed: Skip reset of object that's being destroyed.

  • Fixed: ReadyStatusChanged in NetworkRoomManager is now public.

  • Fixed: NetworkTransform now correctly uses ArraySegment in Commands.

  • Fixed: Added OnStopServer to NetworkSceneChecker and NetworkMatchChecker.

  • Fixed: Weaver method lookup conflict with Unity 2020.2.

  • Fixed: Memory allocation vulnerability in NetworkReader.

  • Changed: Playmode now blocked for invalid scene id's, with error messages.

  • Changed: Experimental Network Transform now uses Channels.DefaultUnreliable and applies compression to rotations.

  • Changed: Server Only scene objects in examples replaced with normal objects instantiated on server or just eliminated.

  • Changed: Breaking Force NetworkMessage to use structs in all cases - classes no longer supported.

  • Changed: Breaking Removed ReadPacked / WritePacked functions - Use Read and Write variants instead.

  • Changed: Breaking LLAPI has been removed.

Version 26.2.2 -- 2020-Nov-20

  • Added: Quaternion and float compression.

  • Added: Option to configure handshakeMaxSize in SimpleWebTransport.

  • Added: ServerTeleport to Experimental NetworkTransform.

  • Added: Accept and Reject methods to Authenticator base class for ease of use.

  • Fixed: Weaver failure on Authenticators and assemblies with only messages and no behaviors.

  • Fixed: Examples no longer rely on sequential connectionId.

  • Fixed: Eliminated errors when first importing due to preprocessor defines in transports.

  • Fixed: Scene ID logging is now consistently in hex format.

  • Fixed: sceneId when using BuildPipeline.BuildPlayer with incorrect case in path.

  • Fixed: Trigger not applied correctly for host in NetworkAnimator.

  • Fixed: Ensure ReadHelper.Read reads exactly number of bytes in SimpleWebTransport.

  • Changed: Minimum Unity version is now 2018.4.28 LTS.

  • Changed: Script Templates are now available as a separate package here.

  • Changed: Telepathy Transport is now obsolete - Use KCP Transport instead.

  • Changed: Breaking NetworkIdentity.clientAuthorityCallback is an event now.

  • Changed: Breaking Removed older obsolete methods and tests.

  • Changed: Breaking Transports no longer support sending to a List of connectionIds.

Version 23.0.3 -- 2020-Oct-24

  • Added: Support null when serializing classes.

  • Added: Support recursive data types.

  • Added: Support jagged arrays.

  • Added: New generic Read and Write methods for typed used by mirror and user callbacks.

  • Added: NetworkAnimator now syncs animator.speed.

  • Added: NetworkTransform Server Teleport function.

  • Added: New websockets transport: SimpleWebTransport.

  • Fixed: ClientScene.localplayer is now set to null when it is destroyed.

  • Fixed: Fixing IndexChanged hook not being called for NetworkRoomPlayer.

  • Fixed: Fixing NullReferenceException when loading scene.

  • Fixed: Fixing NetworkConnectionToClient for IL2CPP.

  • Fixed: NullReferenceException in tanks example when running in headless server only.

  • Changed: Breaking Use SyncLists/SyncSet/SyncDictionary directly, e.g. SyncList, see Pull Request 2307.

  • Changed: Breaking Renamed IMessageBase to NetworkMessage, see Pull Request 2317.

  • Changed: OnSerialize now includes the component index as byte before serializing each component. Better CPU performance at the cost of bandwidth.

  • Changed: Can now have 256 NetworkBehaviours per NetworkIdentity.

  • Removed: Breaking SyncEvents, see Pull Request 2178.

  • Removed: Breaking Removing manual invoke for Cmd and RPC, see Pull Request 2223.

  • Removed: Breaking Removed Serialize/Deserialize in messages, see Pull Request 2317.

  • Removed: Breaking Removing auto initialize for SyncLists/SyncSet/SyncDictionary, see Pull Request 2330.

  • Removed: Breaking Replacing Ninja.WebSockets with SimpleWebTransport.

Version 17.3.0 -- 2020-Sep-04

  • Added: NetworkAnimator now syncs Layer Weight.

  • Added: Lists can now be sent in Command/Rpc/Message/etc.

  • Added: [Server]/[Client] can now be used outside of NetworkBehaviour.

  • Added: Experimental NetworkLerpRigidbody component that syncs position and velocity and applies them using Lerp.

  • Fixed: NetworkAnimator now fires triggers immediately on owner.

  • Fixed: isServer will now keep its value after calling NetworkServer.Destroy.

  • Fixed: [Client] error message now correctly logs the name of the method.

  • Fixed: Messages can now be nested within other Message types.

  • Fixed: [Server]/[Client] now correctly give error when used on abstract method.

  • Fixed: Abstract classes can now implement IMessageBase.

  • Fixed: Weaver now correctly gives error when generating a reader methods for abstract classes.

  • Changed: NetworkServer no longer runs update if there are no connections.

  • Changed: NetworkBehaviour.IsDirty is now a public.

  • Changed: SyncEvent are now obsolete and will be removed in the next version.

  • Removed: isHeadless is now obsolete, Use preprocessor directive #if UNITY_SERVER instead.

Version 16.9.0 -- 2020-Aug-01

  • Added: NetworkHeadlessLogger log handler that sets console color.

  • Added: New Mirror List Server, see Cloud folder.

  • Added: Experimental NetworkRigidbody component that syncs velocity and other rigidbody settings.

  • Fixed: base method called inside Command/RPC now work if the first base class does not have an override.

  • Fixed: NetworkRoomPlayer now cleans up roomSlots on disable.

  • Fixed: Fallback and Multiplex now disable their transports when they are disabled.

  • Fixed: Websockets transport SocketState now returns false if socket is undefined.

  • Fixed: SyncEvents can now have the same name if they are in different classes.

  • Fixed: You can now have multiple SyncEvents per class.

  • Fixed: Message base classes are now processed even if they are declared later in the file.

  • Fixed: Registering a prefab with and same GUID no longer gives an error.

  • Fixed: Weaver now generates Serialize methods for classes that implement IMessageBase.

  • Changed: NetworkProximityChecker now has slightly better performance.

  • Changed: ClientRpc no longer need Rpc prefix.

  • Changed: Commands no longer need Cmd prefix.

  • Changed: TargetRpc no longer need Target prefix.

  • Changed: NetworkManager.networkSceneName is now protected set as it should not be set directly.

Version 16.1.1 -- 2020-Jun-13

  • Added: [Command] now has an ignoreAuthority option for invoking Commands on objects the client doesn't have authority over, and Command methods can have an optional NetworkConnectionToClient sender parameter.

  • Added: [ClientRpc] now has an excludeOwner option to prevent messages from going to the client that owns the object.

  • Added: Commands and Rpc's can now be declared as virtual and overridden in derived classes.

  • Added: NetworkLogSettings component and Log Settings Window.

  • Added: SyncLists now support AddRange, InsertRange, and RemoveAll.

  • Added: Network Room Manager now has a virtual OnRoomServerPlayersNotReady that fires on server from CheckReadyToBegin.

  • Added: Network Room Player template now includes base Network Behaviour overrides.

  • Added: Network Room Player now has a virtual hook for the index SyncVar, and the override is in the template.

  • Added: Experimental Network Transform with more control settings and features.

  • Added: Network Ping Display component

  • Fixed: Network Room Manager.minPlayers is now protected so it's available for derived classes.

  • Fixed: Network Room Manager no longer does redundant player prefab registration in OnStartClient.

  • Fixed: Network Room Player OnClientEnterRoom now correctly only fires on clients.

  • Fixed: RegisterClientMessages was being incorrectly invoked for every scene change.

  • Fixed: Network Behaviour SyncMode and SyncInterval was not showing in the inspector in some cases (regression).

  • Fixed: Network Manager now cleans up network objects better when server stops.

  • Fixed: Network Manager no longer tries to change to offline scene redundantly in StopClient.

  • Fixed: Network Connection's lastMessageTime wasn't being properly initialized, causing incorrect idle timeout disconnects.

  • Fixed: Websockets transport now correctly pauses and queues messages during scene changes and should otherwise be more stable with SSL

  • Changed: Breaking Websockets Transport now requires full path to PFX Certificate file.

  • Changed: Improvements were made to the Tanks example.

  • Changed: Network Room Player now uses virtual SyncVar hook for ReadyStateChanged.

  • Changed: Network Proximity Checker now uses direct distance check against player objects instead of Physics.SphereCastNonAlloc for better performance.

  • Removed: Discord Transport

Version 13.0.1 -- 2020-May-06

  • Added: Network Match Checker component. Use this component to create many concurrent isolated matches within a single game server.

  • Added: SyncLists now have Find and FindAll functions.

  • Added: Network Behaviour now has OnStopServer and OnStopClient virtual methods.

  • Added: Weaver now supports custom Reader & Writer for types in other assemblies.

  • Added: Network Manager now has an optional setting to check for and disconnect remote connections that have gone silent for a specified interval.

  • Added: Network Server and Network Client now have ReplaceHandler methods to avoid warnings when attempting to double register message handlers.

  • Added: NetworkServer.SendToAll now has an optional bool to only send to ready clients, and a SendToReady method that doesn't require a Network Identity.

  • Fixed: Network Animator no longer double-fires SetTrigger / ResetTrigger on the host client.

  • Fixed: Network Animator is no longer limited to one component per object.

  • Fixed: Destroy is no longer invoked twice on the server for the player object.

  • Fixed: RegisterClientMessages is no longer invoked twice on the client.

  • Fixed: Network Behaviour SyncMode and SyncInterval was not showing in the inspector in some cases.

  • Fixed: Telepathy Transport - LateUpdate now processes a limited amount of messages per tick to avoid deadlocks.

  • Changed: Network Behaviour: OnNetworkDestroy was renamed to OnStopClient.

  • Changed: Breaking RemovePlayerMessage has been removed as a potential security risk. Use NetworkServer.RemovePlayerForConnection instead.

  • Changed: Breaking Network Behaviour: OnRebuildObservers, OnCheckObserver, and OnSetHostVisibility were moved to a separate class called NetworkVisibility.

Version 11.4.2 - 2020-Apr-03

  • Added: SyncVar hooks can be virtual now, and overridden in a derived class.

  • Added: Virtual OnRoomStopServer added to Network Room Manager and Script Template.

  • Added: 10K Networked Objects Benchmark Example.

  • Fixed: Setting breakpoints in an IDE for Command's and Rpc's work correctly now.

  • Fixed: NetworkServer.SendToObservers now reports correct channel to Mirror Profiler.

  • Fixed: Network Room Manager's roomPlayerPrefab is now protected so it can be accessed in derived classes.

  • Fixed: Network Room Player inspector and documentation updated to be less confusing.

  • Fixed: Network Identity no longer double calls NetworkServer.Destroy.

  • Fixed: Network Animator now correctly excludes parameters controlled by curves.

  • Fixed: Network Behaviour now uses a property drawer for the SyncVar label so it displays better.

  • Fixed: NetworkServer.SendToReady overloads are no longer ambiguous.

  • Fixed: Network Room Manager no longer incorrectly destroys the game player object. It's left in the game scene to be cleaned up by Unity when the scene changes.

  • Fixed: StopHost correctly raises OnServerDisconnect in Network Manager, and correctly unwinds before shutting down the server.

  • Fixed: isServer is no longer incorrectly false on server in Network Identity's OnDestroy.

  • Changed: Network Manager offlineScene and onlineScene store full paths now, so use SceneManager.GetActiveScene().path instead.

  • Changed: Network Manager HUD now calls StopHost / StopServer / StopClient more appropriately.

  • Changed: Network Manager HUD labels no longer say LAN. Associated docs also cleaned up to eliminate the misconception of Mirror being LAN only solution.

  • Changed: Network Transform compression removed and message handling is much simpler now.

  • Changed: Network Scene Checker initializes in Awake again because OnEnable proved to be unreliable in some cases.

  • Changed: Network Manager will no longer lose references to scenes if they aren't in the Build Settings scene list, however moving or renaming scenes may cause references to be lost.

  • Changed: Breaking Many obsolete methods and properties removed. Use version 10 first if upgrading from UNet or older Mirror. See Deprecations for complete list.

Version 10.4.7 - 2020-Mar-03

  • Added: Weaver will now block play mode and builds if there are weaver errors and show them in the console again.

  • Added: PooledNetworkReader and PooledNetworkWriter, both Disposable.

  • Added: NetworkReader.ReadMessage.

  • Added: Network Discovery now handles headless server mode.

  • Added: SyncVar, Cmd's and Rpc's now support Scriptable Objects via CreateInstance on the receiving side.

  • Added: Discord Transport Removed in v16.1.1

  • Fixed: isClient now returns true on clients in OnDestroy for networked objects.

  • Fixed: Host Player race condition for Ready message.

  • Fixed: Network Animator and Network Transform now correctly check for client authority in their respective Command methods.

  • Fixed: Network Room Manager Script Template had a virtual method instead of an override.

  • Fixed: Network Server's calls to NetworkConnectionToClient.Send now includes the channelId parameter that was missing.

  • Fixed: Network Server's calls to SendToAll, SendToReady, and SendToObservers send to the exact connection if it is detected as local connection, instead of falling back to the .localConnection.

  • Fixed: Network Server.SpawnObjects returns false if server isn't running.

  • Fixed: Network Transform rotation detection improved.

  • Fixed: Weaver generated code now builds properly for IL2CPP (again).

  • Changed: StartHost in Network Manager is no longer a virtual method (and shouldn't have been). Override OnStartHost instead.

  • Changed: Network Room Manager's OnRoomServerSceneLoadedForPlayer now includes NetworkConnection parameter.

  • Changed: Network Scene Checker now works from OnEnable instead of Awake, and uses Scene instead of scene name.

  • Changed: Renamed NeworkWriter.Write to WriteMessage for consistency.

Version 9.0.2 - 2020-Feb-04

  • Added: Network Animator now has a ResetTrigger function and server / client authority warnings.

  • Added: Network Transform now has 3 new floats for Sensitivity to quiet down message traffic from micro changes.

  • Added: Network Observer added to Script Templates -- See the new Mirror section in the Assets > Create menu.

  • Added: Network Discovery has been reimplemented including an example and script template -- thanks to all those who contributed!

  • Added: Mirror Icon for all components.

  • Added: Inspector Headers to Network Behaviour, Network Transform, and Network Animator.

  • Added: URI added to supported data types.

  • Added: NetworkReaderPool has been implemented in place of new NetworkReader everywhere, significantly reducing garbage allocation.

  • Fixed: Network Transform and Network Animator now uses NetworkWriterPool.

  • Fixed: Network Transform and Network Animator now respect hasAuthority for client owned objects.

  • Fixed: Network Transform will now correctly teleport if time / distance are too large.

  • Fixed: Network Animator now correctly syncs when clientAuthority is false.

  • Fixed: Client owned objects are now destroyed when client disconnects (regression).

  • Fixed: Client authority is now preserved for networked objects carried through scene change in DontDestroyOnLoad (DDOL).

  • Fixed: Starting server immediately after canceling client connection attempt no longer throws a NRE.

  • Fixed: IL2CPP builds no longer trigger an assert when stopping server.

  • Fixed: SyncVars are now set for Host player before hook is invoked.

  • Fixed: SyncDictionary now correctly updates the value before invoking callbacks.

  • Fixed: StopHost no longer tries to change to the Offline scene twice.

  • Fixed: Network Room Manager roomSlots are now correctly managed on both server and clients.

  • Fixed: Network Room Manager now correctly supports multiple GamePlay scenes and adds a virtual OnRoomServerAddPlayer.

  • Fixed: Additive scene operations no longer incorrectly lead to extraneous AddPlayer messages from clients.

  • Fixed: NetworkWriterPool is now used everywhere instead of new NetworkWriter (we missed a couple when the pool was implemented).

  • Fixed: Patch for Unity 2019.3.x RequestScriptReload was moved to EditorUtility from UnityEditorInternal.InternalEditorUtility.

  • Fixed: Arrays of custom types are now correctly supported.

  • Changed: Shutdown logic has been streamlined.

  • Changed: NetworkIdentity.GetSceneIdenity method renamed to GetSceneIdentity (name typo).

  • Changed: OnApplicationQuit virtual method added to Transport class and Transport.activeTransport.Shutdown() is no longer called from Network Manager.

  • Changed: Breaking SyncVar Hooks now require two parameters, one each for the old and new value, and the property value is now set before the hook is called.

Version 6.7.7 - 2020-Jan-01

  • Added: Script Templates -- See the new Mirror section in the Assets > Create menu.

  • Added: Full Text Search added to docs.

  • Added: Basic Chat example.

  • Added: Some YouTube videos have been created and linked from various doc pages where appropriate.

  • Added: Transports can now support using a URI for connection including port.

  • Added: version.txt file is now included with the release version in it.

  • Added: Structs that inherit from IMessageBase now generate serializers.

  • Fixed: Components now appear in docs under API Reference.

  • Fixed: Delayed disconnect in Basic Authenticator.

  • Fixed: Multiplexer now handles OnClientConnect and GetMaxMessageSize correctly.

  • Fixed: Network Room Manager OnRoomServerCreateGamePlayer now includes the Room Player Object as parameter.

  • Changed: Room example now has Network Room Manager in the Offline scene and correctly switches to the Room scene when server / client is started.

  • Changed: Network Manager startPositionIndex and loadingSceneAsync are now public.

  • Changed: SceneMessage now has an optional customHandling flag so devs can handle their own custom scene loading, e.g. using Addressables.

  • Changed: Breaking Network Transform now defaults to server authority and has a Client Authority checkbox.

Version 6.3.0 - 2019-Dec-09

  • Added: SyncMode selector now works for components on any scene objects owned by a client in addition to the player object, e.g. pets.

  • Added: MessageBase now fully supports inheritance.

  • Added: Room example now has UI button for host to return all clients to the Room scene and other improvements.

  • Fixed: ReplacePlayerForConnection now works for existing scene objects as long as another player doesn't own the targeted object.

  • Fixed: isClient and isServer are now true for networked objects in Start and OnStartClient / OnStartServer, respectively.

  • Fixed: hasAuthority is now set before OnStartClient and OnStartLocalPlayer are invoked.

  • Changed: connectionToClient is now used to assign client authority.

  • Changed: In many respects, the Host player acts a lot more like a client and will reveal bugs better.

  • Changed: ReplacePlayerForConnection now has an optional bool to retain authority of the previous object (default = false).

  • Removed: NetworkServer.SpawnWithClientAuthority is deprecated in favor of overloads of NetworkServer.Spawn.

Version 5.0.2 - 2019-Nov-03

  • Added: SyncList and SyncSet custom Equality Comparer support.

  • Added: Custom serializers may be implemented for any type in Cmd's and Rpc's.

  • Fixed: SyncVar hooks are no longer called in Host if no change.

  • Fixed: Network Identity no longer throws a null reference exception in RemoveClientAuthority.

  • Fixed: Server transport now suspended during scene change to prevent erroneous messages.

  • Fixed: SyncList, SyncDictionary and SyncSet now use a custom IEnumerator to avoid memory allocation.

  • Fixed: sceneID is no longer reset in certain cases when editing a prefab.

  • Changed: PreprocessorDefine code moved to CompilerSymbols folder to avoid paradox of missing symbols preventing the symbols being added to the project.

  • Changed: Host player no longer gets authority assigned to all objects by default.

  • Changed: Commands no longer bypass serialization for Host player, making debugging easier.

  • Changed: Local connections now maintain their own message queue.

  • Changed: Transport.Available is now abstract.

  • Removed: Network Identity: Local Player Authority has been removed as no longer necessary.

Version 4.0.7 - 2019-Oct-03

  • Added: Authenticators support to authenticate clients in the Connect phase.

  • Added: Profiler events. These events can be subscribed to by the Network Profiler to provide visual information.

  • Added: Transports now include channel in profiler events.

  • Added: Transport abstract class now supports sending a message to a list of connection id's.

  • Fixed: SceneMessage now has sceneOperation enum so clients can properly handle additive scenes.

  • Fixed: NetworkClient handlers are now cleared in Shutdown.

  • Fixed: Offline scene is no longer reloaded when client fails to connect or is rejected.

  • Fixed: Start Position Index is now reset to zero when server is stopped.

  • Fixed: Network Room Players are now all in DontDestroyOnLoad so they don't respawn in the game scene.

  • Fixed: Network Room example player controller restores main camera on disable.

  • Fixed: Components with different sync intervals were not sending updates to clients.

  • Fixed: In certain cases, weaver wouldn't weave some external assemblies.

  • Fixed: Network Animator now does a full sync for new clients.

  • Fixed: Network Behaviour inspector now shows SyncMode for private SyncVars.

  • Fixed: Calling Commands and Rpcs of parent classes from inherited classes works as it should.

  • Fixed: Telepathy no longer hangs when attempting to connect to a nonexistent host.

  • Fixed: Websockets Transport now properly returns the client endpoint information via ServerGetClientAddress.

  • Fixed: WebGL build now works with ArraySegment.

  • Changed: Mirror is now free of garbage memory allocation on the sending side.

    • Some transports may still have a little garbage allocation yet.

  • Changed: Deprecated the AddPlayerMessage extraMessage byte[] in favor of an easier approach to Custom Players.

    • This is a breaking change: The virtual method OnServerAddPlayer loses the AddPlayerMessage parameter.

  • Changed: NetworkIdentity.RemoveAuthorityForConnection is now easier to use: no need to supply the current "owner" anymore.

  • Changed: Renamed NetworkConnection.playerController to identity ... see Deprecations for details.

  • Changed: Lobby system renamed to Room to better align the name for what it is and make way for a future Lobby framework.

Version 3.17.4 - 2019-Sep-04

  • Added: Custom Network Readers & Writers via extension methods.

  • Added: Network Sync Mode selector on components to sync to observers (default) or just the owner.

  • Added: SyncVars now support structs and enums in other assemblies.

  • Added: Support for reading and writing array segments.

  • Added: Network Animator now has layers support.

  • Added: New virtual method OnServerChangeScene to Network Manager.

  • Added: XML summary comments for intellisense and future generated class docs.

  • Updated Examples and Documentation.

  • Fixed: SceneID was not set to 0 for prefab variants.

  • Fixed: Observers were not properly rebuilt on scene changes.

  • Fixed: SyncVar hooks were not able to change other SyncVars in Host mode.

  • Fixed: Telepathy not setting socket options on accepted clients.

  • Fixed: Catch IL2CPP bug.

  • Fixed: Telepathy and Websockets now start connections ID's at 1 instead of 2.

  • Fixed: Websockets support for SSL restored.

  • Fixed: Network Manager no longer complains about missing player prefab if auto-create is disabled.

  • Fixed: Removed a garbage allocation in Network Transform.

  • Fixed: NetworkClient.Ready was being called unnecessarily in certain cases, e.g. SceneMessages.

  • Changed: Documentation moved to website and API generated docs implemented.

  • Changed: AddPlayerForConnection handler is now internal to keep safety checks intact.

  • Changed: A bunch of messages converted to value types for performance.

Version 3.11.6 - 2019-Jul-10

  • Fixed: Telepathy IPv4, IPv6, and FQDN should all work now.

  • Fixed: TelepathyTransport error in UWP builds.

  • Fixed: OnApplicationQuit is handled better now.

  • Fixed: Performance and memory allocation improvements.

  • Changed: Telepathy Source is now included instead of a DLL.

Version 3.10.10 - 2019-Jun-19

  • Added: Scene Message now supports params for SceneMode (Normal / Additive) and PhysicsMode (2D / 3D).

  • Added: ClientScene.Send now has an optional ChannelId parameter.

  • Added: ASMDEF to Examples folder.

  • Added: Support for sending and receiving ArraySegment

  • Added: IReadOnlyList in SyncLists.

  • Fixed: Network Manager not switching to correct scene in some cases.

  • Fixed: ListServer Ping not found in WebGL.

  • Fixed: TelepathyTransport.GetMaxPacketSize uses the new configurable max size.

  • Fixed: Significant reduction in memory allocation and garbage collection.

  • Changed: Use transform.localPosition and transform.localRotation for better VR support.

  • Removed: Websockets send queues (they never worked) and SSL (temporarily because it didn't work).

Version 3.6.7 -- 2019-Apr-28

  • Changed: NetworkReader now uses ArraySegment to minimize allocations.

Version 3.6.6 -- 2019-Apr-24

  • Fixed: Reverted two internal refactor commits that had unintended consequences.

Version 3.6.5 -- 2019-Apr-23

  • Fixed: Unity 2019.1 compatibility.

  • Fixed: Erroneous error indicating prefabs were missing Scene ID's.

  • Fixed: OnDeserializeSafely now works without allocations.

  • Fixed: Weaver not writing symbol files, preventing breakpoints from working in Visual Studio.

  • Fixed: Network Identity SceneID generation now uses RNG Crypto Service Provider.

  • Fixed: Scene lighting in Additive example.

  • Fixed: Player Prefab transform details now respected when instantiated in the absence of NetworkStartPosition.

  • Removed: Tests folder from Unity package generation (no end-user value).

Version 3.5.9 -- 2019-Apr-12

  • Fixed: Network Manager round-robin mode using NetworkStartPosition objects now uses hierarchy sibling order.

  • Fixed: IsLocalPlayer is now reliably accurate in Start() by combining OwnerMessage and SpawnPrefabMessage.

  • Fixed: Stack overflow issues with Weaver and Cecil.

  • Fixed: Corrected assembly paths passed to weaver.

  • Fixed: Enum bandwidth reduced in SyncVars, Commands, and Rpcs.

  • Fixed: Placeholder files added for removed code files so updating works better.

  • Changed: Network Manager isHeadless is a static property now, changed from IsHeadless().

Version 3.5.3 -- 2019-Apr-10

  • Fixed: Exceptions in overrides of Network Manager and other components incorrectly silenced.

  • Fixed: Lobby system sometimes would not spawn and swap game player prefabs into the game scene.

  • Fixed: Application.targetFrameRate no longer set in host mode.

  • Changed: Telepathy: Split MaxMessageSize to allow setting a different value for client and server.

Version 3.4.9 -- 2019-Apr-6

  • Added: Semantic Versioning (which is why we jumped from 1.6 to 3.4.9).

  • Added: SyncHashSet.

  • Added: SyncList and SyncDictionary support all IList and IDictionary derived types, respectively.

  • Added: Documentation for SyncVars.

  • Added: Documentation for SyncEvents.

  • Added: NoRotation to Network Transform.

  • Added: Scale is now included in spawn payload along with position and rotation.

  • Added: Generic IMessageBase to allow struct message types.

  • Added: Weaver now supports Vector2Int and Vector3Int.

  • Added: List Server example.

  • Added: Additive Scenes example.

  • Fixed: SyncLists now work correctly for primitives and structs.

  • Fixed: SyncVar Hooks now will update the local property value after the hook is called.

    • You no longer need to have a line of code in your hook method to manually update the local property.

  • Fixed: Host should not call Disconnect on transports.

  • Fixed: NetworkAnimimator now supports up to 64 animator parameters.

  • Fixed: Network Manager StartServer no longer assumes scene zero is the default scene...uses GetActiveScene now.

  • Fixed: NetworkServer.Shutdown now resets netId to zero.

  • Fixed: Observers are now properly rebuilt when client joins and OnRebuildObservers / OnCheckObserver is overridden.

  • Fixed: NetworkProximityChecker: On rare occasion, player could be excluded from observers rebuild.

  • Fixed: NetworkLobbyPlayer OnClientReady works now.

  • Fixed: NetworkLobbyPlayer Remove button not showing for P1 when Server Only.

  • Fixed: NetworkLobbyManager pendingPlayers and lobbySlots lists are now public for inheritors.

  • Fixed: Offline scene switching now works via StopClient().

  • Fixed: Pong example updated.

  • Fixed: Source Weaver was deleting PDB files, preventing breakpoints and debugging from working.

  • Changed: TargetRpc NetworkConnection parameter is now optional...the calling client's NetworkConnection is default.

  • Changed: Movement example replaced with Tank example.

  • Changed: NetworkClient functions are all static now, so the singleton is gone. Use NetworkClient directly.

  • Changed: SyncList now supports structs directly, making SyncListSTRUCT obsolete.

  • Removed: SyncListSTRUCT - Use SyncList instead.

  • Removed: NetworkClient.ShutdownAll is obsolete -- Use NetworkClient.Shutdown instead.

Version 1.6 -- 2019-Mar-14

  • Fixed: Websockets transport moved to Mirror.Websocket namespace.

  • Fixed: Network Animator bandwidth abuse.

  • Fixed: Network Animator float sync bug.

  • Fixed: Persistent SceneID's for Networked objects.

  • Changed: Documentation for Transports.

  • Changed: Weaver is now full source...FINALLY!

  • Changed: ClientScene.AddPlayer 2nd parameter is now byte[] extraData instead of MessageBase extraMessage.

    • Please refer to the code sample here to see how to update your code.

  • Changed: Network Manager -- Headless Auto-Start moved to Start() from Awake().

  • Changed: Removed Message ID's for all messages - See Network Messages for details.

    • Message IDs are now generated automatically based on the message name.

    • Previously you would call Send(MyMessage.MsgId, message), now you call Send(message).

  • Removed: Documentation for Groove Transport - use Websockets Transport instead.

Version 1.5 -- 2019-Mar-01

  • Added: Migration Tool to (mostly) automate conversion from UNet.

  • Added: Full support for WebSockets and WebSocketsSecure to replace UNet LLAPI.

  • Added: Transport Multiplexer - allows the use of multiple concurrent transports.

  • Added: NetworkLobbyManager and NetworkLobbyPlayer with example game.

  • Added: Configurable Server Tick rate in Network Manager.

  • Added: New virtual OnClientChangeScene fires right before SceneManager.LoadSceneAsync is executed.

  • Added: Unit tests for Weaver.

  • Fixed: Garbage allocations removed from a lot of things (more work to do, we know).

  • Fixed: NetworkProximityChecker now uses OverlapSphereNonAlloc and OverlapCircleNonAlloc.

  • Fixed: SyncVar hook not firing when clients joined.

  • Fixed: Network Manager no longer assumes it's on Scene(0) in Build Settings.

  • Fixed: Network Animator no longer limited to 6 variables.

  • Fixed: TelepathyTransport delivering messages when disabled.

  • Changed: Minimum Unity version: 2018.3.6

  • Removed: SceneAttribute.cs (merged to CustomAttributes.cs).

  • Removed: NetworkClient.allClients (Use NetworkClient.singleton instead).

  • Removed: NetworkServer.hostId and NetworkConnection.hostId (holdovers from LLAPI).

  • Removed: NetworkConnection.isConnected (Network Connection is always connected).

  • Removed: Transport.GetConnectionInfo (Use ServerGetClientAddress instead).

Version 1.4 -- 2019-Feb-01

  • Added: HelpURL attributes to components.

  • Added: Automatic targetFramerate for headless builds.

  • Added: ByteMessage to Messages class.

  • Fixed: Connecting state can be canceled properly.

  • Fixed: Network Transform interpolation applied to client's own object.

  • Fixed: Objects are spawned with correct rotation.

  • Fixed: SceneId assignment.

  • Fixed: Changed syncInterval wasn't saved...it is now.

  • Fixed: Additive Scene loading.

  • Changed: Mirror is now full source -- no more DLL's.

  • Changed: Transports are now components -- TCP, UDP, WebGL, Steam.

  • Changed: Transport class now dispatches Unity Events.

  • Changed: NetworkServer.SendToClientOfPlayer uses NetworkIdentity now.

  • Changed: NetworkServer.SendToObservers uses NetworkIdentity parameter now.

  • Changed: NetworkServer.SendToReady uses NetworkIdentity now.

  • Changed: NetworkServer.DestroyPlayerForConnection uses NetworkIdentity.spawned now.

  • Changed: NetworkConnection.Dispose uses NetworkIdentity.spawned now.

  • Changed: NetworkReader.ReadTransform uses NetworkIdentity.spawned now.

  • Changed: Network Transform reimplemented -- physics removed, code simplified.

  • Removed: NetworkClient.hostPort (port is handled at Transport level).

  • Removed: NetworkServer.FindLocalObject (Use NetworkIdentity.spawned[netId] instead).

  • Removed: ClientScene.FindLocalObject (Use NetworkIdentity.spawned[netId] instead).