2022 Change Log
Last updated
Last updated
Added: NetworkClient.activeHost
added as static.
Added: Sync* collections now support Client-to-Server Sync Direction.
Added: Network Manager HUD now has a StopClient button for Host mode.
This leaves the server running in Server Only mode and removes the host client.
Fixed: KCP updated to version 1.26.
Fixed: NetworkManager.OnStopClient
now checks if client was started.
Fixed: NetworkManager.OnClientSceneChanged
now checks for authenticated client before calling NetworkClient.Ready
.
Fixed: NetworkManager.mode
is now set to offline
before calling OnStopClient to prevent a recursion.
Fixed: SimpleWebSocket
logging improved.
Fixed: NetworkManager
template now resets singleton in Awake override.
Fixed: NetworkDiscovery
template now correctly has the messages defined as structs.
Fixed: NetworkTransform / NetworkTransformReliable now check for null connectionToClient in UpdateServer.
This cures the NRE's when player object is abandoned by scene changes.
Fixed: NetworkTransformChild
AddComponentMenu
attribute reset since it's obsolete.
Fixed: NetworkRigidbody2D
now has HelpURL
attribute.
Fixed: NetworkServer
logs now have game object references for easier debugging.
Fixed: FPS script had wrong namespace.
Fixed: Network Authenticators now use NetworkClient.Send
so we don't bypass a null check.
Fixed: NetworkClient.owned
is now correctly cleaned up in OnDestroy.
Fixed: NetworkIdentity.spawned
is now correctly cleaned up in OnDestroy.
Fixed: SpawnObject
was missing a check for identities already spawned.
This cleans up the warnings in Additive Scenes implementations.
Changed: NetworkServer.localConnection
is now LocalConnectionToClient
type.
Changed: NetworkManager's OnStartServer and OnStartHost are now called later in the startup sequence.
Changed: NetworkRoomManager
no longer does max connection checks...NetworkServer
already does that sooner.
Obsolete: NetworkServer.localClientActive
renamed to activeHost
.
BREAKING: NetworkTransform
and NetworkTransformReliable
now inherit from a new NetworkTransformBase
.
Added: Support for Unity 2019 LTS was restored
No promises as how long this will last. Unity no longer supports it, and code debt adds up.
Fixed: KCP updated to version 1.23.
Fixed: Examples have been updated to work with this release.
Fixed: Interest Management now uses TryGetValue
in several places.
Fixed: Telepathy no longer calls OnDisconnected twice incorrectly.
Fixed: Transport handlers are cleared when NetworkClient restarts.
Fixed: Several errors with Multiplex Transport were fixed.
Fixed: Weaver now supports inheritance for NetworkConnectionParameter
.
Fixed: Client-To-Server SyncVars weren't being sent to clients.
Fixed: Logging in transports was improved.
Changed: NetworkManager.OnClientDisconnect is now an empty virtual method.
Script Template also updated.
Breaking: NetworkTransform
Reliable and Unreliable
Unreliable version replaces the old NetworkTransform
.
SyncInterval
is now managed by NetworkServer
sendRate
(set in Network Manager).
NetworkTransformChild
removed...use Network Transform and set target to a child.
clientAuthority
obsoleted in favor of syncDirection
impemented in previous release.
Added: CCU Test example.
Added: NetworkStatistics
component.
Fixed: NetworkRigidbody
now uses double time to keep precision over long runtime.
Fixed: NetworkLerpRigidbody
now uses double time to keep precision over long runtime.
Fixed: NetworkWriter.WriteString()
now ensures capacity before writing.
Changed: Tools folder created and some rearrangement was done.
Added: Snapshot Interpolation example.
Added: NetworkPingDisplay
now has configurable size.
Added: NetworkManager.GetStartPosition
is now virtual so it can be overridden.
Added: Network Manager now has an Auto Connect option for headless clients / CCU testing.
Added: NetworkConnection
now maintains owned
HashSet on both server and client.
Added: NetworkBehaviour
now has SyncDirection
to make client authority components easier.
Note: This feature will continue to evolve and may change in future releases.
Fixed: Benchmark, Chat and Tanks examples were improved.
Fixed: Network Manager script template was updated.
Fixed: NetworkBehaviour
logging was improved.
Fixed: SimpleWebTransport
header lookup is now case-insensitive.
Fixed: Spatial Hash Interest Mgmt. now calculates visibility range correctly.
Fixed: Read/Write GUID no longer allocates garbage.
Fixed: Telepathy ClientDisconnect
now calls Disconnect
event correctly.
Fixed NetworkServer.Spawn
now checks and warns for duplicates.
Fixed: NetworkIdentity
now only checks Application.isPlaying
in Editor context.
Fixed: Network Statistics properties made public so other components can access them.
Fixed: InterestManagement.Awake
is now protected virtual
so it can be overridden.
Fixed: NetworkIdentity
serialization of componentIndex
reduced to ~1 bit instead of 1 byte.
Fixed: NetworkBehaviour
serialization of headers reduced to 1 byte instead of 4 bytes.
Fixed: NetworkClient
now resets time interpolation whenever host connects or reconnects.
Changed: NetworkBehaviour.ComponentIndex
reduced from int
to byte
.
Changed: Snapshot Interpolation refactored to version 2.
Changed: Latency Simulator latencySpike
renamed to jitter
.
Changed: Snapshot Interpolation split into time + value interpolation.
Breaking: Transports folder was moved up and various transports moved into that folder.
Breaking: Runtime folder renamed to Core.
Breaking: NetworkIdentity
/ NetworkBehaviour
OnSerialize
no longer returns a bool
.
Breaking: NetworkBehaviour.SerializeSyncVars
no longer returns a bool
.
Breaking: assetId
in SpawnMessage
changed from Guid
to uint
.
Breaking: OnError(Exception)
is now OnError(TransportError, string)
where TransportError
is an enum and string is free text provided by transports.
Breaking: NTSnapshot
renamed to TransformSnapshot
for clarity.
Breaking: NetworkTime
was rewritten to use NetworkClient
's snapshot interpolation timeline.
Obsolete: NetworkManager.serverTickRate
renamed to sendRate
.
Obsolete: NetworkManager.serverTickinterval
was moved to NetworkServer
.
Obsolete: NetworkTransport.activeTransport
renamed to active
.
Obsolete: NetworkBehavior.hasAuthority
renamed to isOwned for clarity.
Obsolete: NetworkConnection.clientOwnedObjects
renamed to owned
for clarity.
Fixed: KCP updated to version 1.19.
Fixed: Team Interest Mgmt OnDestroyed
logic was improved.
Fixed: Comments in various Network Authenticators were updated.
Fixed: Benchmark example was improved so movement revolves around origin.
Fixed: Cmd/Rpc bandwidth reduced from 4 bytes to 2.
Fixed: Texture2D
now includes dimensions and reads Color32
correctly and supports nulls.
Fixed: NetworkServer.SendToObservers
now correctly uses NetworkConnectionToClient
.
Fixed: NetworkClient
now checks and warns for duplicate scene ID.
Changed: NetworkClient
/ NetworkServer
OnError
renamed to OnTransportError
for clarity.
Breaking: Obsoletes were removed.
NOTE: This was to be the last Mirror release to support Unity 2019 LTS, as it has reached end of life by Unity. Support was restored in Mirror 70.0.0 above.
Added: Queue.TryDequeue
extension added for Unity 2019 & 2020 compatibility.
Fixed: NetworkClient.ChangeOwner
now uses isLocalPlayer
flag to check if OnStopLocalPlayer
should be called.
Fixed: ReadNetworkBehavior
now correctly reads data on client even if the associate NetworkIdentity
is missing from the client.
Fixed: NetworkClient.SpawnPrefab
now correctly looks for custom spawn handlers before using registered prefabs list instead of after.
Fixed: NetworkWriterExtensions
now uses WriteArray
instead of Write
.
Fixed: Attempting to serialize prefabs and not-spawned game objects throws a more obvious exception.
Fixed: DestroyAllClientObjects
now also resets after unspawn handler called.
Fixed: Calling StopClient
in Host mode no longer resets nextNetId
.
Fixed: Calling StopClient
in Host mode no longer destroys objects on clients.
Fixed: It should now be possible to call StopClient in Host mode to leave the server in a running "Server Only" state, keeping all clients connected and running normally.
Fixed: AggressiveInlining
attribute added in many places to improve performance.
Changed: NetworkWriter
/ NetworkReader
API simplified.
Changed: PooledNetworkReader
/ PooledNetworkWriter
renamed to NetworkReaderPooled
/ NetworkWriterPooled
.
Changed: Transport base class moved to Runtime folder, Transport folder renamed to Transports
Added: Command / ClientRpc / TargetRpc can now be overloaded.
Added: Network Behaviour now has OnStopLocalPlayer
virtual method, invoked right before OnStopClient
. Script Template has also been updated.
Added: Network Manager Template overrides singleton
to eliminate the need to cast Network Manager's singleton to derived class type.
Added: Support for generic NetworkBehaviour<T>
subclasses.
Fixed: Network Reader/Writer uses blittable reads/writes where possible.
Fixed: Android compatibility for Read/Write blittable.
Fixed: Android Multicast Discovery.
Fixed: NetworkTransformChild
now correctly syncs initial state when spawned.
Fixed: Latency Simulation now uses Time.unscaledTime
.
Fixed: SimpleWebsocketTransport
has been updated to fix a number of bugs, including compatibility with Unity 2021.x, and handling of messages larger than 64K.
Changed: A bunch of virtual methods now take NetworkConnectionToClient
instead of NetworkConnection
.
Changed: RemoteCallHelper
renamed to RemoteProcedureCalls
.
Changed: CmdDelegate
renamed to RemoteCallDelegate
.
Changed: MirrorInvokeType
renamed to RemoteCallType
.
Changed: NetworkManager.clientLoadedScene
is now protected
.
Obsolete: NetworkTransform
now has overloads for CmdTeleport
/ RpcTeleport
with Quaternion rotation, deprecating separate CmdTeleportAndRotate
/ RpcTeleportAndRotate
methods, made possible by implementing Command / ClientRpc overloads mentioned above.
Obsolete: Experimental Network Transform components. Use the regular ones instead.
Fixed: KCP updated to version 1.17.
Fixed: Use Read/Write blittable for performance improvement.
Removed: Obsolete Network Visibility.
Added: Rotation parameter added to NetworkTransform
CmdTeleport
/ RpcTeleport
.
Added: Support for a bunch more nullable types.
Fixed: Fast Enter Play mode without Reload Domain now supported by resetting all statics.
Fixed: Network Transform now uses less bandwidth by only syncing changes based on sensitivity.
Fixed: KCP updated to version 1.15.
Fixed: ReplacePlayerForConnection
now correctly updates isLocalPlayer
flag.
Fixed: OnStopClient
no longer called twice in certain cases.
Fixed: NetworkServer
now checks for active
before invoking Interest Management updates.
Fixed: Objects spawned with a client owner no longer lose ownership when respawned via interest management.
Fixed: Delayed Disconnect in Basic Authenticator now uses HashSet
of connections pending disconnect.
Fixed: NetworkTransform
now checks for ready client before sending updates to server.
Fixed: OnStartLocalPlayer
now correctly called again after RemovePlayerForConnection
followed by AddPlayerForConnection
with the same player object.
Changed: NetworkMatch
moved to InterestManagement/Match
folder.
Changed: Internal code for SyncVar
. Resetting non-default inspector values may be required.
Changed: Tanks example updated.
Changed: Chat example updated...overhauled really.
Changed: Network Reader / Writer now use blittable serialization where possible (4-6x performance improvement).
Breaking: Removed obsolete ConfigureServerFrameRate
Use ConfigureHeadlessFrameRate
instead.
Breaking: Removed obsolete PersistNetworkManagerToOfflineScene
.
Breaking: NetworkAuthenticator
OnClientAuthenticated
event no longer needs a NetworkConnection parameter.
Obsolete: OnClient* virtual methods in Network Manager no longer take a NetworkConnection
parameter.
Obsolete: Network Room Manager client overrides no longer have NetworkConnection
parameter. Use NetworkClient.connection
in your overrides instead.
Added: component, showing messages & packets sent & received per second.
Added: and Network Team components.
Added: .
Added: Custom Interest Management .
Added: Custom Network Transform .
Added: example.
Added: Texture2D and Sprite are now supported .