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.
RemoveClientAuthority now send this message instead of a
SpawnMessage, so transform data is no longer reset to server values, so no more snap-back of moving objects.
SyncDictionary can now be declared and initialized from an existing List.
Fixed: Stopping Discovery no longer causes a crash.
Fixed: Additive Scenes example had misplaced scene objects.
NetworkManager.ServerChangeScene now aborts if scene change already in progress.
hasAuthority is now properly cleared on client when unspawning scene objects.
Fixed: Match Interest Management now correctly handles networked objects without
NetworkMatch components, and no longer throws Key not found exception in certain cases.
NetworkLoop static class is now public.
NetworkTransformV2 default values updated.
interpolateScale also defaults to
protected instead of
Changed: Examples using
NetworkTransformV2 now using default values.
NetworkManager Script Template.
Changed: Tanks example has health bars now.
SyncObject.Flush - Use
NetworkBehaviour.getSyncVarHookGuard - Use
NetworkBehaviour.setSyncVarHookGuard - Use
NetworkBehaviour.SetDirtyBit - Use
NetworkServer.SendToReady - Use
Removed: Various obsolete methods that were at least 3 months old.
Removed: Fallback transport -- no longer included or supported.
Added: Tanks example now has
GUIConsole for easier debugging.
UnpackAndInvoke now throws error and disconnects in case of missing handlers.
NetworkClient now detects ever-growing batches.
Fixed: Weaver now uses
ILPostProcessing in Unity 2020+.
Fixed: Movement delay in
NetworkTransformBase.OnDrawGizmos now only runs in play mode.
Fixed: Added missing
using to Network Manager template.
OnGUI calls are now wrapped in
#if UNITY_EDITOR || DEVELOPMENT_BUILD.
NetworkLoop now exposed via Action events.
NetworkIdentity.spawned has been split into
Removed: Network Observer template.
Changed: Multiple Matches example now uses Match Interest Management.
Changed: Multiple Additive Scenes example now uses Scene Interest Management.
Added: Scene Interest Management. Put this on Network Manager and remove all Network Scene Checker components.
Added: Match Interest Management. Put this on Network Manager and replace Network Match Checker with new Network Match component.
Added: Interest Management now has
Added: Network Transform V2 with Snapshot Interpolation.
Added: Network Transport exception events that transports can raise to Network Manager's
OnClientError overrides. Transports still need to implement their part.
ZigZag VarInt added back to Compression module.
Fixed: Network Discovery HUD now calls
StopDiscovery when stopping server/host/client.
NetworkTime.lastPingTime is now reset properly.
Fixed: KCP updated to version 1.12.
NetworkBehaviour dirty check uses double time.
NetworkTime.UpdateClient uses double precision time for accuracy over days/weeks.
NetworkAnimator uses double precision time for accuracy over days/weeks
Fixed: Quaternion Compression would produce wrong result for certain values.
Fixed: Added missing
[Command] attribute to
DestroyObject is now called when cleaning up scene identities too. Sends unspawn messages and calls
hasAuthority when destroying and call
Changed: Distance Interest Management now has custom range component, replacing Network Proximity Checker.
Changed: Per-scene interest management replaces Network Scene Checker.
Changed: Network Match component separated from Network Match Checker.
Changed: Match Interest Management replaces Network Match Checker.
NetworkManager.isNetworkActive is now a readonly bool.
NetworkManager.ConfigureServerFrameRate renamed to
Added: Timestamp-based batching. Batching is always on now and is bidirectional.
OnDisconnected events now public so custom Network Managers can hook into them.
Shutdown now correctly clears
OnDisconnected event handlers.
Fixed: Scene loading with batching works now.
Fixed: KCP 1.11 significantly reduced garbage allocations.
Fixed: Fallback Transport didn't propagate Early/Late Update.
OnClientDisconnect wasn't being called for host client.
Fixed: Interest Management V2 now allows
Fixed: Serialization precision over days using frame count instead of single precision time.
Fixed: Added null check and error logging when
networkBehaviours array is null.
Fixed: Force calling
NetworkIdentity.Awake when parent is inactive.
OnClientChangeScene was not firing for host client.
Fixed: Avoid NRE in
Fixed: Null handling in
FinishLoadScene should not be called when
customHandling is true (Additive Scenes).
Fixed: Prevent assetId from being set to an empty string.
clientAuthority is now public in
Changed: Transports are no longer paused (disabled) during scene loading. Message processor handles this correctly now, so transports can be simplified.
ServerAuthFailed bool to Basic Authenticator.
Added: Discovery HUD now has a Stop Button.
Fixed: KCP updated to version 1.10.
Fixed: Telepathy updated to version 1.8.
NetworkIdentity default script execution order set to -1.
Fixed: Discovery now properly shuts down in
Fixed: Discovery now stops discovering when client is connected to game server.
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.
NetworkServer.OnDisconnect now calls
NetworkManager doesn't handle it.
NetworkClient.Disconnect now checks for null connection and that it's not called twice.
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.
NetworkConnection parameter removed from Network Authenticator's Client messages.
MessagePacking GetId<T> return value changed to
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.
Added: Network Discovery now has a bool to disable automatic active discovery.
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
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
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
NetworkIdentity.Reset now resets
isLocalPlayer after the
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
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
ClientScene will be fully deprecated and removed in a later version.
NetworkClient.RegisterHandler overload that included a
NetworkConnection is now obsolete and will be removed in a later version. Handlers can use
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: Compiler symbols culled to Mirror 17 and later versions.
NetworkIdentity now has
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
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
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.
NetworkServer.SpawnObserversForConnection refactored to support all visibility cases (
Default) and all systems (legacy / new / default).
NullReferenceException when called in
OnApplicationQuit or from tests.
NetworkServer.Update: inactive connection check moved into the main connections
foreach loop. Eliminates a
NetworkServer.Update: separate connections update loop moved into the main loop. Now there is only one connections loop.
NetworkManagerHUD.showGUI is now obsolete and will be removed in a later version.
SendToClientOfPlayer is now obsolete and will be removed in a later version.
LogFactory and logging asset feature removed.
Changed: Breaking: Command
ignoreAuthority parameter renamed to
requiresAuthority, default true.
excludeOwner parameter renamed to
includeOwner, default true.
ClientScene.spawnableObjects is no longer public.
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.
NetworkClient don't use Connect/Disconnect messages any more. Connect/Disconnect events are raised by the transport instead.
OnClientError removed since no transport ever implemented them.
Changed: Breaking Removed
NetworkConnection.InvokeHandler as no longer needed.
Added: KCP Transport updated to version 1.7.
Added: Batching support for server messages - See Network Manager to enable.
Added: Network Owner Checker.
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
NetworkServer.OnConnected allows for
connectionId < 0 now.
oldReadyState parameter name.
Changed: Ping/Pong messages now use unreliable channel if available from transports.
Changed: Breaking Read / Write Blittable has been removed.
Added: Network Reader/Writer now does
WriteBlittable for better performance.
Added: KCP Transport updated to version 1.4.
Added: Network Authenticator now has
Added: Network Transform now applies compression to rotations.
SyncVars now support using types that inherit from
SimpleWebTransport now has option for TLS outside the transport.
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..
StartClient more than once is now prevented..
Fixed: NRE when no host player in
Fixed: player collisions in
Fixed: Weaver now properly generates readers and writers for structs in other assemblies, e.g.
NetworkServer.maxConnections is now public.
Fixed: Skip reset of object that's being destroyed.
NetworkRoomManager is now public.
NetworkTransform now correctly uses
ArraySegment in Commands.
Fixed: Weaver method lookup conflict with Unity 2020.2.
Fixed: Memory allocation vulnerability in
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.
Changed: Breaking Force
NetworkMessage to use structs in all cases - classes no longer supported.
Changed: Breaking Removed
WritePacked functions - Use Read and Write variants instead.
Changed: Breaking LLAPI has been removed.
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.
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.
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
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.
Added: NetworkAnimator now syncs Layer Weight.
Added: Lists can now be sent in Command/Rpc/Message/etc.
[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.
isServer will now keep its value after calling
[Client] error message now correctly logs the name of the method.
Fixed: Messages can now be nested within other Message types.
[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.
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
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.
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
Added: Network Room Manager now has a virtual
OnRoomServerPlayersNotReady that fires on server from
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
Fixed: Network Room Player
OnClientEnterRoom now correctly only fires on clients.
RegisterClientMessages was being incorrectly invoked for every scene change.
Fixed: Network Behaviour
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
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
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
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.
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.
RegisterClientMessages is no longer invoked twice on the client.
Fixed: Network Behaviour
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
Changed: Breaking RemovePlayerMessage has been removed as a potential security risk. Use
Changed: Breaking Network Behaviour:
OnSetHostVisibility were moved to a separate class called
Added: SyncVar hooks can be virtual now, and overridden in a derived class.
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.
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
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.
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.
StopHost correctly raises
OnServerDisconnect in Network Manager, and correctly unwinds before shutting down the server.
isServer is no longer incorrectly false on server in Network Identity's
Changed: Network Manager
onlineScene store full paths now, so use SceneManager.GetActiveScene().path instead.
Changed: Network Manager HUD now calls
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.
Added: Weaver will now block play mode and builds if there are weaver errors and show them in the console again.
PooledNetworkWriter, both Disposable.
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
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.
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.
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
Fixed: Additive scene operations no longer incorrectly lead to extraneous AddPlayer messages from clients.
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.
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.
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.
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).
NetworkServer.SpawnWithClientAuthority is deprecated in favor of overloads of
Added: SyncList and SyncSet custom Equality Comparer support.
Added: Custom serializers may be implemented for any type in Cmd's and Rpc's.
Added: Fallback Transport.
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.
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
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.
NetworkIdentity.RemoveAuthorityForConnection is now easier to use: no need to supply the current "owner" anymore.
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.
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.
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.
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).
Changed: NetworkReader now uses ArraySegment to minimize allocations.
Fixed: Reverted two internal refactor commits that had unintended consequences.
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).
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
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.
Added: Semantic Versioning (which is why we jumped from 1.6 to 3.4.9).
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.
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
NetworkServer.Shutdown now resets
netId to zero.
Fixed: Observers are now properly rebuilt when client joins and
OnCheckObserver is overridden.
Fixed: NetworkProximityChecker: On rare occasion, player could be excluded from observers rebuild.
OnClientReady works now.
Fixed: NetworkLobbyPlayer Remove button not showing for P1 when Server Only.
lobbySlots lists are now public for inheritors.
Fixed: Offline scene switching now works via
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.
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
Please refer to the code sample here to see how to update your code.
Changed: Network Manager -- Headless Auto-Start moved to
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.
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
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).
NetworkConnection.hostId (holdovers from LLAPI).
NetworkConnection.isConnected (Network Connection is always connected).
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.
NetworkIdentity parameter now.
Changed: Network Transform reimplemented -- physics removed, code simplified.
NetworkClient.hostPort (port is handled at Transport level).