161 lines
11 KiB
Plaintext
Raw Normal View History

2025-09-24 11:24:38 +05:00
Photon Fusion Advanced KCC Addon - Release History
Last tested with Fusion SDK 2.0.4 Stable 880
2.0.18
- In FixedUpdateNetwork KCC now controls Ridgidbody using Rigidbody.MovePosition() instead of setting Rigidbody.position directly (still used on client prediction reset).
- KCC.SynchronizeTransform() and KCC.SetPosition() now have 'moveRigidbody' argument which allows to choose whether to synchronize position using Rigidbody.MovePosition() or directly assign Rigidbody.position.
- Fixed cleanup of KCCData.RealVelocity, KCCData.RealSpeed and KCCData.HasTeleported the next tick after setting KCC inactive.
- Fixed KCCData.RealVelocity, KCCData.RealSpeed value for render extrapolated move (when delta time is too small for the movement to be fully predicted).
2.0.17
- KCC editor scripts compatibility with Fusion SDK 2.0.2.
2.0.16
- Improved teleport - the information is now reliably synchronized over the network.
- Removed TeleportThreshold from KCC Settings.
- Max prediction error and anti-jitter distance check is now set to 1 meter.
- Data is not restored from network buffer for simulated objects with RenderTimeframe.Remote.
- Fixed KCCData.HasTeleported and KCCData.HasJumped for proxy objects (reliable implementation based on counters).
- Fixed KCCData.HasTeleported and KCCData.HasJumped in render interpolated movement - they are now set only once in first Render after FUN in which teleport/jump happened.
- KCC.SetPosition() now accepts optional parameters 'teleport' and 'allowAntiJitter'.
- KCC resets position and look rotation to values from FUN in render interpolated movement.
2.0.15
- Increased range of CCD radius multiplier from 25-75% to 10-90%.
- Improved precision of collision resolver for specific cases (corridors, 3 collisions with almost perpendicular penetration vectors).
- Refactoring of penetration correction algorithm, improved performance scalability.
- Ground snap processor now uses a copy of main KCCData for ground detection to prevent side effects.
- KCCPhysicsUtility.CheckGround() now returns also ground position.
- Added PenetrationSolver utility for debugging depenetration algorithm.
- Fixed proxy collider being destroyed on clients when KCC.IsActive is false.
2.0.14
- Fixed synchronization of processor prefabs with non-initialized network type id.
2.0.13
- Improved multi-collider penetration correction.
- Fixes for StepUpProcessor. Now it requires horizontal movement push-back to activate.
- Fixed KCC.IsPredictingLookRotation property return value for simulated proxies.
- Fixed KCC inspector values (using RenderData for non-simulated proxies).
2.0.12
- KCCSettings.ForcePredictedLookRotation is now synchronized over network by default and affects input authority only.
- Fixed teleport detection in network transform only interpolation.
- Look rotation is now snapped when teleport is detected.
- Removed temporary fix for incorrect interpolation data - fixed in 2.0.0 Stable 834.
2.0.11
- Added TerrainTreeProcessor which resolves collisions with terrain tree colliders by running extra capsule-cast after move step. This removes the need to bake tree colliders.
2.0.10
- KCC collider is now also controlled by KCC.IsActive. If the flag is set to false, the collider will be despawned.
- Added KCC.SetLookRotation() and KCCData.SetLookRotation() with min/max pitch look rotation.
- Removed KCC.GetInterpolationTimeframe(), Object.RenderTimeframe is used instead.
- Removed RenderTimeframe override on proxy interpolation.
- Removed KCC.Interpolate() methods, interpolation is now handled exclusively by render update.
- Fixed PlatformProcessor to not use RenderTimeframe of the KCC.
- PlatformProcessor is no longer force simulated - removed SetIsSimulated(true) and replaced by PlatformProcessorUpdater callbacks.
- PlatformProcessor simulation state (Object.IsInSimulation) is now synchronized with KCC object.
2.0.9
- Compatibility with Fusion SDK 2.0.0 RC5.
2.0.8
- Added `bool trackInitialOverlaps` to KCC.SphereCast() and KCC.CapsuleCast(). This parameter controls if the shape-cast result contains initially overlapping colliders.
- Added input accumulators - FloatAccumulator, Vector2Accumulator, Vector3Accumulator.
- These classes support accumulation of raw values, their smoothing and tick-aligned delta consumption.
- Typical use-case is accumulation of mouse delta passed through a network struct.
- The tick-aligned accumulation ensures that snapshot interpolated value in Render() will be smooth.
- Fixed stuck on the edge when finishing step-up.
- Fixed downward sphere cast check in step-up.
- Added KCC.DrawSphere() and KCC.DrawCapsule() for debug purposes.
2.0.7
- Added KCC.ResolveRenderPosition() / KCC.ResolveRenderLookRotation() / KCC.ResolveRenderPositionAndLookRotation()
- Returns position of a child object and look rotation of the KCC at the time of Render() with given Runner.LocalAlpha.
- This is useful to get correct camera origin when making lag compensated casts.
- Teleport, Anti-jitter, Render prediction/interpolation is solved out of the box.
- The child object should have only minimal translation in horizontal axis and is best option for first person camera handles.
- Added KCCTransformSampler.
- This utility can be used to record state of child object in fixed and render updated and get render position and rotation similar to KCC.ResolveRenderPositionAndLookRotation().
- The main difference is that the game object can have any local offset to KCC root and is best option for third-person camera handles.
- Optimized check for networked collisions.
- Removed keep-alive from platform processor.
- KCC.RayCast(), KCC.SphereCast() and KCC.CapsuleCast() now return hits sorted by distance.
2.0.6
Important
============================================================
! KCC proxy is no longer simulated by default. If you call Runner.SetIsSimulated(Object, true) from other script, the KCC will behave as predicted.
! Platform processor still requires to be simulated on all clients using Runner.SetIsSimulated(Object, true). It is recommended to parent under KCC with separate NetworkObject component.
Changes
============================================================
- Added gizmos when KCC is selected.
- Added IKCCProcessor.IsActive() - Controls whether the processor is active in current execution loop and can be used to filter out processor early.
- Added KCCSettings.ForcePredictedLookRotation - skips look rotation interpolation in render for local character and can be used for extra look responsiveness with other properties being interpolated.
- Added KCCSettings.ProxyInterpolation - controls interpolations of networked properties from network buffer to KCCSettings and KCCData, and propagation to Collider, Transform and Rigidbody components.
- Added KCCSettings.CompressNetworkPosition - optional network traffic reduction for non-player characters. Full precision position is synchronized by default.
- Added KCCInterestProxy - serves as an area of interest position proxy for a network object under KCC. This component is not synchronized to clients.
- Added NetworkObject to PlatformProcessor prefab - it is now required for processor proxy simulation.
- Removed interpolation of KCCSettings and networked interactions, they are now set to latest snapshot.
- Removed Runner.SetIsSimulated(Object, true) from KCC - proxies are no longer simulated.
- Removed EKCCProxyBehavior from settings - now the fixed simulation is driven by Runner.SetIsSimulated().
- Removed optional proxy interpolation in fixed update.
- Removed performance timers. The performance is now measured exclusively using Profiler.
- Removed networked keep-alive flag.
- Removed replication modes.
- Overall cleanup of debug properties.
- Performance optimizations for proxies.
- Platform processor and other performance optimizations.
2.0.5
- Fixed projection of depenetration vector, resulting in jitter on slopes.
2.0.4
- Added [HideInCallstack] attribute to custom log methods.
- Removed [NetworkBehaviourWeaved(-1)] attribute from KCC class - this fixes TeleportRPC().
2.0.3
- Changed root namespace from Fusion.KCC to Fusion.Addons.KCC.
- Added new argument to processor suppress methods - it is now allowed to suppress processors in all future stages.
- Added support for SuppressProcessorsExcept<T>() and other similar variants - skips execution of all pending processors except processors of type T.
- Added support for suppressing processors from all future stages via method argument (default is false).
- It is now guaranteed a processor is executed only once during a stage even if it is registered in multiple collections (Local/Modifier/Collision/...).
- EnvironmentProcessor.SuppressOtherProcessors() is now protected virtual which allows applying custom suppression rules after the base stage is done.
- EnvironmentProcessor now sets KCCData.KinematicSpeed from ISetKinematicSpeed stage instead of IPrepareData.
- Fixed interpolation in PlatformProcessor.
- Minor performance optimizations.
2.0.2
- Fixed state reset on predicted proxies.
- Disabled proxy prediction/interpolation in fixed update.
- Added KCC.RestoreState() to support manual reset of state from network buffer.
- Network traffic and performance optimizations.
- Added support for Move and Rotate handles.
- Added KCC.Interpolate() methods for interpolation with custom source/timeframe/alpha.
- Interpolation now respects Object.RenderSource and Object.RenderTimeframe and uses correctly FUN/Render KCCData instances.
- KCCSettings.Processors type changed to array of UnityEngine.Object. From now any IKCCProcessor object can be linked (prefab, child object, scriptable object).
- Step-Up processor - min push-back distance required for activation can be configured on prefab.
- Step-Up processor - added option to require target surface to be walkable (angle <= KCCData.MaxGroundAngle) before the processor activates.
- Step-Up processor - added option to update collision hits with new overlap query when it is active.
- Ground-Snap processor - added option to update collision hits with new overlap query when it is active.
- Platform processor - major performance and usability improvements for platforms. The only requirement now is that the script implementing IPlatform must execute before PlatformProcessor.
- Platform processor - separated world => platform and platform => space transition durations.
- Platform processor - added support for platform rotation.
- Platform processor - execution of all scripts that implement IPlatform must happen before PlatformProcessor. This is a hard requirement to get everything smooth.
- Added ScriptableKCCProcessor - default KCC processor implementation based on ScriptableObject.
- Added NetworkTRSPProcessor - default KCC processor implementation based on NetworkTRSP.
- Added more data to StatsRecorder.
- Added comments to step-up, ground-snap and platform processors for easier implementation of custom modifications.
- Added default provider prefabs.
Version 2.0.1
- Added Force Single Overlap Query option to KCC settings. This is a performance optimization for non-player characters at the cost of lower movement quality.
- Profiler calls replaced by profiler markers.
- Performance optimizations.
Version 2.0.0
- Initial release.