2020 Change Log
Last updated
Last updated
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.
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.
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.
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.
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: 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.
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.
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.
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.
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.
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
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
.
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.
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.
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: 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.
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.
Added: .
Added: .
Changed: Script Templates are now available as a separate package .
Changed: Telepathy Transport is now obsolete - Use instead.
Added: New websockets transport: .
Changed: Use SyncLists/SyncSet/SyncDictionary directly, e.g. SyncList
, see .
Breaking: Renamed IMessageBase
to NetworkMessage
, see .
Removed: SyncEvents, see .
Removed: Removing manual invoke for Cmd and RPC, see .
Removed: Removed Serialize/Deserialize in messages, see .
Removed: Removing auto initialize for SyncLists/SyncSet/SyncDictionary, see .
Removed: Replacing with .
Added: Experimental component that syncs position and velocity and applies them using Lerp.
Added: log handler that sets console color.
Added: New Mirror List Server, see .
Added: Experimental component that syncs velocity and other rigidbody settings.
Added: component
Added: .
Added: component. Use this component to create many concurrent isolated matches within a single game server.
Added: now have Find and FindAll functions.
Removed: Many obsolete methods and properties. Use first if upgrading from UNet or older Mirror. See for complete list.
Added: Network Observer added to -- See the new Mirror section in the Assets > Create menu.
Added: has been reimplemented including an example and script template -- thanks to all those who contributed!
Added: .
Added: -- See the new Mirror section in the Assets > Create menu.