# 2020 Change Log

{% 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 %}

## [v30.2.2](https://github.com/MirrorNetworking/Mirror/releases/tag/v30.2.2) -- 2020-Dec-17 <a href="#version-3022----2020-dec-17" id="version-3022----2020-dec-17"></a>

* Added: Network Reader/Writer now does `ReadBlittable` / `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: Play mode 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.
* **Breaking:** Force `NetworkMessage` to use structs in all cases - classes no longer supported.
* **Breaking:** Removed `ReadPacked` / `WritePacked` functions - Use Read and Write variants instead.
* **Breaking:** LLAPI has been removed.

## [v26.2.2](https://github.com/MirrorNetworking/Mirror/releases/tag/v26.2.2) -- 2020-Nov-20 <a href="#version-2622----2020-nov-20" id="version-2622----2020-nov-20"></a>

* Added: [KCP Transport](https://mirror-networking.com/docs/Articles/Transports/KCPTransport.html).
* Added: [Libuv2k Transport](https://mirror-networking.com/docs/Articles/Transports/Libuv2k.html).
* 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](https://mirror-networking.com/docs/Articles/General/ScriptTemplates.html).
* Changed: Telepathy Transport is now obsolete - Use [KCP Transport](https://mirror-networking.com/docs/Articles/Transports/KCPTransport.html) instead.
* **Breaking:** NetworkIdentity.clientAuthorityCallback is an event now.
* **Breaking:** Removed older obsolete methods and tests.
* **Breaking:** Transports no longer support sending to a List of connectionIds.

## [v23.0.3](https://github.com/MirrorNetworking/Mirror/releases/tag/v23.0.3) -- 2020-Oct-24 <a href="#version-2303----2020-oct-24" id="version-2303----2020-oct-24"></a>

* Added: Support null when serializing classes.
* Added: Support recursive data types.
* Added: Support jagged arrays.
* Added: New generic Read and Write methods for types used by mirror and user callbacks.
* Added: NetworkAnimator now syncs animator.speed.
* Added: NetworkTransform Server Teleport function.
* Added: New websockets transport: [SimpleWebTransport](https://github.com/MirrorNetworking/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: Use SyncLists/SyncSet/SyncDictionary directly, e.g. `SyncList`, see [Pull Request 2307](https://github.com/vis2k/Mirror/pull/2307).
* 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.
* **Breaking**: Renamed `IMessageBase` to `NetworkMessage`, see [Pull Request 2317](https://github.com/vis2k/Mirror/pull/2317).
* **Removed**: SyncEvents, see [Pull Request 2178](https://github.com/vis2k/Mirror/pull/2178).
* **Removed**: Removing manual invoke for Cmd and RPC, see [Pull Request 2223](https://github.com/vis2k/Mirror/pull/2223).
* **Removed**: Removed Serialize/Deserialize in messages, see [Pull Request 2317](https://github.com/vis2k/Mirror/pull/2317).
* **Removed**: Removing auto initialize for SyncLists/SyncSet/SyncDictionary, see [Pull Request 2330](https://github.com/vis2k/Mirror/pull/2330).
* **Removed**: Replacing [Ninja.WebSockets](https://github.com/MirrorNetworking/NinjaWebSocketsTransport) with [SimpleWebTransport](https://github.com/MirrorNetworking/SimpleWebTransport).

## [v17.3.0](https://github.com/MirrorNetworking/Mirror/releases/tag/v17.3.0) -- 2020-Sep-04 <a href="#version-1730----2020-sep-04" id="version-1730----2020-sep-04"></a>

* 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](https://mirror-networking.com/docs/Articles/Components/NetworkLerpRigidbody.html) 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.

## [v16.9.0](https://github.com/MirrorNetworking/Mirror/releases/tag/v16.9.0) -- 2020-Aug-01 <a href="#version-1690----2020-aug-01" id="version-1690----2020-aug-01"></a>

* Added: [NetworkHeadlessLogger](https://mirror-networking.com/docs/Articles/Components/NetworkHeadlessLogger.html) log handler that sets console color.
* Added: New Mirror List Server, see [Cloud folder](https://github.com/vis2k/Mirror/tree/master/Assets/Mirror/Cloud).
* Added: Experimental [NetworkRigidbody](https://mirror-networking.com/docs/Articles/Components/NetworkRigidbody.html) 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.

## [v16.1.1](https://github.com/MirrorNetworking/Mirror/releases/tag/v16.1.1) -- 2020-Jun-13 <a href="#version-1611----2020-jun-13" id="version-1611----2020-jun-13"></a>

* 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](https://mirror-networking.com/docs/Articles/Components/NetworkPingDisplay.html) 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: 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.
* **Breaking:** Websockets Transport now requires full path to PFX Certificate file.
* **Removed**: Discord Transport

## [v13.0.1](https://github.com/MirrorNetworking/Mirror/releases/tag/v13.0.1) -- 2020-May-06 <a href="#version-1301----2020-may-06" id="version-1301----2020-may-06"></a>

* Added: [Multiple Concurrent Additive Scenes Example](https://mirror-networking.com/docs/Articles/Examples/MultipleAdditiveScenes/index.html).
* Added: [Network Match Checker](https://mirror-networking.com/docs/Articles/Components/NetworkMatchChecker.html) component. Use this component to create many concurrent isolated matches within a single game server.
* Added: [SyncLists](https://mirror-networking.com/docs/Articles/Guides/Sync/SyncLists.html) 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`.
* **Breaking:** RemovePlayerMessage has been removed as a potential security risk. Use `NetworkServer.RemovePlayerForConnection` instead.
* **Breaking:** Network Behaviour: `OnRebuildObservers`, `OnCheckObserver`, and `OnSetHostVisibility` were moved to a separate class called `NetworkVisibility`.

## [v11.4.2](https://github.com/MirrorNetworking/Mirror/releases/tag/v11.4.2) - 2020-Apr-03 <a href="#version-1142---2020-apr-03" id="version-1142---2020-apr-03"></a>

* 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.
* **Removed:** Many obsolete methods and properties. Use [version 10](https://github.com/vis2k/Mirror/releases/tag/v10.4.7) first if upgrading from UNet or older Mirror. See [Deprecations](https://mirror-networking.com/docs/Articles/General/Deprecations.html) for complete list.

## [v10.4.7](https://github.com/MirrorNetworking/Mirror/releases/tag/v10.4.7) - 2020-Mar-03 <a href="#version-1047---2020-mar-03" id="version-1047---2020-mar-03"></a>

* 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.

## [v9.0.2](https://github.com/MirrorNetworking/Mirror/releases/tag/v9.0.2) - 2020-Feb-04 <a href="#version-902---2020-feb-04" id="version-902---2020-feb-04"></a>

* 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](https://mirror-networking.com/docs/Articles/General/ScriptTemplates.html) -- See the new Mirror section in the Assets > Create menu.
* Added: [Network Discovery](https://mirror-networking.com/docs/Articles/Components/NetworkDiscovery.html) has been reimplemented including an example and script template -- thanks to all those who contributed!
* Added: [Network Scene Checker Component](https://mirror-networking.com/docs/Articles/Components/NetworkSceneChecker.html).
* 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.
* **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.

## [v6.7.7](https://github.com/MirrorNetworking/Mirror/releases/tag/v6.7.7) - 2020-Jan-01 <a href="#version-677---2020-jan-01" id="version-677---2020-jan-01"></a>

* Added: [Script Templates](https://mirror-networking.com/docs/Articles/General/ScriptTemplates.html) -- 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.
* **Breaking:** Network Transform now defaults to server authority and has a Client Authority checkbox.


---

# Agent Instructions: Querying This Documentation

If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter:

```
GET https://mirror-networking.gitbook.io/docs/manual/general/changelog/2020-change-log.md?ask=<question>
```

The question should be specific, self-contained, and written in natural language.
The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
