{% 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 -- 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
andOnStopClient
overrides. - Added: Network Transform now applies compression to rotations.
- Added:
SyncVars
now support using types that inherit fromNetworkBehaviour
. - 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
inMultipleAdditiveScenes
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
inNetworkRoomManager
is now public. - Fixed:
NetworkTransform
now correctly usesArraySegment
in Commands. - Fixed: Added
OnStopServer
toNetworkSceneChecker
andNetworkMatchChecker
. - 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: KCP Transport.
- Added: Libuv2k Transport.
- 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
toNetworkMessage
, 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 callingNetworkServer.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 optionalNetworkConnectionToClient 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
, andRemoveAll
. - Added: Network Room Manager now has a virtual
OnRoomServerPlayersNotReady
that fires on server fromCheckReadyToBegin
. - 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
andSyncInterval
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: Multiple Concurrent Additive Scenes Example.
- 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
andOnStopClient
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 aSendToReady
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
andSyncInterval
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 toOnStopClient
. - Breaking: RemovePlayerMessage has been removed as a potential security risk. Use
NetworkServer.RemovePlayerForConnection
instead. - Breaking: Network Behaviour:
OnRebuildObservers
,OnCheckObserver
, andOnSetHostVisibility
were moved to a separate class calledNetworkVisibility
.
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 nowprotected
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 raisesOnServerDisconnect
in Network Manager, and correctly unwinds before shutting down the server. - Fixed:
isServer
is no longer incorrectly false on server in Network Identity'sOnDestroy
. - Changed: Network Manager
offlineScene
andonlineScene
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
andPooledNetworkWriter
, 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: Network Scene Checker Component.
- 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 ofnew 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 ofnew 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 toGetSceneIdentity
(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.