XRoom_Unity/Assets/fusion_vr_host_release_history.txt
2025-05-31 10:20:20 +03:30

549 lines
21 KiB
Plaintext

# 2.0.0
For a more in-depth overview over what changed check: [Coming from Fusion 1.0](https://doc.photonengine.com/fusion/v2/getting-started/migration/coming-from-fusion-v1)
**Breaking Changes**
- Renamed addressable define from FUSION_USE_ADDRESSABLES -> FUSION_ENABLE_ADDRESSABLES
- `NetworkRunner.Spawn` method family now uses `NetworkSpawnFlags` parameter instead of bool flags
- PlayerRef / SceneRef no longer directly cast to/from int
- `INetworkkObjectPool` is now `INetworkObjectProvdier` and changed parameters of acquire and release functions
- `NetworkRunner.AddSimulationBehaviour` is now internal
- Removed ability for `SimulationBehaviours` to exist on networked objects, only `NetworkBehaviours` are used on `NetworkObjects` now.
- `(int)PlayerRef` -> `PlayerRef.PlayerId` and `PlayerRef.IsValid` -> `PlayerRef.IsRealPlayer`
- `(int)SceneRef` -> `SceneRef.FromIndex`
- `NetworkObject.Guid` -> `NetworkObject.NetworkTypeId`
- `Runner.Simulation.X` APIs now under `Runner.X`
- `INetworkSceneManager` interface API changed. `Runner.SetActiveScene` -> `Runner.LoadScene`
**What's New**
- `ChangeDector` that allows to detect changes for `NetworkProperties` in `Render`, `FUN` or at custom intervals.
- `PropertyReaders` and `TryGetSnapshotBuffers`, to allow for custom interpolation and previous networked property state.
- `NetworkBehaviourBufferInterpolator` for simplified interpolation for built-in types and custom registered types.
- LagCompensation support for 2D physics.
- Server/Client Simulation/Send/ rates can now be adjusted individually in host/server mode. Fixed to 20 for shared mode.
- StartGameArgs.UseDefaultPhotonCloudPorts
- NetworkSceneManager now supports loading addressable scenes.
- NetworkSceneManager now supports additive loading of scenes.
- Added Last Received Tick on the network object runtime debug info
- `NetworkSceneManagerDefault.GetMultiplePeerTargetScene` - ability to override the logic of choosing a root scene object in MP mode
- `NetworkProjectConfig.EnqueueIncompleteSynchronousSpawns` - if enabled, synchronous incomplete spawns (Addressables etc.) get enqueued instead of throwing an exception
- `NetworkObjectAcquireResult.Ignore` - if object provider returns this, Fusion will no longer try to acquire an instance for a state object
- `SceneRef.FromPath` - creates a scene ref based on a hash of a path. Useful for easily creating `SceneRefs` of Addressable scenes
- `NetworkPrefabId` constructor removed, use `FromIndex` or `FromRaw` instead
- AOI `INetworkRunnerCallbacks` for when objects enter and exit AOI. `OnObjectEnterAOI`, `OnObjectExitAOI`
**Changes**
- Shared mode ticks are now aligned between clients.
- `NetworkPhysics` are now provided via a separate addon that comes as part of the Fusion package.
- Hitbox buffer size in NetworkProjectConfig is now in milliseconds instead of ticks.
- `NetworkSceneManagerDefault` works with Addressables 1.19.x, but will throw at an attempt of loading an addressable scene with local physics mode
- SimilationBehaviours are now found on children of Runner. Disabled behaviours are ignored
- INetworkRunnerCallbacks can be found on children of Runner
- BehaviourMeta in `NetworkProjectConfig` gets refreshed whenever relevant script's execution order change
- RPCs in Shared mode are no longer treated as if they were always declared with `TickAligned=false`
- `Render` is now invoked right after `MonoBehaviour.Update` (previously: before `MonoBehaviour.LateUpdate`)
- `RpcAttribute.InvokeResim` is now deprecated and no longer used
- Updated Photon Realtime SDK to v4.1.6.23
- `NetworkSceneManagerDefault`: if no scenes are loaded in MP mode, an inactive limbo root will be created to host any new objects. Once a "real" scene has been loaded, objects are going to be evicted from the limbo
- JoinSessionLobby to include `useDefaultCloudPorts` argument
- `InitializeNetworkObjectAssignRunner` needlessly made NBs owned twice
- Completely removed predictive spawns
- `SimulationBehaviours` are no longer Unity-null and `isActiveAndEnabled` checked when invoking callbacks. Flags set in OnEnable/OnDisable/OnDestroy are used instead. User code does not need any patching, any flag setting is handled by the weaver
- `NetworkConditions` fields are hidden unless it is enabled
- Look of inline help and script header is now driven by `FusionEditorSkin.guiskin`
- Renamed `CastEnumAttribute` to `DisplayAsEnumAttribute`; it also handles long/ulong fields now
- `DrawIf/WarnIfAttributes` can point to methods/properties, as long as they're top-level
- `INetworkSceneManager.OnSceneInfoChanged` is now always invoked right before `IBeforeTick`
- `NetworkSceneManagerDefault` reports itself busy until first `OnSceneInfoChanged` arrives
- `NetworkSceneManagerDefault` will move a spawned object to DontDestroyOnLoad in Multiple Peer mode if there are no scenes loaded for a runner. A warning explaining what happened will be emit as well
- `NetworkObjectProviderDefault` no longer fails for synchronous acquires that fail to return an instance immediately
- Simplified `NetworkSceneMangerDefault` - always uses dynamic addressable scenes list (finds scenes under a given label)
**Removed**
- Removed `InterpolationTarget` from `NetworkTransform`. The object with the `NetworkTransform` is now interpolated directly.
- Removed `[Accuracy]` and `[AccuracyRange]` range attributes. Accuracy is no longer supported
- Remove `PlayerRefSet` from `RpcInvokeInfo`. Since PlayerRef is no longer a linear index, fixed-size collection is not possible.
- Removed `[OrderBefore]` and `[OrderAfter]`. Use Unity execution order instead.
- Removed predicted Spawning and spawn keys. Predicted spawning is no longer supported.
- Removed Delta Snapshots state transfer mode.
**Bug Fixes**
- Fixed: Angle AngleLerp method now returns correct value if a and b are equal
- Fixed: Drag and drop into collections being broken on custom Photon behaviours
- Fixed: SharedMode: some destroys initiated by the master client not being propagated
- Fixed: `NetworkBehaviour.Id` returning `default` in `Despawned`
- Fixed: `NullReferenceExceptions` when accessing `NO` properties without it being fully initialized
- Fixed: `AssertException` when initializing `NO` with multiple nested sub hierarchies
- Fixed: `NetworkRunner.GetRunnerForScene` not working for single-peer with multiple scenes
- Fixed: Runner Visibility was not accounting for non-NB child components (like audio listener)
- Fixed: Weaving of `NetworkBehaviour<T>` and subtypes
- Fixed: Issue with SetSimulationState allowing you to set none state auth object as simulated in shared mode
- Fixed: "return pattern of RpcInvokeInfo not recognised" error when using RpcInvokeInfo
- Fixed: `Render` invoked for disabled `NetworkBehaviours`
- Fixed: "Apply" button doing nothing when entering Play mode with `NetworkProjectConfig` having unsaved changes
- Fixed: _masterClient and RuntimeConfig.MasterClient were not assigned until there was a client switch
- Fixed: Inspector errors in `FusionStats`.
- Fixed: Scale handling of NetworkTransform
- Fixed: Issue with remote objects always spawning at 0,0,0 with NetworkTransform
- Fixed: Assert error on shutdown because object/behaviours weren't in simulation list
- Fixed: `INetworkSceneManager.OnSceneInfoChanged` being called inconsistently in shared mode
- Fixed: Set PlayerTTL to 0 to avoid delay in reconnect
- Fixed: `Simulation.IsStateSource` recognizes host player
- Fixed: `NetworkObject.GetRpcSourceAuthorityMask`
- Fixed: `NetworkObjectTypeId.Equals`
- Fixed: `StackOverflowException` when accessing `NetworkObject.Id`
- Fixed: Invalid user-types assembly name
- Fixed: Assertion when shutting down a runner that has despawned a nested object right before the shutdown
- Fixed: ILWeaver: `FieldAccessException` in RPCs
- Fixed: `SceneRef.ToString` throwing for path hashes
- Fixed: Scene info not being read properly by `Simulation.GetSceneInfo`
- Fixed: `INetworkSceneManager.OnSceneChanged` being called repeatedly for clients
- Fixed: Prefab order being locale-dependent
- Fixed: All folders ending with `Resources` incorrectly recognized as `Resources` folders, making some of the contained prefabs unspawnable
- Fixed: "unresolved external symbol" runtime errors if an abstract class deriving from `NetworkBehaviour` has no `[Networked]` properties
## RC
### Build 801 (Dec 12, 2023)
**Changes**
- `NetworkRigidbody` XML Docs
- `NetworkProjectConfigImporter` refreshes now whenever a new `NetworkObject` prefab is created, a prefab is moved or deleted
- NetworkRigidbody EnsurerHasRunnerSimulatePhysics() changed from private to protected
- _deferredTeleport field in NetworkRigidbody changed from private to protected
**Removed**
- Obsolete API
**Bug Fixes**
- Fixed: NetworkCharacterController Spawn at 0,0,0
- Fixed: Issue with full consistency not acting properly when ReplicateTo was being used
- Fixed: NetworkObjects not being replicated on clients correctly when scheduling only enabled
- Fixed: Revert & Apply buttons always disabled in `NetworkProjectConfig` inspector
- Fixed: Odin: inspector errors for `[Networked]` properties when using `[FoldoutGroups]`
Dev: Imported PhotonUnityEditorCommon@f81d7ff1bfa4ef962bd64e664a3c50a44e922404
- Fixed: FusionStats NetworkObject stats would always fail to find stat data, now will correctly retry until found
- Fixed: NetworkRigidbody fixed so State Authority changes in Shared Mode retain Rigidbody velocity on the new State Authority
- Fixed: Timming issue with master client objects state authority changed detection
- Fixed: NetworkRigidbody now un-dirties the interpolation target when SetInterpolationTarget(null) is called. This prevents null errors due to setting the target to null at runtime
- Fixed: Test Suit Platforms
- Fixed: `NullReferenceException` thrown by `NetworkProjectConfigImporterEditor` if initial prefab table import fails
- Fixed: NetworkRigidbody3D ResetRigidbody() now checks for isKinematic before reseting velocity
- Fixed: Change detector having incorrect ticks set
- Fixed: "InvalidOperationException" during connection establishing on server
- Fixed: Allocations in Timelines.Update
- Fixed: Allocations in Client.GetInput
- Fixed: Invalid properties when NetworkRunner is Uninitialized
- Fixed: NRB handling of unparented Kinematic RBs now always applies pos/rot to Transform rather than Rigidbody
- Fixed: Fusion.Addon.Physics assembly correctly renamed in NetworkProjectConfig.AssembliesToWeave defaults
- Fixed: Editor freezing on prefab rename workaround applied to Unity 2022.3 as well
### Build 797 (Nov 07, 2023)
**What's New**
- UsePreciseRotation option to NRB
- Expose EncryptionMode via FusionAppSettings
**Changes**
- Calls to Load/Unload scene are correctly deferred until the initial info is processed
- Improved error messages for `SerializedPropertyUtilities.FindPropertyOrThrow`
**Removed**
- IPredictedDespawnBehaviour
**Bug Fixes**
- Fixed: NRB was not pushing position and rotation values to the transform when SyncParent was disabled
- Fixed: "Shutdown" button on NetworkRunner inspector now implemented
- Fixed: NetworkTransform throwing null ref on disabled child object
- Fixed: `NetworkProjectConfig` handles initial import external errors better, without spamming with errors
## Nightly
### Build 795 (Nov 04, 2023)
**What's New**
- Bool session property
- Ability to use cached best region summary to speed up runner startup
**Changes**
- NRB's UsePreciseRotation field made public
- Made NRB Teleport handling methods virtual
- Added UsePreciseRotation option to NRB
- Photon Realtime SDK to 4.1.7.2
**Removed**
- StartGameArgs.DisableClientSessionCreation
**Bug Fixes**
- Fixed: NRB was not pushing position and rotation values to the transform when SyncParent was disabled. Could produce some janky un-parenting results for any nested NOs that were using that NRB Object as their parent
- Fixed: NRB CopyToEngine handling of isParented. Was always treating object as parented when SyncParent was enabled
- Fixed: Added a workaround for Unity 2023.1 crashing when prefab contents are loaded for moved prefabs in asset postprocessor
- Fixed: Odin - HideArrayElementLabelAttribute handling
### Build 785 (Oct 18, 2023)
**Bug Fixes**
- Fixed: Network transform parent sync being lost because of interpolation
### Build 782 (Oct 12, 2023)
**Changes**
- Expose EmptyRoomTtl via AppSettings
- Replaced usages of transform.SetLocalPositionAndRotation in NRB, as Unity repeatedly added/removed that method from API
### Build 780 (Oct 07, 2023)
**What's New**
- Restored `NetworkProjectConfigUtilities.SaveGlobalConfig`
**Changes**
- Made NetworkRigidbody CopyToBuffer() and CopyToEngine() methods virtual
### Build 779 (Oct 06, 2023)
**What's New**
- FUSION2 to Scripting Define Symbols
- Expose EncryptionMode via FusionAppSettings
- FusionAppSettings to expose some Realtime Settings
**Changes**
- Added NetDisconnectReason to OnDisconnectedFromServer callback
**Bug Fixes**
- Fixed: Added Null Check to IBeforeAllTicks on NetworkRigidbody. Was possible for InterpolationTarget to become null since last Render() and throw a null error
- Fixed: Missing CancellationToken on JoinSessionLobby
### Build 777 (Oct 04, 2023)
**What's New**
- Error message when reutilizing a NetworkRunner
**Bug Fixes**
- Fixed: `NPT.Unload` not unloading anything
### Build 776 (Oct 03, 2023)
**Changes**
- Weaver: floats and vectors can now be ref-returned
### Build 775 (Sep 30, 2023)
**Changes**
- SimulationBehaviourUpdater no longer uses NPC.Global, using a passed instance instead
**Bug Fixes**
- Fixed: Removed NRB Physics.autoSimulation usage for Unity 2022.3 and newer
### Build 774 (Sep 29, 2023)
**What's New**
- `NB.IsEditorWritable` (internal property)
**Changes**
- [Networked] properties backing fields receive [DrawIfAttribute], to make sure they are read only for clients without state authority
**Bug Fixes**
- Fixed: `UnitySurrogateBaseWrapper` not being a standalone script warning
- Fixed: `FailedToCreateInstance` error for when less than 64 prefabs are registered
### Build 772 (Sep 27, 2023)
**Changes**
- Deferred runner `Initialized` invoke and renamed to `OnGameStart`
- If RPC returns `RpcInvokeInfo`, no error will be logged if target or flags prevent the RPC from being sent
- `TickRate` properties fall back to 0 instead of infinity if rates are 0 too
- `StateReplicator` throws `AssertException` in some erroneous scenarios even in Release builds
**Bug Fixes**
- Fixed: `IndexOutOfRangeException` on reimporting NetworkPrefabTable
### Build 771 (Sep 26, 2023)
**What's New**
- NetworkRigidbody classes added handling for StateAuthorityChanged in Shared Mode
- NetworkPrefabTable ref tracking
- Huge improvements to `Network Prefabs Inspector`
**Changes**
- Removed DisabledAutoSyncTransforms field from RunnerSimulatePhysics component. Now will just display and inspector warning if AutoSyncTransforms is enabled in unity Physics settings
**Bug Fixes**
- Fixed: FusionBootstrap: trying to spawn clients in Single mode if set to Automatic
- Fixed: `IsNested` flag cleared prematurely in some destroy scenarios
- Fixed: `IsNested` flags never assigned to a remote nested object
### Build 768 (Sep 23, 2023)
**Changes**
- Photon Realtime SDK to 4.1.7.0
### Build 766 (Sep 21, 2023)
**What's New**
- NetworkPrefabTableInspector ("Fusion/Windows/Network Prefabs Inspector")
**Changes**
- Quantum and Fusion use common code for loading dynamic assets now. Stage is set for finally being able to track spawned prefab instances
- `SimulationBehaviourUpdater` no longer uses global config"
This reverts commit 3afe58fd7b35c0d790407cf7ccf71a7d1e0e668d
- `SimulationBehaviourUpdater` no longer uses global config
- `NetworkPrefabTable.TryAdd` accepts invalid guids now; it simply won't map that guid to the prefab id, meaning that it can only be accessed with `NetworkPrefabId`
**Bug Fixes**
- Fixed: Pending prefab import was a legacy thing
### Build 764 (Sep 19, 2023)
**What's New**
- Lag Compensation Capsule Hitbox
### Build 761 (Sep 15, 2023)
**Bug Fixes**
- Fixed: NPC parse-related error on importing a package
### Build 759 (Sep 13, 2023)
**Changes**
- `ILogger` string parameter changed to `object` (from `string`)
- `FusionUnityLogger.LogException` will first log the exception type and then spawn a thread to rethrow it (if UNITY_EDITOR is defined). This ensures double clicking on a log entry takes you to the throw location
**Bug Fixes**
- Fixed: Spawn position and rotation values pushed to NRB rigidbody in Spawned(), ensuring RB values are immediately correct before first simulation
- Fixed: NetworkTransform now uses a public getter for the SimulationConfig rather than an internal one. NT implementation can be copied as is as a basis for custom implementations in Unity
### Build 758 (Sep 12, 2023)
**What's New**
- NetworkRigidbody added missing AOI enabled check. Root NetworkTRSP components no longer required for parenting if AOI is disabled
**Changes**
- NetworkTRSP.IsMainTRSP setter is now protected
### Build 756 (Sep 08, 2023)
**Bug Fixes**
- Fixed: Explicit interest in shared mode
### Build 754 (Sep 06, 2023)
**What's New**
- `NetworkRunner.LoadScene` `setActiveOnLoad` parameter - passing true will active the scene right after loading, before invoking Spawned on contained NOs
- Added support for disconnect token byte[]. up to 128 bytes
### Build 750 (Sep 03, 2023)
**What's New**
- MasterClient Runner now identified with [MC] in in Runner Visibility Controls Window
### Build 749 (Sep 02, 2023)
**Changes**
- Hitbox matrix TRS custom calculation
**Bug Fixes**
- Fixed: Stackoverflow when setting HitboxRoot min bounding radius with no hitboxes
- Fixed: Lag compensation sphere overlap query hitpoint calculation
### Build 747 (Aug 25, 2023)
**What's New**
- IM to lag compensation to update only interested HitboxRoots
### Build 746 (Aug 24, 2023)
**What's New**
- NetworkRigidbody in Shared Mode will by default leave Unity physics auto-simulate enabled. Adding RunnerPhysicsSimulate to the NetworkRunner is still possible to explicitly give Fusion physics control
**Changes**
- NRB added improved support for NRBs with non-NB parents
### Build 745 (Aug 23, 2023)
**Bug Fixes**
- Fixed: "Shutdown" button on NetworkRunner inspsctor now implemented
### Build 744 (Aug 22, 2023)
**Bug Fixes**
- Fixed: FusionBootstrap can now correctly start in Single Peer with the Auto setting (previously created 0 clients)
### Build 741 (Aug 18, 2023)
**Bug Fixes**
- Fixed: RunnerSimulationPhysics now gets and sets NetworkPhysicsInfo correctly for Shared Mode
### Build 738 (Aug 11, 2023)
**Changes**
- Added NRB handling for pooling. Despawn() now resets the RB velocities and restores IsKinematic to original value from Spawned(). Added DisableSyncTransforms to RunnerSimulatePhysics classes, to make disabling optional
### Build 737 (Aug 10, 2023)
**Bug Fixes**
- Fixed: Runner.IsForward being true on BeforeAllTicks when resimulating
- Fixed: MasterClientObjects not being simulated by the new master client
### Build 736 (Aug 09, 2023)
**Changes**
- Removed IPredictedDespawnBehaviour
**Bug Fixes**
- Fixed: NetworkTransform throwing null ref on disabled child object
Called manually the awake from spawned if the transform was not yet cached
- Fixed: Issue where objects without state authority could be despawned
### Build 735 (Aug 08, 2023)
**What's New**
- NetworkPhysicsInfo internal struct object (id: 4). Not going to exist in shared mode until the plugin is updated
### Build 734 (Aug 07, 2023)
**Bug Fixes**
- Fixed: Spawned objects ending up on host scene
### Build 733 (Aug 05, 2023)
**Changes**
- Calls to Load/Unload scene are correctly deferred until the initial info is processed
Cleaning up before the merge
wip
wip
simplifying initial scene load flow
**Bug Fixes**
- Fixed: Occasionally not being able to spawn prefabs using static references
- Fixed: Destroying object without state attached throwing an exception
- Fixed: Clients not resetting their scene info snapshot upon connecting
- Fixed: Addressable scenes discovery blocking Unity, if something goes wrong
- Fixed: Throwing exception in task-based scene ops
### Build 732 (Aug 04, 2023)
**Changes**
- RunnerAOIGizmos will render even if the Server runner is set to not visible (multi-peer mode)
**Bug Fixes**
- Fixed: Bug with aoi cell calculations
### Build 731 (Aug 03, 2023)
**Changes**
- MaxPlayers now accepts int values
### Build 730 (Aug 02, 2023)
**Changes**
- Renamed NetworkRigidbody.MovingTeleport() to just Teleport(), replacing the previous basic Teleport() implementation
**Bug Fixes**
- Fixed: Physics not updating when scenes are loaded with local physics mode in single-peer mode
### Build 729 (Aug 01, 2023)
**What's New**
- Public property NetworkRigidbody3D.Rigidbody and NetworkRigidbody2D.Rigidbody added for consistency with previous Fusion NRB
### Build 728 (Jul 29, 2023)
**Bug Fixes**
- Fixed: Weaver: Invalid casts for non-serialized dictionaries when `UseSerializableDictionary` is enabled
- Fixed: Issue with latest state changes from server not being available when state authority switch happens
- Fixed: SceneRef obsolete warning
- Fixed: Removed IPredictedSpawnBehaviour
### Build 719 (Jul 11, 2023)
**Changes**
- Hitbox colliders and BVH nodes arrays now resize on demand
**Bug Fixes**
- Fixed: `NetworkRunner.LoadScene` ignoring `localPhysicsMode` parameter
### Build 717 (Jul 07, 2023)
**Bug Fixes**
- Fixed: RunnerSimulatePhysics3D obsolete warning - updated to use Physics.simulationMode with 2022_3 and newer
### Build 716 (Jul 05, 2023)
- Initial 2.0 release