Synchronization

FusionReplicator

FusionReplicator handles property sync for networked objects.
Add it as a child of your networked scene's root node.
The authority client writes values to the server; remote clients receive and optionally smooth them.

Replication Modes

  • REPLICATION_NONE — no auto-sync; add custom properties via the replicator's bottom panel
  • REPLICATION_AUTO — auto-detects root node type and syncs accordingly:
    • RigidBody2D/3D → position, rotation, linear_velocity, angular_velocity (forecast smoothing)
    • CharacterBody2D/3D → position, rotation, velocity (interpolation smoothing)
    • Other nodes → position, rotation (interpolation smoothing)

Smoothing

When root_smoothing is true (default), remote values are corrected smoothly instead of snapped.
Physics bodies use velocity-based forecast; non-physics nodes use spring-damper interpolation.
Set root_smoothing = false for direct value application.

Authority and Ownership

GDScript

if $FusionReplicator.has_authority():
    position += velocity * delta

$FusionReplicator.request_authority()   # claim ownership
$FusionReplicator.release_authority()   # release

Ownership modes (set via owner_mode):

  • TRANSACTION (default) — authority changes require server confirmation
  • PLAYER_ATTACHED — permanently owned by the spawning player
  • DYNAMIC — any client can claim immediately
  • MASTER_CLIENT — only the master client owns

Interest Management (AOI)

Objects publish an interest key via interest_mode on FusionReplicator; clients subscribe to keys via FusionClient.

  • INTEREST_GLOBAL (default) — visible to all clients
  • INTEREST_AREA — spatial grid key auto-computed from position (cell size in Project Settings fusion/interest_management/area_of_interest_cell_size)
  • INTEREST_USER — custom group key via interest_key
Project Settings — Interest Modes
Project Settings — Interest Modes

Subscribe with one or more FusionInterestArea nodes (auto-manages grid subscriptions, tipically following camera or player node) or manually:

FusionInterestArea — Node Inspector Settings
FusionInterestArea — Node Inspector Settings

GDScript

FusionClient.set_area_keys([[cell_key, 0]])   # area keys (refresh each frame)
FusionClient.add_user_key(42)                  # user keys (persistent)

Enter/exit signals: FusionClient.interest_enter / interest_exit.

Key Properties

  • root_path (NodePath, "..") — node whose properties are synced
  • root_replication_mode — NONE or AUTO
  • root_smoothing (bool, true)
  • update_interval (int, 1) — server send interval in ticks
  • root_teleport_threshold (float, 100.0) — snap if error exceeds this
  • root_spring_stiffness (float, 50.0) / root_spring_damping (float, 10.0)
FusionReplicator inspector
FusionReplicator inspector

Signals

  • authority_changed(has_authority: bool) — ownership changed
  • synchronized — inbound sync cycle completed
Back to top