3.7.11
2023/07/09
- Improved server now resets excessive ping counts on clients when server is running slow.
- Fixed cross-scene reference warning when SceneIds are generated (thanks kylezimmerman)!
- Improved harmless errors while trying to remove ownership while quitting the application or play mode.
- Added defines to prevent parrelSync from auto generating on clones (thanks NonPolynomialTim)!
- Added Multipass v2. Version 2 has less garbage collection and easier to read code. Open Multipass.cs and uncomment //#define Multipass_V2 to test.
- Improved NetworkTransform configuration setting for rigidbodies.
- Fixed clientHost being disconnected when changing any transport state while another transport is already running.
- Added NetworkManager.GetPooledInstantiated overloads to include position and rotation.
- Added ObjectPool overrides to include position and rotation.
- Added ClientManager.OnConnectedClients (thanks alexey-yaremenko)!
- Fixed NetworkTransform not resetting some values when being pooled.
- Added OrderType to remote procedure call attributes.
- Added NetworkManager.TryRegisterInstance.
- Added NetworkManager.TryGetInstance.
- Improved NetworkObject.InitializeOrder is now sorted by the server. Client legacy code will be removed soon.
- Fixed custom serializers throwing null reference exception when using Write() with a type that does not have a default constructor.
- Added NetworkObject.OnHostVisibilityUpdated.
- Improved reader now warns when a client tries to parse a NetworkObject which is expected to be spawned but is not.
- Added ServerManager.RemoteClientTimeout and ServerManager.SetRemoteClientTimeout.
- Improved naming on some component fields.
- Fixed SyncVars not parsing when there were multiple inherited layers of SyncVars over different assemblies.
- Changed SyncTimer now provides remaining for Pause and Unpause during callbacks.
- Improved API on IReconcileData and IReplicateData.
- Improved harmless error on NetworkTransform when stopping the server while pooling was enabled for the NetworkObject.
- Fixed RPC hash collision when both a base and child class had a RPC but were in different assemblies.
- Improved debug for RPCs registration.
- Improved timing calculations for clients with low frame rates.
- Changed TimeManager.TimingInterval removed; value is now hard-coded.
- Added InstanceFinder.HasInstance.
- Improved resolved several Unity obsolete warnings.
- Improved tick alignment during very poor conditions.
- Fixed server allocations when using PingDisplay or BandwidthDisplay.
- Improved CLient and Server attributes no longer block when IsNetworked is false.
- Improved GameObjects which have NetworkBehaviours but not a NetworkObject can now be serialized.
- Improved trying to serialize a GameObject that cannot be networked now creates an error.
3.7.4
2023/05/30
- Improved allocations on Writer.
- Added NetworkObject.SetParent/UnsetParent. This will validate parent objects to ensure they are suitable to be networked.
- Added PredictionAttribute.AllowServerControl to let server run inputs when there is no owner.
- Improved timing calculations for prediction.
- Added PredictionManager.QueuedInputs.
- Improved Network Level of Detail lookup speeds.
- Added NetworkTransform.UseNetworkLod.
- Added NetworkTransform.SendInterval back in when NetworkTransform.UseNetworkLod is disabled.
- Improved NetworkTransform now uses Collection/ObjectCaches.
- Improved a few garbage allocations in NetworkTransform.
- Fixed hashgrid position being default for objects until first position rebuild. Thanks chanscredi!
- Fixed non-timed observer conditions being marked as passing when timed conditions were checked and passed before them.
- Fixed SceneCondition incorrectly assuming clients were in scenes because they shared another scene with a second client.
- Improved SceneManager Set Active Scenes toggle now applies to clientHost as well.
- Fixed NullReferenceException when an object is deinitialized before it's initialized, such as being instantiated and destroyed rapidly.
- Improved ObjectCaches and CollectionCaches tidiness and supported types.
- Improved NetworkObserver initialization garbage collection.
- Fixed non-authenticated clients getting spawn messages for objects when objects were spawned while client was pending authentication.
- Added ClientManager.GetTransportIndex.
- Added NetworkConnection.TransportIndex.
- Fixed server not removing clients when only 1 of multiple active transports stopped.
- Improved ClientManager Start and StopConnection now returns boolean like ServerManager.
- Added git package support(Thanks NonPolynomialTim).
- Fixed PredictedObject not correctly setting IsKinematic on Rigidbody2D.
- Fixed possible invalid scene when trying to iterate loaded scenes if the scene was unloaded immediately after loading.
- Added TimeManager.TicksToTime(PreciseTick).
- Improved several warnings and feedback debugs added.
- Fixed harmless warning related to NetworkObserver destroying objects.
- Fixed a variety of conditions where NetworkAnimator would not synchronize.
- Fixed clients initializing objects out of order, sometimes resulting in missing SyncType references.
- Fixed a memory leak.
- Obsoleted ListCache(s).
- Fixed SyncTypes not being initialized on clients.
- Added NetworkConnection.ToString which will return ClientId and IP Address.
- Fixed generated comparers sometimes not importing types.
- Fixed WriterPool using 2000 byte buffers in place where 1000 byte buffers should be used.
- Improved NetworkManager.ObjectPool is now exposed.
- Added NetworkManager.CacheObjects QOL to pre-warm object pools.
- Added Writer.ToString().
- Added Reader.RemainingToString().
- Fixed potential endless loop with scene loading.
- Fixed potential Tugboat NullReferenceException when shutting down client.
- Fixed duplicate AddToSpawned calls for client objects.
- Fixed Reader.ReadArraySegmentAndSize returning default on 0 length ArraySegments.
- Fixed instance of SceneManager improperly invoking OnLoadedStartScenes AsServer twice.
- Fixed RigidbodyPauser Rigidbody2D IsKinematic state being improperly set based on simulated state.
- Added developer option to disable Quality of Life attribute processing.
- Obsoleted GetInstantiated/Pooled objects which specify prefabId but not collectionId.
- Fixed NetworkTransform sending empty data with NetworkLOD enabled. NetworkLOD must still be enabled manually through the Fish-Networking menu.
- Added TimeManager.INVALID_TICK.
- Fixed IntermediateLayer failing on datas over MTU.
- Improved IntermediateLayer is no longer experimental.
- Added NetworkTransform.ComponentConfiguration to automatically configure rigidbodies, character controllers, ect.
- Fixed Tugboat incorrectly trying to start server when regaining window focus.
3.5.8
2023/03/28
- Added NetworkTransform.ComponentConfiguration to automatically configure rigidbodies, character controllers, ect.
- Fixed Tugboat incorrectly trying to start server when regaining window focus.
- Changed disabled Network Level of Detail while bugs are investigated and resolved.
3.5.7
2023/03/21
- Fixed NetworkTransform sending to owners when SendToOwner was disabled.
- Improved PredictedObject smoothing.
- Added custom smoothing settings to PredictedObject.
3.5.6
2023/03/21
- Fixed NetworkTransform not sending to clients when owned by clientHost.
3.5.5
2023/03/21
- Fixed rigidbody predicted spawns with owners experiencing a one-time desynchronization for owner after being spawned.
- Fixed predicted spawns jumping briefly into simulation.
- Fixed PredictedObject sometimes failing to set kinematic states for clients.
- Fixed PredictedObject not updating to server values on clients which are owners of the object, but also do not implement prediction methods.
- Fixed potential NRE on client when sending a level of detail update.
- Added NetworkManager/InstanceFinder.HasInstance().
- Improved codegen now handles array types when checking prediction comparers.
- Added FISHNET_VX to defines. This is available in version 3 or higher. Unused defines are automatically removed.
- Added UnloadSceneEventArgs.UnloadedScenesV2, a custom struct to ensure scene names and handles are present.
- Fixed regression: NetworkTransform in rare cases not synchronizing transforms after a scene change.
- Fixed writer.Write() causing an IL error in custom serializers when type being written was a built-in type with auto packing.
- Fixed NetworkTransform sending updates to from server to clientHost.
- Improved StructSync example by drastically simplying it.
- Fixed start scenes not loaded warning when using predicted spawning.
- Fixed enums causing IL2CPP build errors while in prediction structures.
- Fixed nullables and some generics within prediction datas failing codegen in 2021+.
- Fixed NetworkConnection.Scenes not tracking scenes on client-only.
- Fixed TransportIdData not found error when using Multipass with the latency simulator.
- Fixed SyncTimer.PauseTimer not working on server.
- Fixed global scene replacing not working for replace online only.
- Fixed unreliable SyncVars invoking the same value twice for clients during eventual consistency.
- Added ability to create custom comparers for prediction data types.
- Added CustomComparer attribute.
- Fixed childed NetworkTransform sending parent every tick even without transform change.
- Fixed DefaultPrefabObjects not generating once deleted(previous experimental bug).
- Improved PredictedObject spectator interpolation to be selectable modes.
- Fixed BandwidthDisplay text clipping in certain corners.
- Added TimeManager.OnRoundTripTimeUpdated.
- Improved LiteNetLib (Tugboat) from dropping connections on mobile, and blocking connections on IOS development builds.
- Fixed Generator sometimes not loading the defaultprefabobjects on Macs due to File.Exist check.
- Added Network LOD to NetworkTransform.
- Added Demos > Network LOD.
3.4.3
2023/02/25
- Fixed NetworkTransform warning debug when setting SendToOwner at runtime before object was network spawned.
- Improved Rigidbody prediction example to include extra gravity and predicted spawning.
- Fixed regression where addressable collectionIds were not being used in all scenarios.
- Fixed unhandled packet errors caused by incorrect merge.
- Fixed IL error when reading SyncVars in NetworkBehaviours with inheritance.
3.4.0
2023/02/20
- Improved predicted spawns can now have SyncTypes set and sent to the server.
- Fixed predicted scene objects not smoothing as clientHost when the scene was loaded before the client connected.
3.3.2
2023/02/12
- Added Transport.IntermediateLayer(experimental).
- Fixed PredictedObject sometimes not smoothing graphics for clientHost.
- Improved nested collection serialization.
- Fixed PredictedObject graphicals not smoothing correctly under certain conditions for clientHost.
3.3.0
2023/02/08
- Improved Tugboat IPv4 parsing.
- Added TargetRpc.ExcludeServer.
- Added ObserversRpc.ExcludeServer.
- Added SceneManager.GetSceneProcessor.
- Added SceneManager.SetSceneProcessor.
- Improved DefaultSceneProcessor fields are now protected.
- Break IncludeOwner attribute of ObserversRpc is now ExcludeOwner, and value is inversed.
- Improved ObserversRpc ExcludeOwner now does not send the packet rather than ignore it on client side.
- Added PredictedObject Owner smoothing toggles.
- Added connection scene loading option to DefaultScene.
- Improved SyncVars now warn when trying to set a value as client when not allowed.
- Improved SyncObjects can now be set locally by clients without synchronization when ReadPermissions is ExcludeOwner.
- Improved SyncVars can now be set locally by clients without synchronization when ReadPermissions is ExcludeOwner.
- Improved organized codegen and hid editor warnings.
- Improved ServerObjects.RebuildObjects(NetworkObject) is now public.
- Fixed readers sometimes not generating for List elements.
- Added ServerManager.SyncTypeRate to set a default value for send rate on SyncTypes.
- Added DefaultObjectPool.CacheObjects to preload pooled objects.
- Added DefaultObjectPool.ClearPool to destroy pooled objects.
- Improved exposed DefaultObjectPool.Cache.
3.2.1
2023/02/02
- Added predicted spawning.
- Added PredictedSpawn component.
- Added several features to PredictionManager.
- Changed moved several prediction datas and callbacks from TimeManager to PredictionManager.
- Changed ObjectId internally from short to ushort.
- Changed PrefabId internally from short to ushort.
- Added TImeManager.LocalTickToTick().
- Added Reader.Clear().
- Added NetworkConnection.UNSET_CLIENTID_VALUE.
- Added TransportManager.GetLowestMTU(byte).
- Added NetworkObject.PredictedSpawner.
- Added NetworkObject.PredictedSpawn.
- Added NetworkObject.UNSET_OBJECTID_VALUE.
- Added NetworkObject.UNSET_PREFABID_VALUE.
- Improved DefaultObjectPool and ObjectPool now supports addressables.
- Improved PredictedObject smoothing.
- Fixed PredictedObject sending Rigidody2D velocity as a Vector3 instead of Vector2.
- Fixed incorrect prefab collections being used with addressables.
- Fixed timed observer conditions not working on nested NetworkObjects.
- Fixed incorrect Reader/Writer being called when serializing multiple nullable types.
- Fixed SyncVar OnChange callbacks ignoring overrides.
- Fixed conn.Objects missing objects when calling GiveOwnership to the same connection that is already owner.
- Fixed incorrect packing reference in NetworkTransform.
- Improved XML in several areas.
- Improved NetworkBehaviours now log when automatically adding the NetworkObject component.
- Fixed Visual Studio code cleanup removing needed logic.
- Fixed typo in QuaternionFN class name.
3.1.6
2023/01/24
- Fixed Visual Studio code cleanup removing needed logic.
- Improved XML for NetworkObject.IsNested.
- Improved NetworkBehaviours now log when automatically adding the NetworkObject component.
- Fixed incorrect packing reference in NetworkTransform.
- Fixed RPCLinks returning the wrong value to the link pool.
3.1.5
2023/01/20
- Fixed build errors when building for IL2CPP.
- Fixed crash when sending a collection marked as property while also contained within a structure or class.
3.1.3
2023/01/09
- Changed introduced 3x breaking changes.
- Added NetworkManager.Get/SetStartOnHeadless.
- Added ListCache as a serializerable type.
- Added NetworkObject.InitializeOrder.
- Fixed OfflineRigidbody unpausing one tick late.
- Improved prediction bandwidth usage considerably. Many will see prediction bandwidth usage drop by 60-75%!
- Fixed infinite import error when no NetworkObject prefabs were present in the project.
- Improved all configurations are now stored within the FishNet.Config.XML file.
- Fixed SyncTypes not updating on clients on occasion after an object has been pooled.
- Fixed NetworkConnect/ServerManager.Kick not working.
- Changed client SyncType callbacks now occurr after other callbacks invoke on all spawns.
- Improved prediction near entirely moved out of code-gen!
- Added PredictionManager which offers more control over your client-side prediction.
- Changed several prediction events moved from TimeManager to PredictionManager.
- Fixed unhandled packet error when a NetworkObject was destroyed on clientHost without deinitializing, prior to clientHost receiving the spawn packet.
- Added NetworkConnection.LoadedStartScenes(bool).
- Added NetworkManager.GetPrefabObjects. This can be used for runtime prefab collections, such as addressables.
- Improved addressables prefab support by allowing them to be registered with custom collection Ids, for easy loading and unloading.
- Changed LoggingConfiguration renamed to LevelLoggingConfiguration.
- Added LoggingConfiguration, a base class for create custom loggers.
- Added RingBuffer utility.
- Added SceneLoad/UnloadData PreferredActiveScene to specify which scene to set as active.
- Added DateTime serializers.
- Fixed SceneManager trying to move NetworkObjects it should normally not.
- Fixed Getting Started menu trying to automatically launch in batch mode.
- Improved less allocations within SceneManager.
- Added SyncObjectAttribute.RequireReadOnly field.
2.6.6
2022/12/25
- Fixed NetworkConnection.IsLocalClient incorrectly returning false as clientHost.
2.6.5
2022/12/23
- Fixed PredictedObject not unpausing rigidbodies at the appropriate times, resulting in unusual rigidbody collisions.
- Fixed SceneManager writers and readers missing some values.
2.6.4
2022/12/04
- Fixed TimeManager.SetPhysicsMode not updating the serialized field.
- Added SyncStopwatch.
- Improved SyncTimer.StartTimer now unpauses the timer.
- Fixed SyncTimer now also sends paused state to late joiners.
- Added TimeManager.TimingType.
- Fixed NetworkTransform in rare cases not synchronizing transforms after a scene change.
- Added NetworkTransform.ForceSend to resend latest values (experimental).
- Fixed animations resetting on predicted objects for spectators.
- Added NetworkTransform.SetSendToOwner.
- Added List extension AddUnique.
- Fixed Multipass.GetConnectionState using the wrong connectionId.
- Fixed Multipass.StopClient using the wrong connectionId.
- Improved SceneManager.LoadConnectionScenes checks for invalid connections now.
- Fixed NetworkTransform parent sending one tick before transform properties.
- Fixed CodeStripping preventing compilations on WSA platforms.
- Improved refactor in NetworkManager, DefaultObjectPool.
- Fixed SceneManager ReplaceOptions.OnlineOnly sometimes not unloading online scenes.
- Fixed SceneManager.OnClientLoadedStartScenes not invoking for clientHost side.
- Fixed SceneManager active scene not being set for clients when a connection scene was loaded.
- Added QOL for NetworkManager instance methods.
- Added PredictedObject.SmoothPosition and PredictedObject.SmoothRotation.
- Added PredictedOwnership component. This allows clients to immediately take ownership without waiting for the server callback.
- Added NetworkManager.RegisterInstance.
- Added NetworkManager.UnregisterInstance.
- Added NetworkManager.GetInstance.
- Added NetworkManager.InvokeOnInstance.
- Added ServerManager.OnClientKick.
- Fixed hash collision error when using the same nullable type multiple times in a class or struct.
- Changed exposed ServerManager.OneServerStarted.
- Changed exposed ServerManager.AnyServerStarted(int?).
- Improved ServerManager now cleans up NetworkedObjects when all servers are stopped.
- Added ObserverCondition.Get/SetIsEnabled.
- Added HostOnlyCondition.
- Added NetworkBehaviour.NetworkObserver QOL.
- Added menu to remove duplicate NetworkObject components on a single gameOject.
- Fixed RunLocally incorrectly being applied when using Multi-Attributed RPCs.
- Fixed FishNet.Runtime assembly self reference error on new imports.
- Fixed IL2CPP null delegate error in some Unity LTS versions.
- Added SyncTimer.Duration.
- Added SyncTimer.Elapsed.
- Added generic NetworkBehaviour support.
- Added Getting Started to Fish-Networking menu (thanks YarnCat!).
2.5.10
2022/11/01
- Improved InstanceFinder.IsOffline no longer warns when NetworkManager is missing.
- Fixed objects disappearing for clientHost until spawn packet reached the client.
- Improved clientHost render visibility updates now auto populate when previously found renders have gone missing.
- Added deinitializers to included transports.
- Fixed objects being automatically spawned when sending prefabs through RPCs.
- Added TImeManager.UpdateOrder.
- Improved XML in several areas.
- Added NetworkAnimator.Interpolation to keep animations tick-aligned with transforms.
- Removed NetworkAnimator.Interval.
- Changed codegen no longer relies on static classes.
- Fixed PredictedObject predicting owner objects when multiple objects were controlled at once.
- Added NetworkConnection.Tick.
- Fixed SyncList deserializing improperly for late joiners.
- Added PredictedObject.ResendType.
- Fixed WebGL accessing unmanaged memory error.
- Improved allocations for clients.
- Improved PredictedObject graphical object no longer needs to be a child object.
- Fixed CodeAnalysis errors on non-Windows OS.
- Changed OnOwnershipClient/Server now always calls during the start loop, regardless of owner.
- Changed TimeManager.MaximumBufferedInputs removed in favor of a constant value.
- Changed exposure of EnumFN.GetHighestValue.
- Changed exposure of SyncBase.OnStartCallback for custom SyncTypes.
- Added SyncTimer, a custom SyncObject.
- Added NetworkConnection.IsHost.
- Improved NetworkAnimator synchronize parameters description.
- Fixed DefaultPrefabCollection can no longer automatically generates when editor is playing.
- Improved PredictedObject smoothing and correction abilities.
- Changed RigidbodyPauser now sets velocity instead of adding forces.
- Fixed RigidbodyPauser incorrectly pausing for Rigidbody2D.
2.5.3
2022/10/03
- Added ClientManager.OnRemoteConnectionState.
- Added NetworkObject.UpdateRenderers(bool).
- Fixed Subtarget errors when trying to build on Unity 2021+ and WebGL.
- Fixed clientHost overwriting server SyncVar values with most recently received.
- Fixed generated serializers for structures when using properties.
- Improved logging, consistency in capitalization.
- Added SceneUnloadEndEventArgs.UnloadedScenes. Thanks marinhekman!
- Fixed Quaternion extension precise angle parameter being flipped.
- Fixed false error on DefaultPrefabGenerator when saving an object in a scene, then dragging it as a prefab.
- Improved NetworkTransform interval and events are out of experimental.
- Improved object pooling is out of experimental.
- Improved MatchCondition is out of experimental.
- Added DataLength to RPC attributes. When added larger serializers will be used preventing resize allocations.
- Added Reader.Capacity to get reader buffer capacity.
- Added Writer.Capacity to get writer buffer capacity.
- Added Writer.EnsureBufferCapacity to set a minimum capacity.
- Added TimeManager.AllowTickDropping to allow clients to drop excessive ticks per frame.
- Added TimeManager.MaximumFrameTicks to limit how many ticks per frame a client may run.
- Improved initialization allocations on reader/writers by a minimum of 80 bytes each.
- Improved authenticator can now be set at runtime.
- Obsoleted NetworkManager.Authenticator.
- Obsoleted ServerManager.Authenticator.
- Added ServerManager.GetAuthenticator.
- Added ServerManager.SetAuthenticator.
- Fixed infinite import error when a prefab cannot be serialized. Additional feedback for this has been added as well.
- Fixed NetworkObject Id not found error on clientHost when a child NetworkObject is destroyed after being moved to a new parent.
- Fixed CachedNetworkObject not fully resetting, resulting in a variety of errors.
- Added BandwidthDisplay component to show bandwidth consumption.
- Improved PingDisplay to allow the changing of text color.
- Fixed NetworkTrafficStatistics displaying 0.00 b/s rather than 0 b/s.
- Fixed PingPong restrictions not working in builds.
- Fixed allocations in Multipass (thanks DanielSnd).
- Added network object pooling. There is a built-in pooler included, and it may be replaced with one of your choosing.
- Fixed Multipass using the wrong connectionId when using GetConnectionAddress(int).
- Fixed unsupported Subtarget error when making Android builds.
2.4.5
2022/09/20
- Changed PredictedObject to resolve Unity issue resulting in frame rate loss on clients when using stacked scenes.
2.4.4
2022/09/12
- Fixed ReadBytesAllocated using a pooled byte array resulting as incorrect byte array lengths.
- Improved some XML documentation (typos).
- Fixed unrelated NetworkObjects not initializing client-side while receiving irregular spawn conditions.
- Improved CodeAnalysis features to allow custom feedback on produced errors.
- Improved TransportManager.GetTransport now returns T.
- Improved Multipass.GetTransport now returns T.
- Fixed NetworkConnection.Disconnect(false) causing queued packets to not be delivered.
- Fixed CharacterController prediction example player prefab missing the NetworkTransform component.
- Reader.ReadList now returns -1 for a null read instead of 0, and can optionally null the referenced collection.
- Added TargetRpc.ValidateTarget to optionally exclude validating targeted connection.
- Added debug view, NetworkObject.EditorOwnerId.
- Fixed RebuildObservers not utilizing collection count properly.
- Added NetworkConnection.LastPacketTick to store the tick of the last packet received from the connection.
- Improved PredictedObject accuracy.
- Obsoleted TimeManager.OnPhysicsSimulation.
- Added TimeManager.OnPrePhysicsSimulation.
- Added TimeManager.OnPostPhysicsSimulation.
- Improved TimeManager.RoundTripTime XML.
- Added PingDisplay.HideTickRate.
- Changed NetworkTransform and NetworkAnimator are now sealed.
- Fixed OfflineRigidbody not working for 2D objects.
- Added RigidbodyPauser to pause and resume rigidbody states.
- Added HostAuthenticator example. PasswordAuthenticator now inherits from this component.
2.3.14
2022/08/13
- Changed to enforce execution order reliability base.IsOwner may no longer be used within OnStartNetwork. Use base.Owner.IsLocalClient instead.
- Fixed PredictedObject smoothing change being reverted in an earlier release.
- Fixed objects not spawning on clients when instantiated in OnStartServer while the client was also being added to a scene.
- Fixed nested NetworkObjects sometimes attempting to rebuild observers before it's parent NetworkObject was rebuilt.
2.3.12
2022/08/11
- Fixed circumstantial memory leak for clientHost player when using client-side prediction.
- Improved OnPreReconcile/OnPostReconcile now invoke even as host.
- Fixed SyncTypes sometimes returning incorrect results when referencing networked objects being spawned the same tick.
- Fixed errors when instantiating network objects under scene objects before the scene had been network processed.
- Fixed duplicate key error when using inherited scripts with SyncTypes over multiple assemblies.
- Added Tugboat.SetPacketLayer for LiteNetLib.
- Added FishNet to the components menu.
- Added SceneManager.LightProbeUpdating option for how light probes are updated after scene changes.
- Changed updated LiteNetLib. A clean FishNet install is required those updating outside the asset store.
- Added ObserverManager and NetworkObserver.SetUpdateHostVisibility.
- Improved exposed NetworkObject.SetRenderersVisible(bool, bool).
- Added code stripping technique options: Redirect(default), and Empty.
- Added latency simulation to the TransportManager.
- Improved renamed Transform.cs files to Transforms.cs.
- Added NetworkTransform.SetSynchronizePosition/Rotation/Scale.
- Added NetworkTransform.SetPosition/Rotation/ScaleSnapping(SnappedAxes).
- Improved PredictedObject now sends kinematic/simulated state.
- Fixed manually refreshing default prefabs now overrides enabled setting for default prefabs.
- Fixed NullReferenceException as clientHost when an object was despawned while having a passing timed condition.
2.3.10
2022/08/04
- Added DefaultScene.SetOnlineScene/SetOfflineScene.
- Improved error messages when DefaultPrefabObjects is unable to serialize prefabs.
2.3.9
2022/07/28
- Added several new abilities to nested NetworkObjects, see Nested NetworkObjects for more information.
- Fixed 'Added Fish-Networking defines to player settings' message displaying on every Editor launch for free users.
- Changed NetworkBehaviour/Object.IsOwner will no longer return false in OnNetworkStart as host.
- Improved lag compensation accuracy and consistency.
- Improved NetworkHudCanvases to deselect canvas when pressed.
- Fixed renderers being visible for clientHost if they were not an observer at the start.
- Improved MatchCondition XML.
- Improved DefaultPrefabObjects are always fully refreshed when the project opens, and when FishNet updates are imported.
- Improved DefaultPrefabObjects are now sorted at runtime to reduce likeliness of out of order prefabIds.
- Fixed scene NetworkObjects sometimes having their callbacks run before OnActiveSceneSet invoked.
- Added DirtyAll to SyncList, SyncHashSet, SyncDictionary. DirtyAll will force a full write.
- Added SyncHashSet.Dirty(T) to dirty an existing HashSet entry.
- Added SyncHashSetOperation.Update, which indicates an existing HashSet entry has been updated.
- Added OfflineRigidbody to prevent offline rigidbodies from desynchronizing when using client-side prediction.
- Fixed NetworkTransform sometimes sending an empty update after the object is enabled after being disabled, while using client authority.
- Fixed OnInterpolationComplete not invoking for free users.
- Improved NetworkTransform to discard it's buffer when the buffer becomes excessive.
- Improved NetworkObserver no longer inherits NetworkBehaviour.
2.2.7
2022/07/18
- Fixed ObserverManager default conditions adding incorrectly under certain conditions, resulting in unclear errors during scene transitions.
- Fixed NetworkTransform sometimes sending an empty update after the object is enabled after being disabled, while using client authority.
- Fixed OnInterpolationComplete not invoking for free users.
- Improved NetworkTransform to discard it's buffer when the buffer becomes excessive.
- Improved NetworkObserver no longer inherits NetworkBehaviour.
2.2.6
2022/07/13
- Added ServerManager.StartConnection(port).
- Removed Obsolete message from TimeManager.TicksToTime(TickType).
- Fixed base Awake methods not calling under certain conditions for NetworkBehaviour types.
- Fixed Quaternion compression sometimes flipping negative values.
- Improved how NetworkConnections are read for clients.
- Changed exposed compress and decompress methods for Quaternions.
- Added StatisticsManager, can be placed on your NetworkManager for a variety of game statistics.
- Improved DefaultPrefabObjects are now automatically refreshed before builds.
- Fixed typo in TimeManager when setting lastMultipleTicks value.
- Fixed Odin Inspector causing SceneId to serialize every frame when object is selected.
- Improved SceneManager for mobile devices.
- Fixed generic collection type fields from other assemblies sometimes creating codegen errors.
- Added NetworkObject.IsGlobal, which allows NetworkObjects to be visible for all players and making them DontDestroyOnLoad.
- Fixed properties with generic return types causing codegen errors.
2.2.4
2022/07/04
- Obsoleted ServerOnlyCondition in favor of OwnerOnlyCondition.
- Added OwnerOnlyCondition. Only the server and owner will observe the object.
- Fixed SceneManager.OnLoadEnd calling before the scene initialized. This was caused by a Unity bug related to coroutines.
- Improved excessive ping kick logic.
- Improved TimeManager.OnPhysicsSimulate will run when using Unity physics now as well.
- Added Multipass.SetClientTransform(Type).
- Added PredictedObject.Get/SetGraphicalObject.
- Added ListCaches.Get/Store NetworkBehaviour.
- Fixed some SyncObjects not invoking the OnChange event after OnStartClient.
- Added DefaultSceneProcessor and SceneProcessorBase to support addressables within the SceneManager.
- Added FISHNET_PRO to defines for Pro users.
2.2.1
2022/06/25
- Improved PredictedObject smoothing calculations.
- Added PredictedObject.DurationType to configure how smoothing is calculated.
- Fixed Generator re-creating DefaultPrefabObjects when Unity failed to load the default prefab files.
- Improved Generator now attempts to reload the DefaultPrefabObjects when Unity fails to load it the first time. This is a Unity bug which seems to primarily exist in 2020 versions.Fixed PredictedObject and potentially other scripts not compiling on Android with development build enabled.
- Improved SceneManager will not try to automatically move clientHost objects which are pending destruction if they are not root.
- Added SceneLookupData.NameOnly to get the name of a scene without the full file path.
- Improved NetworkTransform rotation sensitivity to now detect very descrete rotations.
2.2.0
2022/06/18
- Added teleport option to PredictedObject.
- Added SceneLoadEndEventArgs.UnloadedSceneNames which contains scenes replaced during a scene load.
- Added SceneManager.MoveClientHostObjects toggle.
- Added SceneManager.SetActiveScene toggle.
- Fixed NullReferenceException when setting a SyncType through an editor callback during edit-time.
- Added property support to automatic serializers.
- Improved default prefabs now do a full rebuild when updating Fish-Networking.
- Added TimeManager.IsReplaying() which returns if any predictions are replaying.
- Added TimeManager.IsReplaying(Scene) which returns if a scene is replaying physics.
- Added NetworkBehaviour.GetLastReconcileTick to know which tick is being reconciled to.
- Added SetHostVisiblity may now be disabled through NetworkObserver or ObserverManager.
- Added TimeManager.TicksToTime(TickType).
- Obsoleted TimeManager.TicksToTime(bool).
- Added BroadcastExclude, ways to send broadcast while excluding connections.
- Added TimeManager.GetPreciseTick.
- Added TimeManager.GetTickPercent.
- Obsoleted TimeManager.TickPercent.
- Obsoleted RollbackManager.PreciseTick.
- Added Documentation quick-link to the Fish-Networking menu.
2.1.0
2022/06/13
- Changed introduced 2.0.0 breaking changes.
- Improved default prefab finder speed.
1.5.6
2022/06/06
- Fixed index out of range on WriteList/Array from 1.5.4.
- Fixed unreliable SyncTypes not working from 1.5.4.
- Fixed callbacks executing out of order sometimes when spawning and despawning an object on the same tick.
- Fixed PredictedObject not subscribing to events OnEnable after unsubscribing when the user disables the object.
- Fixed PasswordAuthenticator example kicking client before sending the broadcast.
- Improved delayed disconnects are now handled internally rather than by the transport, such as when stopping a connection with a delay so messages complete.
- Added OnPhysicsSimulation to TimeManager to know when physics will simulate.
- Fixed ParseTimingUpdate incorrectly adjusting client timing.
- Fixed invalid IL in prediction methods under unique circumstances.
1.5.4
2022/05/31
- Improved CodegenExclude attribute now works on static methods which may be interpreted as serializers.
- Added experimental NetworkTransform.OnDataReceived, giving developers an opportunity to manipulate received transform data.
- Added experimental NetworkTransform.SetSynchronizedProperties, to change what properties are synchronized at runtime.
- Added more ServerObjects.RebuildObserver option.
- Fixed PredictedObject sometimes calling the smooth method twice in a single update.
- Added Transport.SetTimeout. Note, not all transports will use this feature.
- Added extra error handling to Broadcast for when delegates are not unregistered.
- Fixed PredictedObject often sending data too frequently for rigidbodies that have not updated.
- Added made List and Array Reader/Writer methods available to developers.
- Added new DefaultPrefabObjects system. The new system is faster with more settings. See Fish-Networking > Configuration menu.
- Added checks in codegen to prevent async RPC methods.
- Fixed PredictedObject smoothing speeds being calculated incorrectly.
- Fixed objects not despawning with certain conditions when removing ownership.
- Patched objects not being destroyed on clientHost when the object is spawned and despawned on server before the packet arrives on client. Note: client callbacks do not behave properly in these situations until this is properly fixed.
- Fixed server rarely throwing errors when client would send data to a despawned NetworkObject.
- Added PredictedObject.Get/SetSmoothTicks.
- Fixed IL initialization error when a type was being used as an array and singular as a SyncVar.
- Improved server and client no longer process received data on deinitialized objects; the data is instead discarded.
1.5.2
2022/05/19
- Added Transform to serializable types.
- Fixed objects not moving between scenes when using global scene loads.
- Fixed NetworkTransform.Interval(experimental) sometimes causing NaN errors.
- Improvements to debug output messages.
- Improved timing adjustments to send even less frequently.
- Improved exposed NetworkObject.SetIsNetworked.
- Improved tidied prediction example scenes, prefabs, and scripts to use new PredictedObject.
- Added NetworkTransform.Interval to reduce how often NetworkTransform sends (experimental).
- Fixed SyncVar.OnChange not supporting array types.
- Fixed UnitySceneManager.sceneUnloaded not being unregistered.
- Fixed NetworkTransform sending too often.
- Removed NetworkAnimator null animator warning.
- Added automatic parent synchronization when spawning objects.
- Obsoleted NetworkBehaviour/NetworkObject.Deinitializing. Use IsDeinitializing instead.
- Obsoleted NetworkObject.SceneObject. Use IsSceneObject instead.
- Added several checks and warnings when attempting to move objects over scenes.
- Changed some internals to not use obsoleted.
- Improvement prevented server from initializing a connection if user disconnected the connection through OnRemoteConnectionState.
- Improved PredictedObject to perform functions of all predicted helpers.
- Added PredictedObject ability to smooth at any tick rate.
- Added PredictedObject will now configure specified NetworkTransform.
1.4.8
2022/05/08
- Changed several ListCaches types now use GetXXXXCache/StoreCache instead of accessing the ListCache directly.
- Improved timed conditions automatic scaling feature.
- Fixed NetworkTransform sometimes changing a transforms property even when it was not intended to be synchronized.
- Fixed NetworkTransform synchronize parent feature.
- Fixed NetworkTransform snapping settings not working under certain conditions.
- Fixed NetworkTransform not synchronizing initial values when on a child component.
- Added NetworkManager.Initialize to know when it's initialized versus being destroyed.
- Fixed DefaultScene null reference exceptions in relation to destroyed NetworkManagers.
- Fixed Awake base calls not working when Awake was not overriden.
- Fixed RunLocally on ServerRpc blocking execution from any client which was not host.
- Fixed MatchCondition.
- Added new ways to add and remove clients or objects to MatchCondition.
- Improved NetworkConnection.Equals now uses ClientId.
- Fixed scene objects being initialized even with IsNetworked disabled.
- Added code analysis to force base calls.
- Fixed SyncObject AddOperation and initialization checks.
1.4.7
2022/05/02
- Fixed broadcast handlers not unregistering properly.
- Added CodeAnalysis to catch common mistakes such as using IsOwner in Awake or Start.
- Added support for nested NetworkObjects within scenes and prefabs.
- Fixed Awake being called on inherited NetworkBehaviours without the users intent.
- Added networkObject/gameObject.Spawn, to spawn the extended object using InstanceFinder.
- Added base.Spawn(networkObject).
- Fixed timed observer conditions causing incorrect visibilities and flickers for clientHost.
- Improved Tugboat utilizes Get/SetServerBindAddress.
- Obsoleted transport.Get/SetServerBindAddress().
- Improved Transport.Get/SetServerBindAddress now takes IPAddressType argument.
- Added ListCaches.GetXYZCache/StoreCache which enables use of caches as a pool.
- Improved several debug messages and handled more potential exceptions.
- Added TimeManager.FrameTicked.
- Improved timed ObserverCondition performance considerably.
- Obsoleted ListCaches.TransformCache/NetworkObjectCache.
- Added SyncDictionary.Dirty(key) and SyncDictionary.Dirty(value).
- Improved XML on SceneLookupData.
- Improved NetworkTransform.SynchronizeParent reliability. Feature is still being worked on.
- Fixed DefaultScene not changing scenes when older NetworkManagers are destroyed.
- Fixed incorrect method being used to debug log spawn warnings.
- Improved PredictedObject setup process.
- Added additional constructors to SceneLoadData, SceneLookupData.
- Changed Refresh Default Prefabs removed from NetworkManager in favor of Fish-Networking menu.
- Changed NetworkManager.IterationOrder is no longer experimental and is now hard-coded.
- Improved NetworkObject.IsNetworked XML.
- Added SyncList.Dirty(T), to allow setting dirty by type reference.
- Improved NetworkObserver.GetObserverCondition by removing required cast.
- Added SceneManager.OnActiveSceneSet, which is called immediately after scenes load.
- Fixed NetworkTransform updates occasionally skipping a tick.
1.4.5
2022/04/20
- Fixed automatic code stripping not working on some Unity versions.
- Improved error message on missing SceneObjects.
- Improved TransportManager.GetTransport signature.
- Fixed TransportManager.GetTransport now returns Multipass when T is Multipass, rather than looking for a transport within Multipass.
- Fixed RollbackManager not accumulating snapshots.
- Improved NetworkAnimator no longer warns regularly when runtimeAnimatorController is null.
- Added TimeManager.TimePassed to return time passed between current and previous ticks.
- Improved default prefabs population speed.
- Added SyncBase.WriteHeader in place of SyncBase.WriteDelta when only needing to write the header.
- Added NetworkConnection.GetAddress to get the clients remote address.
- Added Refresh Default Prefabs to the Fish-Networking menu.
- Fixed NetworkAnimatorEditor not properly displaying parameters for AnimatorOverrideControllers.
- Improved TimeManager.Tick is now set on clients during the authentication process.
- Improved TimeManager readability.
- Improved description of several codegen warnings.
- Improved TimeManager.RoundTripTime accuracy.
- Added TargetRpc and ObserversRpc attributes can be used on the same method.
- Added NetworkManager.SpawnPacking, to control transform compression during spawns.
- Added NetworkTransform.Packing, to control transform compression during updates.
- Improved OnStartServer/Network, no longer call before active scene is set during a scene load.
- Fixed IEnumerator Awake codegen errors when inheritance involved multiple assemblies.
- Fixed Server and Client attribute methods not logging when NetworkBehaviour was not initialized.
- Improved prediction example prefabs to use PredictedObject.
- Added TimeManager.PingInterval is now configurable.
- Added TimeManager.PredictionTimingInterval is now configurable.
- Added experimental PredictedObject component.
- Improved bandwidth usage on timing updates.
- Improved performance on timing updates.
- Fixed NetworkConnection.Broadcast using InstanceFinder instead of the NetworkManager reference.
- Fixed objects not respawning for clients after they regain ownership.
- Changed re-enabled RPCLinks.
- Improved network objects in DDOL scene now initialize over the network.
- Improved ObserverCondition performance when using timed conditions.
- Changed RunLocally on RPCs will now only run once as host.
- Added MatchCondition.
- Changed Yak namespace to match other transports.
1.4.3
2022/03/26
- Added DistanceChecker.HideDistancePercent to reduce spawn messages and better control visibility.
- Added ability to disable automatic frame rate setting on Client/ServerManager.
- Changed Yak transport namespace to match others.
- Improved Exposed SceneManager.AddOwnerToDefaultScene.
- Improved Exposed PlayerSpawner.Spawns
- Added additional exploit protection.
- Fixed connection scenes unloading for all players when clientHost would leave the scene.
- Improved renderers now hide for clientHost when a scene is loaded for another connection that clientHost is not within.
- Added TimeManager.SetPhysicsMode to set PhysicsMode at runtime.
- Fixed NetworkManager.PersistenceType potentially destroying the wrong NetworkManager.
- Changed ReadBytesAllocated now retrieves from ByteArrayPool.
- Added prefabs can now be serialized.
- Improved performance on SyncType initialization.
- Added synchronize properties to NetworkTransform.
- Improved reduced client to server bandwidth by up to 8 bytes per tick.
- Improved how server handles client timing resulting in better scalability.
- Added Spawn can now take a NetworkObject reference.
- Fixed deserialization errors when using unreliable SyncVars.
- Improved DefaultPrefabObjects from refreshing more than once while playing.
1.4.2
2022/03/23
- Fixed scene objects network initializing before server was set as started.
- Improved state change messages for local client and local server are more descriptive.
- Fixed NetworkObject not being removed in time when as a child of another NetworkObject while also a scene object.
1.4.1
2022/03/22
- Added experimental NetworkManager.Incoming/OutgoingIterationOrder.
- Improved NetworkAnimator performance marginally.
- Improved NetworkBehaviours are now found even when disabled on prefabs.
- Fixed delay in CSP replication when a client loses ownership upon disconnect, then reconnects regaining ownership.
- Improved SceneManager now prevents MovedObjectsHolder from becoming the active scene.
- Improved compression on some numeric types using IntVar.
- Improved NetworkObject initialization speed and made changes in preperation of nested NetworkObjects.
- Improved several debug messages.
- Fixed NetworkTransform sometimes incorrectly extrapolating slightly when using exceptionally low tick rates.
- Improved CharacterController Prediction example now disables CharacterController for non-owners.
- Improved spawn rotation now sends uncompressed to prevent initial alignment problems.
- Improved all files have proper line endings.
- Removed non-functional ServerBindAddress from Tugboat.
- Changed ConcurrentQueues to Queues in Tugboat.
- Fixed Tugboat polling order which would sometimes cause clients to send packets before being confirmed as connected.
- Added Multipass, a transport that allows a server to run multiple transports at once.
- Improved codegen to throw when attempting to create generic RPCs.
- Fixed codegen error when implementing a generic field within a generic class that inherits NetworkBehaviour.
- Improved exposed 'force' parameter in SyncList.Set.
- Improved NetworkObserver no longer destroys itself with no conditions while using Ignore Manager. This is to allow global visibility.
- Added SyncHashSet.
- Improved unreliable packets by reducing bandwidth an additional 2 bytes.
- Fixed NetworkAnimatorEditor possible null reference exception while the component was selected in the inspector, and while setting the animator controller to null at runtime.
- Changed client connections are no longer considered added to a scene if they own an object in that scene; clients must specifically be loaded into scenes now.
- Added serialized field PlayerSpawner.AddToDefaultScene. While true the player will be added to the scene where the player prefab is instantiated only if there are no global scenes already.
- Improved NetworkObject removed warning no longer displays on nested NetworkObjects while NetworkObject.IsNetworked is false.
- Fixed missing object errors when server-host unloads a scene and unexpectedly destroyed object data is sent to client-host.
- Improved NetworkBehaviours no longer add NetworkObjects to root at runtime.
- Added SyncList.Dirty(index). This allows users to mark a SyncList index dirty such as if they are changing properties within a reference type on that index.
- Improved ListCache.AddValues can now take ISet.
- Improved Tugboat incoming handling speed slightly.
- Improved ReadDictionary speed slightly.
- Changed NetworkManager.RefreshDefaultPrefabs is now false by default.
- Improved NetworkManager tries to refresh default prefabs in a more intelligent manner now.
- Added TransportManager.GetTransport to better support Multipass.
- Added several ServerObject.RebuildObservers overloads to support upcoming MatchCondition.
- Fixed codegen not creating a deserializer for dictionaries when they were used in RPCs.
1.3.4
2022/02/23
- Fixed SyncList and SyncDictionary doubling initial values for clients under rare circumstances.
- Fixed Vector2Int and Vector3Int not deserializing properly.
1.3.2
2022/02/20
- Fixed SyncDictionary/SyncList clearing when client host would disconnect while server remained running.
- Fixed SyncDictionary and SyncList adding double entries as host.
- Fixed serializing null GameObjects causing read error on clients.
- Improved ServerManager now errors when a third party transport provides an invalid clientId.
- Improved MirrorUpgrade tool to support Mirror57x+.
- Improved objectIds are randomized in release builds.
- (Pro) Added Yak transport, an offline transport which doesn't create sockets.
- (Pro) Added automatic build code stripping.
- Changed several Transport methods to support upcoming Multipass transport.
- Fixed SceneManager not clearing values when the server would disconnect.
- Improved several logging and codegen messages.
- Fixed clientId and RPCLinks not working properly after exceeding 32,767 concurrent connections or spawned objects.
- Added Configuration window under Fish-Networking menu.
- Added additional IL2CPP support for older Android devices.
- Improved PredictedRigidbody.
- Changed RigidbodyPrediction default prediction ratio to 0f.
- Added PredictedRigidbody2D.
- Fixed scene objects being disabled on clients with NetworkObject.IsNetworked unchecked.
- Fixed SceneManager unloading scenes that were in scenes to be loaded, while using SceneLoadData.ReplaceOption.
- Fixed incorrect parsing when sending multiple split packets in the same tick, one immediately after the other.
- Added RPC overloading support.
- Fixed ServerManager not sending Id to owner with ShareIds off.
- Changed NetworkTransform send checks from OnTick to OnPostTick.
- Improved Pro tools now only show locked message if user does not have Pro.
- Fixed NetworkTransform in rare cases not completing a rotation with extremely low tick rates.
- Improved NetworkTransform movement by turning on a feature that wasn't supposed to be turned off.
- Improved Physics simulation mode and times revert to user settings on exit/stop play.
- Improved codegen warns against directly accessing SyncVars which are being inherited from different assemblies.
- Fixed broadcasts no longer warn when nothing is registered to a broadcast.
- Fixed Client/ServerAttribute creating IL errors when used on a static method in a class that inherited NetworkBehaviour.
- Added Manually Refresh Default Prefabs button to NetworkManager inspector.
- Fixed Tugboat client timeout sometimes not working in editor.
- Fixed scene objects sometimes not spawning when using Enter Play Mode Options with Reload Domain unchecked, and Reload Scene checked.
- Fixed SyncType values not resetting on scene objects when server or client were stopped, while also not exiting play mode.
- Improved TimeManager.TicksToTime to now take an optional boolean for using LocalTick or Tick.
- Added TimeManager.TicksToTimeDouble methods.
- Removed old files.
- Fixed ClientAttribute.RequireOwnership not working properly.
- Added more constructors to SceneLoadData.
- Added RunLocally field to all RPC attributes. This allows the logic to run on the caller as well send the RPC.
- Improved disabled socket timeout when acting as host.
- Added TimeManager.SetTickRate to allow setting TickRate at runtime. This change must be synchronized manually.
- Improved when server frame rate is default value(9999) it changes to tick rate.
- Removed ServerManager.MaximumClientMTU. This feature will be greatly improved upon over the next release.
1.2.0
2022/01/25
- Added ComponentStateSync to examples. This new SyncType uses the custom SyncType feature to synchronize components enabled/disabled states.
- Improved DefaultPrefabObjects compatibility over cloned projects. These changes should alleviate prefab mismatch errors.
- Improved NetworkTransform. It now has considerably better replication and can withstand harsh network conditions much better as well.
- Added NetworkTransform Pro; available to supporters. This unlocks parent synchronization and extrapolation.
- Added NetworkAnimator Pro; available to supporters. This unlocks choosing which parameters to synchronize.
- Added Collider Rollback/Lag Compensation Pro; available to supporters.
- Added TimeManager.TickPercent, to know how far into the next tick the client or server is.
- Fixed HUD example not allowing Server socket to be toggled after server failed to initialize due to the port being unavailable.
- Improved ping abuse checks no longer apply when running server as editor.
- Improved codegen now errors when using a SyncObject type without the proper attribute.
- Improved missing sceneId error message to be more descriptive.
- Fixed codegen errors when a synchronizing a type that was in another assembly and inherited from NetworkBehaviour.
- Changed IsOwner no longer returns true in Update before client callbacks when running as host.
- Improved (removed) allocations in NetworkTransform.
- Improved (removed) allocations in Reader.
- Improved (removed) allocations in Tugboat.
- Improved ByteArrayPool for less resize chances.
- Changed ByteArrayPool useConcurrent option is now gone.
- Fixed Unity stripping needed code from Android builds.
- Added NetworkAnimator.SendAll, which force sends the entire animator state and all current values.
- Improved XML on PlayerSpawner.
- Added ClientManager.OnAuthenticated.
- Added more verbose state changes for server and client connections.
- Added Writer now allows users to send null NetworkBehaviours.
- Changed NetworkObjects.NetworkBehaviours now includes disabled NetworkBehaviours.
1.1.5
2022/01/14
- Added NetworkManager.RefreshDefaultPrefabs to improve multiple-editor support.
- Fixed SyncList/SyncDictionary client hooks initially calling twice when values were set using OnStartServer.
- Improved several parts of XML (thanks Expostech).
- Fixed TransportManager.IterateOutgoing sometimes throwing collection modified.
- Added host now hides renderers when host-client is no longer an observer.
- Fixed ObserverManager sometimes not initializing added conditions.
- Improved how ObjectIds are assigned.
- Improved error message text in several areas.
- Fixed NetworkObjects sometimes not clearing observers in time.
- Improved codegen by warning against generic RPC parameters.
- Fixed harmless null NetworkObject warning when sometimes trying to despawn as host.
- Improved connection.FirstObject now works for other client objects as well.
- Added ClientManager.Clients, a collection that contains all clientIds and their objects. This feature requires ServerManager.ShareIds to be enabled.
- Changed default logging type from Off to Warning for Server and Client attribute.
- Added IntCache to ListCaches.
- Improved ServerManager now tries to find Authenticator if missing on object.
- Improved Tugboat ensuring data sends out to clients before disconnecting them when applicable.
- Fixed NetworkAnimator incorrectly writing int values.
- Added smoothing to transform prediction example (thanks milk7874).
- Added smoothing to CharacterController prediction example (thanks milk7874).
- Fixed an incorrect define in LoggingConfiguration.
- Improved timing when clients had poor connections.
1.1.4
2022/01/06
- Fixed client timing taking too long to correct when client would lose connection for several seconds.
- Fixed TimeManager not caching and clearing client tick data when server was stopped/started.
1.1.3
2022/01/05
- Fixed Tugboat ServerSocket not obeying polltime variable causing increased CPU usage.
- Fixed NetworkAnimator throwing when an animator was not present.
- Improved SyncListOperation XML.
- Changed server callbacks now occur when setting SyncType values within OnStartServer.
1.1.2
2022/01/04
- Fixed ObjectIds in rare cases not being assigned correctly when stopping server/client multiple times without restarting the application.
- Improved context for several RPC related warnings.
- Added NetworkTransform classic option to improve smoothing until NetworkTransform is finalized.
- Added AutoStartType option to NetworkHudCanvas.
- Improved when OnClientLoadedStartScenes is invoked. Start scenes loaded confirmation now goes through clients rather than invoking immediately when there are no global scenes.
- Added more debug outputs for when clients are kicked.
- Added Remove Defines to upgrade tool.
- Fixed upgrade tool throwing errors when Mirror was imported due to IReadOnlyCollection.
- Reverted NetworkTransform to 1.1.1 release so that it is stable until the new one is complete.
- Changed internally from obsoleted methods.
- Fixed disconnects related to the transport sending large packets.
- Fixed Unity serializing a property causing NRE when using some NetworkBehaviour.QOL properties.
- Improved Tugboat now sends on the main thread so throws are not hidden.
- Improved Authenticator example scene by removing missing script reference.
- Fixed Nightly.1 not compiling.
- Obsoleted OwnerIsValid, OwnerIsActive in favor of Owner.IsValid, Owner.IsActive. Will be removed on 2022/06/01.
- Fixed RpcLinks clashing with prediction RPCs, resulting in reader errors.
- Added DebugManager; mostly for internal use but is available for everyone.
1.1.1
2021/12/29
- Fixed prediction not working when a RPC/SyncType used the same type as prediction.
- Fixed data sometimes bundling into other ticks causing the transport to exceed MTU.
- Fixed PredictedRigidbody stalling.
- Added Warning to PredictedRigidbody inspector.
- Improved XML for FrameRate and MaximumClientMTU.
- Changed sealed ClientManager, ServerManager, TimeManager, Observermanager, NetworkObject, NetworkManager, NetworkObserver.
- Fixed IsNetworked not being set true for client spawns.
- Improved internally ServerManager.MaximumClientMTU.
- Changed channels count is now hard-coded at 2, for reliable and unreliable.
- Obsoleted GetChannelCount() from Transport. Will be removed 2022/06/01.
1.1.0
2021/12/23
- Changed Fluidity transport replaced with Tugboat.
- Fixed Tugboat Now use GetTimeout() properly.
- Fixed objects being moved into incorrect scenes when stacking.
- Fixed fields not importing for class/struct types from other assemblies.
- Added Nullable serialization.
- Added Dictionary serialization.
- Added FrameRate to ClientManager.
- Fixed null collections not serializing properly with automatic serializers.
- Added snapping to NetworkTransform.
- Improved Codegen is now 8x faster.
- Added NetworkBehaviour.ClearReplicateCache.
- Fixed RoundTripTime being slightly off.
- Fixed stackoverflow when trying to serialize a Type which had it's Type as a field.
- Changed SceneLoadData.ReplaceScenes is now an enum.
- Fixed client callbacks not running when stopping server while running as host.
- Fixed IL2CPP compile error for nullables writer.
- Fixed NetworkTransform NaN.
- TimeManager -> AddNetworkLoops moved to Initialize method.
- Fixed Tugboat sometimes not stopping server properly when stopping server only while also acting as client.
- Fixed client callbacks not running when stopping server while running as host.
- Change TimeManager AddNetworkLoops moved to Initialize method.
- Fixed XML for a few methods.
- Fixed Color not deserializing properly.
- Added FISHNET scripting define for third party developers.
- Added OnStop/StartNetwork to NetworkBehaviour callbacks.
- Added RPCs can now be virtual.
- Added ObserverManager.
- Added NetworkObserver condition override options.
- Removed StartConnection(string) from Transport in favor of Transport.SetClientAddress.
- Added ClientManager.StartConnection(address), StartConnection(address, port).
- Fixed Headless builds throwing errors with autostart server.
- Added DisallowMultiple components to several manager scripts.
- Changed internally replicate collection is now a queue.
- Added ReadPermission.Exclude owner to SyncTypes.
- Fixed custom serializers sometimes detecting a method as a custom serializer when it was not.
1.0.0
2021/12/23