Mirror
Search…
⌃K

2020 ChangeLog

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.

Version 30.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.

Version 26.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.

Version 23.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.

Version 17.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.

Version 16.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.

Version 16.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

Version 13.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.

Version 11.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.

Version 10.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.

Version 9.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.

Version 6.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.