Download
Download
Download the latest released preview package of Fusion SDK 2.1.0.
What's New
Open the changelog section the latest released preview package of Fusion SDK 2.1.0.
Preview
The Fusion SDK 2.1.0 is provided as development snapshots and is not intended to be used for live or released games. There may be blocker bugs and the API can change or break during the preview phase.
To ensure quick support and iterations new SDK packages will be published as nightly builds.
Projects should be upgraded to the latest 2.0.x SDK before being upgraded to 2.1.
Fusion SDK Downloads
| Version | Release Date | Download | |
|---|---|---|---|
| 2.1.0 Nightly | Oct 14, 2025 | Fusion SDK 2.1.0 Nightly Build 1390 | Release Notes |
Complimentary Downloads
| Version | Download |
|---|---|
| 2.60 | Photon Voice SDK Realtime5 2.60 |
Release Notes
2.1.0
Nightly
Build 1390 (Oct 14, 2025)
What's New
- Tick and send rates for Shared Mode are now configurable and may be set up to 32. The default tick rate of 32 and send rate of 16 remains the same
- Equality Operators and
GetHashCode()toReliableKey - Support request for a Host Migration data clean-up via
NetworkRunner.ClearHostMigrationSnapshot - New
NetworkRunner.GetResumeSnapshotNetworkObjectPlayerObjectsAPI to get access to associated Player Object NetworkIDs when running Host Migration - Reset object client prediction with
NetworkObject.ResetToLatestState() - Expose the Photon Cloud Connection RTT via
NetworkRunner.GetRealtimeRtt()
Changes
- The tick and send rates can now be configured more flexibly
- Improve the NetworkRunner generated documentation
- In Forecast Physics, when setting
Rigidbody(2D).isKinematicto true, disable physics interpolation on theRigidBody. Otherwise, this prevents smooth movement. Physics interpolation is restored whenisKinematicis set to false. This behaviour can be disabled on aNetworkTransformby settingPhysicsSettings.SetPhysicsInterpolationToDisabledWhenKinematicto false in code - Forecast Physics Drag and Mass are no longer synced. Use
[Networked]properties to sync Physics attributes manually, if required - Swap internal asserts to warning logs to confirm velocities while Forecast Physics objects are sleeping
- Physics Forecast objects may now be toggled to and from kinematic. When kinematic they are handled as Forecast disabled. Toggling kinematic is the preferred way to handle this as it synced over the network
- Better docs for
NetworkSceneManagerDefault.OnSceneInfoChanged() NetworkRunnerEditor Inspector displays ping as milliseconds- Shared mode clients can now draw their local area of interest cells with
RunnerAOIGizmos Release/RequestStateAuthorityreturns a bool; false means the call has been unsuccessful
Bug Fixes
- Fixed: Invalid warning message suggesting to use
[Networked]for float/vector properties on structs - Fixed: Error during import reporting
PhotonAppSettingsnot being loadable - Fixed:
AssetDatabase.RegisterCustomDependencyerrors on Import - Fixed: Tick-aligned RPCs are no longer unnecessarily delayed by the plugin in shared mode
- Fixed: Global
INetworkRunnerAOI Callbacks are executed on clients in Host/Server mode and not just on the Server - Fixed:
NetworkLinkedList.IndexOfreturns -1 if the value is not found - Fixed: Kinematic flag, parenting and scale now correctly applied for Physics Forecast objects
- Fixed: Checking TRSP in
ResolveAOIOverride - Fixed:
NetworkTransformSyncScale in shared mode - Fixed: NMA error when animator has 8 bool parameters or a multiple of 8
- Fixed: Global INetworkRunner AOI Callbacks are executed on clients in Host/Server mode and not just on the Server
- Fixed: Enforce Fusion Defines to all supported Build Targets
- Fixed: Realtime Protocol Fallback Operation Timeout
- Fixed: A possible disconnect when receiving a very large packet
- Fixed: RPCs are not invoked when called on state authority when
InvokeLocalMode = RpcInvokeLocalMode.ForwardToServer
Build 1240 (Aug 08, 2025)
Breaking Changes
- NetworkTransform.DisableSharedModeInterpolation option is now a flag enum value
- Prefabs and scenes need to be reimported due to baking changes
SendReliableDataToPlayer(),SendReliableDataToServer(),OnReliableDataReceived()all now passReadOnlySpan<byte>to avoid allocations
What's New
- Fusion Version Scripting Define Symbols:
FUSION_2,FUSION_2_1,FUSION_2_1_0,FUSION_2_OR_NEWER,FUSION_2_0_OR_NEWER,FUSION_2_1_OR_NEWER NetworkRunner.HasCustomPlugin- returnstrueif the game is run against a custom pluginNetworkRunner.FailedToResolveNetworkObject- an event that can be used to detect cases where[Networked]NetworkObjectproperties return null not due to underlyingNetworkIdbeing zero, but because the object was not found (due to AoI, being destroyed locally etc.)NetworkTransformsupports the use of physics i.e.RigidbodyorRigidbody2Din both Shared and Client-Server modes- Object Priority gives control over the update rate of objects
- [Shared Mode] the size of the Area of Interest cells and the size of the grid can be adjusted in the NetworkProjectConfig
- Added
RpcChannel.ReliableLargeDatato send RPCs that exceed 512 bytes. Not tick accurate NetworkRunner.RequestMasterClientReassignto promote the local player as the master client- Non-addressable scenes can now also be loaded with
NetworkRunner.LoadScene(SceneRef.FromPath(...)) - [Multipeer] Ensure we execute physics for non-default scenes last in FixedUpdate, so this as close to Unity's normal position of running the physics as possible
FusionUnityHostProfiler- Fusions integration with Unity profiler- Added
FusionMppmCommand.ExecuteAsync - MatchmakingArgumentsExtensions Utility Methods. Helps to setup MatchmakingArguments for Fusion
- Updated to Realtime SDK 5.1.5
- New Fusion Intro Sample and switch Fusion Menu to standalone
- New Fusion Hub
- NetworkRunner.LocalAddress to access the address Fusion bound to for direct connections
StartGameArgs.PlayerUniqueIdenables reconnects to maintain the samePlayerRef- Support for breakpoints: ClientServer Mode only. Working on both Multi-Peer and Unity MPPM
RpcAttribute.InvokeLocalMode. If set toRpcInvokeLocalMode.ForwardToServer, locally invokable RPCs will always be forwarded to the server/plugin from clients
Changes
- RPCs targeted at state authority do not get sent if the local client is the state authority
Failed to unwrapwarning no longer logged forNetworkBehaviourreferences that fail to resolve, regardless of the reasonFailed to find behaviouris now logged for an invalidNetworkBehaviouron a validNetworkObject- Update to Photon Realtime SDK to 5.1.7
- Clamp
PlayerCountto a valid range (1-2048) in Shared Mode - Clamp Heap
PageCountto a valid range (16-4096) in Shared Mode - Inline help icons added to config's Client/Server Tick/Send rates
- In/out packets statistics reflect packet fragmentation
- Update NanoSockets for Android to support 16 KB page sizes
- OnChangedRender now called at alpha = 0.5 to match interpolators (and reduce perceived latency)
- Unity-provided packages are ignored when looking for assets. To override, define
FUSION_ENABLE_SEARCH_IN_UNITY_PACKAGES NetworkObjectBakerusesFusion.Loginstead ofUnityEngine.Debug- Check if in Session before leaving it
- Check if connected to Photon Cloud before running disconnect
- Clicking animator bake failure error messages now shows the relevant gameObject in the hierarchy
- Keep Session running only if Host/Server disconnected by Timeout
- Leave Session before disconnect from Photon Cloud
- Removed
SendReliableDataToPlayerandSendReliableDataToServerwith byte arrays; use overloads with withReadOnlySpan<byte>instead. Avoids allocation - Editor trace logs are more granular, with following defines controlling specific streams:
FUSION_EDITOR_TRACE_IMPORT,FUSION_EDITOR_TRACE_INSPECTOR,FUSION_EDITOR_TRACE_TEST,FUSION_EDITOR_TRACE_MPPM INetPeerGroupCallbacksno longer deal withNetSendEnvelope;NotifyDatapacket type is assumed and data is passedINetworkRunnerCallbacks.OnUserSimulationMessageis now obsolete and no longer usedSimulationMessageis now obsoleteSimulation.IsStateAuthorityhandlesPlayerRef.Nonecorrectly (i.e. when it represents the host)Simulation.IsInputAuthorityhandlesPlayerRef.NoneandPlayerRef.MasterClientcorrectly- Skip opening Fusion Hub in batchmode
NetworkTRSPstate authority change error correction delta default value set to 0- Assemblies with
FUSION_FORCE_WEAVINGversion define will be weaved even if they are not included in the config'sAssembliesToWeave Fusion.Unityassembly no longer has to be added to the config'sAssembliesToWeaveNetworkObjectInterestModesmade publicNetworkObject.ObjectInterestinternal field renamed toNetworkObject.LegacyObjectInterest; it is used only to migrate to storing interest settings in object flags (handled by the baker)- Current flag versions set to
NetworkObjectFlags.V2. All prefabs and scenes need a rebake NetworkObjecteditor:Prefab Sourceis now selectableNetworkRunner.FindObject/TryFindObjectno longer throw if simulation is not started- NetworkTransform on root NetworkObject is now always placed at index 0, regardless of component order
- Join Session Log to be more clear
- Made NetworkSceneManagerDefault.OnSceneInfoChanged method virtual
- NetworkObjects that remains after shared mode authority leaves now has state authority set to PlayerRef.None
- DestroyWhenStateAuthorityLeaves prefab flag is now independent from the AllowStateAuthorityOverride
- Shared mode master client can now despawn network objects with PlayerRef.None as state authority
- Apply NetworkTransform.DisableSharedModeInterpolation in Single Mode
Removed
EngineProfiler, the old DLL-side profiler integrationFusionProfiler, the old Unity-side profiler integration
Bug Fixes
- Fixed: Empty
IntrusiveLinkedListNodeis now different than the one in a single-element list. This is done by the list always being cyclical - Fixed: Fusion plugin crashing during stress tests due to the number of RPC to be tracked in an envelope
- Fixed: VisionOS NanoSockets Static Library
- Fixed: Prefabs not being replicated until a resimulation tick occur
- Fixed: MenuItem attribute preventing builds
- Fixed: Reset re-join attempts when peer is able to join Session
- Fixed: First item in SimulationConfig (ReplicationFeatures) does not draw it's help correctly in Unity inspector
- Fixed: Object destroys not being resent in case of a packet loss
- Fixed:
OnNotifyDataLostignoring objects/destroys if there haven't been any RPCs in the packet as well - Fixed: Stop repeated Unity warning logging if simulating multi peer physics scenes by not simulating the default scene
- Fixed: RPCs targeting state authority were not being received when outside the area of interest
- Fixed: Alloc in
NetSocketHybrid.Receive - Fixed: Alloc in
TimeSeries.Median - Fixed:
NetworkArray<T>.GetRefthrowingNullReferenceException - Fixed:
NetworkBooldrawer throwingArgumentOutOfRangeException - Fixed: Editor error when interacting with invalid network objects. Header can be uninitialized and causes null ref, checking Ptr to avoid it
- Fixed: Crash in some Unity versions when opening the project in batch mode due to forced recompilation
- Fixed: [Shared Mode] data not being sent to a client if the previous packet has just been acknowledged
- Fixed: Invalid authority checks when destroying hierarchies of
NetworkObjectswith mixed authorities - Fixed: Error logged when input authority invokes RPC with state authority target mask
- Fixed: In Shared Mode, if a state authority makes a state change which races against the server removing state authority from it, then flag the original state needing to be re-sent
- Fixed: [Shared Mode] Pending local deletes being ignored when receiving object updates
- Fixed: Shutdown normally if Disconnected By PluginLogic
- Fixed: Use StartGameArgs.Config for PlayerCount, if supplied
- Fixed: Runtime spawned objects in scene are spawned/despawned multiple times in scene unload with a large amount of objects
- Fixed:
WriteUsingAreOfInterestnot terminating data block properly - Fixed: Structs state authority not checked before writing
- Fixed: Received objects state authority not checked before applying
- Fixed: Plugin not deserializing private serializable fields of base types
- Fixed: Plugin exporter adding preserved protected fields to sub types
- Fixed: Prefab table not updating if running in batchmode
- Fixed: Client not rolling objects back to latest snapshot state in certain conditions
- Fixed: Data RPCs are no longer limited to be 1MB in size
- Fixed:
SendReliableDataalways sending 1MB of data - Fixed:
SimulationPacketEnvelopenot freed on packet delivered - Fixed: BitScanReverse64 always returning one too high
- Fixed: Client sometimes not updating
LatestServerTickafter receiving a new snapshot - Fixed: Unable to update Session properties after Host Migration
- Fixed: RPCs failing to send arrays
- Fixed:
NullReferenceExceptionwhen trying to spawn a prefab withNetworkObjectreference without object provider being set - Fixed:
Simulation.Add/RemoveAlwaysInterestednot working in Shared Mode - Fixed: Incorrect reset/jump of time on proxy objects after a frame of exceptionally long duration
- Fixed: Lag Compensation box overlap problem with hitbox Y rotation
- Fixed: A sequence of lost packets resulting in a partial object data being sent
- Fixed: Lag Compensation box overlap having problems with hitboxes offset
- Fixed: Unable to spawn during StateAuthorityChanged callback on MasterClientObjects
- Fixed: Intro Sample Menu Dependency
- Fixed: Lag compensation layer masks being ignored with subtick accuracy
- Fixed: Odin drawers not finding underlying fields
- Fixed:
NetworkObject.IsSpawnablesetter not working - Fixed: RPCs not being forwarded to stateauth (exclusive)
- Fixed: RpcSerializer offset error
- Fixed: Plugin can override state auth data again
- Fixed: Invalid copy of state-auth data for transforms
- Fixed: Not being able to send changes to plugin-spawned objects
- Fixed: RpcInfo.Source in single player mode now correctly points to the source player
- Fixed: NetworkRunner.SessionInfo Support for Single Player