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

v30.2.2 -- 2020-Dec-17

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

  • 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 -- 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 types 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: Use SyncLists/SyncSet/SyncDictionary directly, e.g. SyncList, see Pull Request 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.

  • Removed: SyncEvents, see Pull Request 2178.

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

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

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

  • Removed: Replacing Ninja.WebSockets with SimpleWebTransport.

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

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

v16.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: 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 -- 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.

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

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

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

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

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

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

Last updated