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
.
Downloads
Version | Release Date | Download | |
---|---|---|---|
2.1.0 Nightly | 8月 08, 2025 | Fusion SDK 2.1.0 Nightly Build 1240 | Release Notes |
Release Notes
2.1.0
Nightly
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
- returnstrue
if the game is run against a custom pluginNetworkRunner.FailedToResolveNetworkObject
- an event that can be used to detect cases where[Networked]
NetworkObject
properties return null not due to underlyingNetworkId
being zero, but because the object was not found (due to AoI, being destroyed locally etc.)NetworkTransform
supports the use of physics i.e.Rigidbody
orRigidbody2D
in 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.ReliableLargeData
to send RPCs that exceed 512 bytes. Not tick accurate NetworkRunner.RequestMasterClientReassign
to 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.PlayerUniqueId
enables 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 unwrap
warning no longer logged forNetworkBehaviour
references that fail to resolve, regardless of the reasonFailed to find behaviour
is now logged for an invalidNetworkBehaviour
on a validNetworkObject
- Update to Photon Realtime SDK to 5.1.7
- Clamp
PlayerCount
to a valid range (1-2048) in Shared Mode - Clamp Heap
PageCount
to 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
NetworkObjectBaker
usesFusion.Log
instead 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
SendReliableDataToPlayer
andSendReliableDataToServer
with 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
INetPeerGroupCallbacks
no longer deal withNetSendEnvelope
;NotifyData
packet type is assumed and data is passedINetworkRunnerCallbacks.OnUserSimulationMessage
is now obsolete and no longer usedSimulationMessage
is now obsoleteSimulation.IsStateAuthority
handlesPlayerRef.None
correctly (i.e. when it represents the host)Simulation.IsInputAuthority
handlesPlayerRef.None
andPlayerRef.MasterClient
correctly- Skip opening Fusion Hub in batchmode
NetworkTRSP
state authority change error correction delta default value set to 0- Assemblies with
FUSION_FORCE_WEAVING
version define will be weaved even if they are not included in the config'sAssembliesToWeave
Fusion.Unity
assembly no longer has to be added to the config'sAssembliesToWeave
NetworkObjectInterestModes
made publicNetworkObject.ObjectInterest
internal 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 NetworkObject
editor:Prefab Source
is now selectableNetworkRunner.FindObject/TryFindObject
no 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
IntrusiveLinkedListNode
is 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: Rst 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:
OnNotifyDataLost
ignoring 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>.GetRef
throwingNullReferenceException
- Fixed:
NetworkBool
drawer 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
NetworkObjects
with 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:
WriteUsingAreOfInterest
not 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:
SendReliableData
always sending 1MB of data - Fixed:
SimulationPacketEnvelope
not freed on packet delivered - Fixed: BitScanReverse64 always returning one too high
- Fixed: Client sometimes not updating
LatestServerTick
after receiving a new snapshot - Fixed: Unable to update Session properties after Host Migration
- Fixed: RPCs failing to send arrays
- Fixed:
NullReferenceException
when trying to spawn a prefab withNetworkObject
reference without object provider being set - Fixed:
Simulation.Add/RemoveAlwaysInterested
not 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.IsSpawnable
setter 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