Photon Fusion 2.x - Scene Setup & Usage

Goal

This page describes how to wire a scene so the spawner behaves correctly in Fusion.

Rule 1: Only authority runs the spawner

Runtime Spawner should be initialized and started only on the authoritative peer.

Typical patterns:

  • Host/Server checks (runner.IsServer)

  • Shared mode checks (StateAuthority owner of the spawner controller object)

  1. Start Fusion (NetworkRunner.StartGame)

  2. Spawn/resolve player(s)

  3. On authority:

    • spawner.Init()

    • spawner.StartSpawners()

Clients do not call spawner start logic; they receive spawned objects through replication.

Using wave triggers and regions in networked play

Wave triggers and region triggers are offline-first authoring components.

In Fusion you typically set:

  • WaveTrigger → ActivationMode = External

  • LocalAreaSpawner → ActivationMode = External

Then add the corresponding Fusion driver component:

  • FusionWaveTriggerDriver

  • FusionLocalAreaSpawnerDriver

Those drivers:

  • perform trigger detection only on the configured authority target

  • replicate inside/activate/reset state via RPC

  • call the public APIs (SetTriggerInside, ExternalActivate, SetPlayerInRegion, etc.)

Scene checklist

  • RuntimeSpawner exists in the scene

  • Fusion Runner exists (or is instantiated by bootstrap)

  • Network prefabs are registered

  • WaveTrigger/LocalAreaSpawner are set to External mode

  • Fusion drivers are added for network behavior

  • Authority-only spawner init/start is confirmed

Optional: pooling provider usage

If you use Runtime Spawner’s Fusion provider:

  • attach/configure it as part of runner startup

  • verify it is the runner’s active ObjectProvider

If you do not:

  • Runtime Spawner still works; Fusion will use your existing provider (or default) for lifecycle.

Last updated