Network Project Configuration
- Scene Settings
- Physics Settings
- Object Settings
NetworkProjectConfig is a Unity asset class to store Fusion's settings to be used on an individual game session. For client-server mode, the configuration is enforced by the server at runtime; in the case of shared games, the photon server plugin shares the configuration to be used.
There are many different settings, and some of them are exclusive (and others are mandatory) when using certain game modes. Examples: interest management settings will only have effect when using Eventual Consistency transfer mode; at the same time, Delta Snapshots mode is only available for client-server mode, etc.
Singleonly one main active scene is loaded. Default configuration when running game builds.
Multiplemultiple peers (server or clients) load their game scenes concurrently in the same editor/build instance. Mostly used for development/debugging.
Scenesholds the list of scenes enabled in Unity's build settings. Fusion needs them indexed for automatic loading.
Physics Enginedefines whereas Fusion should be responsible for stepping the physics simulation or not.
Physics 3DPhysX is stepped directly by Fusion with
Physics 2DUnity's Box2D is stepped directly by Fusion with
NoneFusion does not step physics, which is handled by Unity. This normally is only used in games that do not need physics at all, or in a simpler shared-mode application.
Server OnlyPhysics is stepped only on forward new ticks from FixedUpdateNetwork. Resimulations do not affect the physics engines.
Client PredictionPhysics is fully predicted (and rolled-back for server reconciliation) on clients. This is more expensive (due to PhysX scene resets) and should be used carefully in games that want to provide a WYSIWYG physics-sandbox experience.
Ticks represents discrete points in time and are decoupled from the "actual" time passing on any specific or host. For instance, if the tick rate is defined as 1/60th of a second, this is the timestep which will be used by the simulation. Using ticks instead of a hardware clock allows all participants in a network session to share a common frame of reference for "time". This is crucial to reason accurately about future and past events.
Behind the scenes Fusion will try to stay as true to the desired tick rate as it can; it may do micro-corrections to stay in sync with the correct tick time given by the server. Fusion will also do re-simulations where multiple simulation steps are executed in rapid succession to establish a new current state from an updated older state.
Replication Mode, a.k.a. state transfer mode, is defined in the
The APIs are identical for all replication modes, thus the same game and code can be used to run different game instances using different replication modes. This allows developers to choose or switch replication modes later in development.
Delta Snapshots are server authoritative and transfer full world-snapshots using an extremely efficient delta compression.
Delta Snapshots allow every client to continuously receive tick-accurate data. This is ideal for fast-paced competitive games with low player count (e.g.: 10 player team-based FPS).
This mode is only available for games started by a dedicated server or by a player-host (not valid for shared cloud games).
Eventual Consistency mode adds Area of Interest, thus making it more suitable for games with a lot of
NetworkObjects and complex worlds (e.g.: survival and battle royale games).
Server Auth: This mode is only available for games started by either a dedicated server or by a player-host (not valid for shared cloud games).
Client Auth: client authoritative EC is used for shared games over photon cloud. The area of interest is managed by the photon server plugin (automatically for all GameObjects with a