Download
The Fusion SDK 2.1.0 is provided as development snapshots and is not suitable to be used for live or released games. There may be blocker bugs and the API can change or break during the preview phase. Preview builds can introduce breaking changes between the Client SDK and Photon Cloud. This SDK build can stop working at any time and you will be required to update to the latest version.
Currently there is a compatibility issue between Fusion 2.1 and the Meta Core XR SDK package (com.meta.xr.sdk.core). We have instructions for a temporary workaround here
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 Preview | 12月 04, 2025 | Fusion SDK 2.1.0 Preview Build 1543 | Release Notes |
| 2.1.0 Preview | 12月 02, 2025 | Fusion SDK 2.1.0 Preview Build 1521 | Release Notes |
| 2.1.0 Preview | 11月 27, 2025 | Fusion SDK 2.1.0 Preview Build 1513 | Release Notes |
Matching Downloads
Voice for Fusion 2.1 (not compatible with Fusion 2.0)
| Version | Download |
|---|---|
| 2.62 | Photon Voice SDK Realtime5 2.62 |
Release Notes
2.1.0
Preview
Build 1543 (Dec 04, 2025)
What's New
NetworkTransform.TriggerLocalOverridesExtrapolated()On a proxy, collisions cause the local physics to be favoured over the remote extrapolation. This triggers that effect manually, which can be useful for sudden actions e.g. proxy prediction of e.g. jumps
Changes
- Move Forecast sleeping with non-zero velocity warnings to the Forecast trace channel
Bug Fixes
- Fixed: Correct key indexing in input type lookup, fixes issue where GetInputs would not return false when no INetworkInput was set
Build 1521 (Dec 02, 2025)
Changes
- Improve compatibility with older (V1) baked prefabs
- Never deliver RPCs on resim ticks, only on forward ticks. This enables sending a reply RPC within the context of the the received RPC
Build 1513 (Nov 27, 2025)
What's New
- PhysicsBody access on NetworkTransform
- Assembly Tags to mark builds as Preview or Stable
- Warning log when running Preview builds
- NetworkRunner.BuildStage, which returns the Build Stage (Preview/Stable)
Changes
NetworkObjectFlags.GetVersionextension method returnsNetworkObjectFlagsnow (was: int)- Prefabs baked with V1 flags version are still valid and do not cause a runtime error
- If a prefab can't be baked due to being in a read-only location but it still has valid flags, no error is raised
- Allow time synchronization settings to be overriden in Shared Mode, achievable via NetworkProjectConfig.TimeSynchronizationOverride
- Improve NetworkObjectFlags documentation
- Priority is now SendPriority, for clarity
- Make the underlying
RigidBody(2D)accessible from AbstractPhysicsBody. Add AngularDrag access - Update to Photon Realtime SDK to 5.1.9
Bug Fixes
- Fixed: In Shared Mode stop marking snapshots with the received servers tick, instead use the latest changed tick for the given object. This stops a tick mismatch between the render Timeline and the snapshots returned from NetworkBehaviour.TryGetSnapshotsBuffers
- Fixed: When having send rate set to 4 times a second ensure the timeline idle detection code does not execute
- Fixed: Stop interpolation jumping object momentarily to wrong location when using Forecast and switching Kinematic on and off
- Fixed: CanInterpolate now always interpolates when Forecasting is disabled as well as for State Authorities when kinematic is enabled
- Fixed:
NetworkObjectBakerincorrectly detecting the mainNetworkTransformif there was aNetworkTransformin a childGameObjectwithout aNetworkObject - Fixed: StateAuthority changes to rigidbody interpolation were not being correctly mirrored on other clients
- Fixed: NetworkTRSP is now abstract, as documented
- Fixed: Connection fallback to Relay timing out after the first handshake
Build 1460 (Nov 12, 2025)
What's New
- Physics, FSM and Interest Management addon to hub
NetworkedAttribute.AllowPrediction- if set tofalse, only state authority can write to the property; writes from input authority and proxies are ignored (value will not be changed)NetworkObjectTypeId.FromPrefabNestedObjectandNesteorkObjectTypeId.IsPrefabNestedObject
Changes
- NetworkBehaviourBufferInterpolator provides explicit functions for NetworkBool and obsoleted explicit .bool functions with a warning to discourage use of bool in Networked Properties
- [SharedMode] Plugin can invoke and send any Rpc and is not limited by
Sources NetworkObjectReleaseContext.IsNestedObjectmade obsolete- Nested objects no longer have their type set to invalid
Bug Fixes
- Fixed: Connection fallback to Relay timing out after the first handshake
- Fixed: Fusion Intro link in the Hub advanced documentation
- Fixed: The State Authority having state overwritten if it changed state immediately upon gaining State Authority, particularly with high ping
- Fixed: Lag compensation internal AABB constructor fix assignment order
- Fixed: NetworkRunner.GetAvailableRegions always throws a
OperationStartException: Must be inside a room - Fixed:
MissingMethodExceptionraised in Unity 6000.3 beta - Fixed: Unity 6000.3 beta obsolete warnings in
NetworkProjectConfigImporter - Fixed: [Plugin]
[Rpc, PreserveInPlugin]combination resulting in errors being logged - Fixed:
FusionPluginNetworkTypesExporternot exportingINetworkInputtypes - Fixed: State auth request handling did not update auth lists; fixed that
- Fixed:
NetworkTransformarea of interest override was being overwritten internally - Fixed: Warnings due to usage of
Fusion.Nativein the weaver
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