Mirror/doc/General/ChangeLog.md

229 lines
15 KiB
Markdown
Raw Normal View History

# Change Log
2019-11-06 04:43:07 +00:00
## Version 5.x.x - In progress
- Added: SyncMode selector now works for components on any scene objects owned by a client in addition to the player object, e.g. pets
2019-11-18 23:53:25 +00:00
- Added: Script Templates -- See the new Mirror section in the Assets > Create menu.
2019-11-19 01:57:03 +00:00
- Fixed: isClient and isServer are now true for networked objects in Start and OnStartClient / OnStartServer, respectively
2019-11-19 03:32:08 +00:00
- Fixed: hasAuthority is now set before OnStartClient is invoked
2019-11-06 04:43:07 +00:00
- 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.
2019-11-06 17:29:36 +00:00
- Removed: NetworkServer.SpawnWithClientAuthority is deprecated in favor of overloads of NetworkServer.Spawn
2019-11-06 04:43:07 +00:00
2019-11-03 15:52:58 +00:00
## Version 5.0.2 - 2019-Nov-03
- Added: SyncList and SyncSet custom Equality Comparer support
- Added: Custom serializers may be implemented for any type in Cmd's and Rpc's
2019-11-03 23:02:47 +00:00
- Added: [Fallback Transport](../Transports)
2019-11-03 15:52:58 +00:00
- Fixed: SyncVar hooks are no longer called in Host if no change
- Fixed: NetworkIdentity 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
2019-10-03 13:05:16 +00:00
## Version 4.0.7 - 2019-Oct-03
2019-09-18 00:26:06 +00:00
- Added: [Authentication](../Guides/Authentication.md) support to authenticate clients in the Connect phase
2019-10-01 15:10:24 +00:00
- Added: Profiler events. These events can be subscribed to by the [Network Profiler](../Guides/Profiler.md) 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
2019-09-18 00:26:06 +00:00
- 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
2019-09-26 01:53:38 +00:00
- Fixed: In certain cases, weaver wouldn't weave some external assemblies
- Fixed: NetworkAnimator now does a full sync for new clients
2019-10-01 15:10:24 +00:00
- Fixed: NetworkBehaviour 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 `ServerGetClientAddress`
2019-10-03 13:05:16 +00:00
- Fixed: WebGL build now works with ArraySegment
2019-10-01 15:10:24 +00:00
- Changed: Mirror is now free of garbage memory allocation on the sending side.
- Some transports may still have a little garbage allocation yet.
2019-10-01 17:08:23 +00:00
- Changed: Deprecated the AddPlayerMessage extraMessage byte\[\] in favor of an easier approach to [Custom Players](../Guides/GameObjects/SpawnPlayerCustom.md)
2019-10-01 15:10:24 +00:00
- This is a breaking change: The virtual method OnServerAddPlayer loses the AddPlayerMessage parameter.
2019-09-26 01:53:38 +00:00
- Changed: NetworkIdentity.RemoveAuthorityForConnection is now easier to use: no need to supply the current "owner" anymore.
2019-09-18 13:54:17 +00:00
- Changed: Renamed `NetworkConnection.playerController` to `identity` ... see [Deprecations](Deprecations.md) for details.
2019-09-18 00:26:06 +00:00
- Changed: Lobby system renamed to Room to better align the name for what it is and make way for a future Lobby framework
2019-09-05 03:43:06 +00:00
## Version 3.17.4 - 2019-Sep-04
- Added: Custom Network Readers & Writers via extension methods
- Added: Network Sync Mode selector on components to sync to observers (default) or just the owner
2019-08-12 17:31:04 +00:00
- Added: SyncVars now support structs and enums in other assemblies
2019-08-11 07:07:33 +00:00
- Added: Support for reading and writing array segments
- Added: NetworkAnimator now has layers support
- Added: New virtual method OnServerChangeScene to NetworkManager
2019-09-05 03:44:36 +00:00
- Added: XML summary comments for intellisense and future generated class docs
2019-08-11 07:07:33 +00:00
- Updated Examples and Documentation
2019-08-12 17:35:32 +00:00
- Fixed: SceneID was not set to 0 for prefab variants
2019-08-12 17:36:40 +00:00
- Fixed: Observers were not properly rebuilt on scene changes
2019-08-11 07:07:33 +00:00
- 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
2019-09-05 03:43:06 +00:00
- Fixed: NetworkManager 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 unncessarily in certain cases, e.g. SceneMessages
- Changed: Documentation moved to website and API generated docs implemented
2019-08-11 07:07:33 +00:00
- Changed: AddPlayerForConnection handler is now internal to keep safety checks intact
- Changed: A bunch of messages converted to value types for performance
2019-07-10 15:27:21 +00:00
## Version 3.11.6 - 2019-Jul-10
- 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
2019-06-19 15:07:45 +00:00
## Version 3.10.10 - 2019-Jun-19
2019-05-06 14:59:27 +00:00
- Added: Scene Message now supports params for SceneMode (Normal / Additive) and PhysicsMode (2D / 3D)
2019-06-19 14:04:07 +00:00
- Added: ClientScene.Send now has an optional ChannelId parameter
- Added: ASMDEF to Examples folder
- Added: Support for sending and receiving ArraySegment\<byte\>
- Added: IReadOnlyList\<T\> in SyncLists
- Fixed: NetworkManager not switching to correct scene in some cases
2019-05-06 15:01:49 +00:00
- Fixed: ListServer Ping not found in WebGL
2019-06-19 14:04:07 +00:00
- 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)
2019-05-06 14:59:27 +00:00
2019-04-28 19:39:19 +00:00
## Version 3.6.7 -- 2019-Apr-28
2019-06-19 14:04:07 +00:00
- Changed: NetworkReader now uses ArraySegment\<byte\> to minimize allocations.
2019-04-23 12:51:36 +00:00
2019-04-28 04:44:33 +00:00
## Version 3.6.6 -- 2019-Apr-24
2019-09-18 00:26:06 +00:00
- Fixed: Reverted two internal refactor commits that had unintended consequences
2019-04-28 04:44:33 +00:00
2019-04-23 12:51:36 +00:00
## Version 3.6.5 -- 2019-Apr-23
2019-04-21 01:35:01 +00:00
- Fixed: Unity 2019.1 compatibility
- Fixed: Erroneous error indicating prefabs were missing Scene ID's
2019-04-12 17:54:43 +00:00
- Fixed: OnDeserializeSafely now works without allocations
2019-04-23 13:26:19 +00:00
- Fixed: Weaver not writing symbol files, preventing breakpoints from working in Visual Studio
2019-09-18 00:26:06 +00:00
- Fixed: NetworkIdentity SceneID generation now uses RNG Crypto Service Provider
2019-04-15 00:13:07 +00:00
- Fixed: Scene lighting in Additive example
2019-04-18 14:51:06 +00:00
- 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)
2019-04-12 17:54:43 +00:00
## Version 3.5.9 -- 2019-Apr-12
2019-09-18 00:26:06 +00:00
- Fixed: NetworkManager round-robin mode using NetworkStartPosition objects now uses hierarchy sibling order
2019-04-12 17:54:43 +00:00
- 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 bandwdith reduced in SyncVars, Commands, and Rpcs
- Fixed: Placeholder files added for removed code files so updating works better
2019-09-18 00:26:06 +00:00
- Changed: NetworkManager `isHeadless` is a static property now, changed from `IsHeadless()`
2019-04-10 10:35:48 +00:00
## Version 3.5.3 -- 2019-Apr-10
2019-04-07 19:12:49 +00:00
- Fixed: Exceptions in overrides of Network Manager and other components incorrectly silenced.
2019-04-08 03:22:31 +00:00
- Fixed: Lobby system sometimes would not spawn and swap game player prefabs into the game scene
2019-04-10 10:35:48 +00:00
- Fixed: Application.targetFrameRate no longer set in host mode
- Changed: Telepathy: Split MaxMessageSize to allow setting a different value for client and server
2019-04-07 19:12:49 +00:00
2019-04-07 08:37:58 +00:00
## Version 3.4.9 -- 2019-Apr-6
- Added: Semantic Versioning (which is why we jumped from 1.6 to 3.4.9)
2019-09-21 03:34:03 +00:00
- Added: [SyncDictionary](../Guides/Sync/SyncDictionary.md)
- Added: [SyncHashSet](../Guides/Sync/SyncHashSet.md)
- Added: [SyncSortedSet](../Guides/Sync/SyncSortedSet.md)
2019-04-03 04:21:54 +00:00
- Added: SyncList and SyncDictionary support all IList and IDictionary derived types, respectively
2019-09-21 03:34:03 +00:00
- Added: Documentation for [SyncVars](../Guides/Sync/SyncVars.md)
- Added: Documentation for [SyncEvents](../Guides/Sync/SyncEvent.md)
2019-03-20 04:50:34 +00:00
- Added: NoRotation to NetworkTransform
2019-03-21 13:35:27 +00:00
- Added: Scale is now included in spawn payload along with position and rotation
2019-03-21 13:06:03 +00:00
- Added: Generic `IMessageBase` to allow struct message types
2019-03-26 16:15:53 +00:00
- Added: Weaver now supports Vector2Int and Vector3Int
2019-03-23 17:37:14 +00:00
- Added: List Server example
2019-04-02 13:28:50 +00:00
- Added: Additive Scenes example
2019-03-22 13:09:45 +00:00
- Fixed: SyncLists now work correctly for primitives and structs
2019-09-18 00:26:06 +00:00
- 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 manualy update the local property.
2019-03-19 17:22:23 +00:00
- Fixed: Host should not call Disconnect on transports
2019-03-26 16:15:53 +00:00
- Fixed: NetworkAnimimator now supports up to 64 animator parameters
- Fixed: NetworkManager `StartServer` no longer assumes scene zero is the default scene...uses `GetActiveScene` now
- Fixed: NetworkServer `Shutdown` now resets `netId` to zero
2019-03-22 13:09:45 +00:00
- Fixed: Observers are now properly rebuilt when client joins and `OnRebuildObservers` / `OnCheckObserver` is overridden
2019-04-02 13:28:50 +00:00
- Fixed: NetworkProximityChecker: On rare occasion, player could be excluded from observers rebuild
2019-03-26 16:15:53 +00:00
- Fixed: NetworkLobbyPlayer `OnClientReady` works now
2019-04-03 04:19:20 +00:00
- Fixed: NetworkLobbyPlayer Remove button not showing for P1 when Server Only
2019-03-21 13:46:41 +00:00
- Fixed: NetworkLobbyManager `pendingPlayers` and `lobbySlots` lists are now public for inheritors
2019-03-19 17:23:41 +00:00
- Fixed: Offline scene switching now works via `StopClient()`
2019-03-19 17:24:11 +00:00
- Fixed: Pong example updated
2019-04-03 02:33:10 +00:00
- Fixed: Source Weaver was deleting PDB files, preventing breakpoints and debugging from working.
2019-03-21 13:47:08 +00:00
- Changed: TargetRpc NetworkConnection paramater is now optional...the calling client's NetworkConnection is default
2019-03-19 17:22:23 +00:00
- Changed: Movement example replaced with Tank example
2019-09-18 00:26:06 +00:00
- Changed: NetworkClient functions are all static now, so the singleton is gone. Use NetworkClient directly.
2019-03-19 17:22:23 +00:00
- Changed: SyncList now supports structs directly, making SyncListSTRUCT obsolete.
- Removed: SyncListSTRUCT - Use SyncList instead.
2019-03-22 13:11:41 +00:00
- Removed: NetworkClient.ShutdownAll is obsolete -- Use NetworkClient.Shutdown instead
2019-03-19 17:22:23 +00:00
2019-03-15 04:30:34 +00:00
## Version 1.6 -- 2019-Mar-14
2019-03-13 15:11:30 +00:00
- Fixed: Websockets transport moved to Mirror.Websocket namespace
- Fixed: NetworkAnimator bandwidth abuse
- Fixed: NetworkAnimator float sync bug
- Fixed: Persistent SceneID's for Networked objects
- Changed: Documentation for [Transports](../Transports/index.md)
2019-03-13 15:11:30 +00:00
- Changed: Weaver is now full source...FINALLY!
2019-09-18 00:26:06 +00:00
- Changed: ClientScene.AddPlayer 2nd parameter is now `byte[] extraData` instead of `MessageBase extraMessage`
- Please refer to the code sample [here](../Guides/Authentication.md) to see how to update your code.
2019-03-13 15:11:30 +00:00
- Changed: NetworkManager -- Headless Auto-Start moved to `Start()` from `Awake()`
2019-09-18 00:26:06 +00:00
- Changed: Removed Message ID's for all messages - See [Network Messages](../Guides/Communications/NetworkMessages.md) 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)
2019-03-13 15:11:30 +00:00
- Removed: Documentation for Groove Transport - use Websockets Transport instead
## Version 1.5 -- 2019-Mar-01
- 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
2019-03-13 15:11:30 +00:00
- Added: NetworkLobbyManager and NetworkLobbyPlayer with example game
- Added: Configurable Server Tickrate in NetworkManager
- 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)
2019-03-02 19:56:08 +00:00
- Fixed: NetworkProximityChecker now uses OverlapSphereNonAlloc and OverlapCircleNonAlloc
- Fixed: SyncVar hook not firing when clients joined
- Fixed: NetworkManager no longer assumes it's on Scene(0) in Build Settings
- Fixed: NetworkAnimator no longer lmited to 6 variables
- Fixed: TelepathyTransport delivering messages when disabled
2019-03-13 15:11:30 +00:00
- Changed: Minimum Unity version: **2018.3.6**
- Removed: SceneAttribute.cs (merged to CustomAttributes.cs)
- Removed: NetworkClient.allClients (Use NetworkClient.singleton instead)
- Removed: NetworkServer.hostId and NetworkConnection.hostId (holdovers from LLAPI)
- Removed: NetworkConnection.isConnected (NetworkConnection is always connected)
- Removed: Transport.GetConnectionInfo (Use ServerGetClientAddress instead)
## Version 1.4 -- 2019-Feb-01
- Added: HelpURL attirbutes to components
- Added: Automatic targetFramerate for headless builds
- Added: ByteMessage to Messages class
- Fixed: Connectiing state can be cancelled properly
- Fixed: NetworkTransformBase 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
- Changed: NetworkServer.SendToClientOfPlayer uses NetworkIdentity now
- Changed: NetworkServer.SendToObservers uses NetworkIdentity parameter now
- Changed: NetworkServer.SendToReady uses NetworkIdentity now
- Changed: NetworkServer.DestroyPlayerForConnection uses NetworkIdentity.spawned now
- Changed: NetworkConnection.Dispose uses NetworkIdentity.spawned now
- Changed: NetworkReader.ReadTransform uses NetworkIdentity.spawned now
- Changed: NetworkTransform reimplemented -- physics removed, code simplified
- Removed: NetworkClient.hostPort (port is handled at Transport level)
2019-09-18 00:26:06 +00:00
- Removed: NetworkServer.FindLocalObject (Use NetworkIdentity.spawned[netId] instead)
- Removed: ClientScene.FindLocalObject (Use NetworkIdentity.spawned[netId] instead)