Quick answer: Open MultiplayerSynchronizer’s Replication panel. Add each property you want to sync (e.g. :position, :rotation). Tick Sync (continuous). Save the Replication Config resource.

Spawned via MultiplayerSpawner. Clients see the spawn but movement doesn’t replicate. The synchronizer exists; its Replication Config is empty.

The Symptom

Network spawn works. Position freezes on clients while moving on the server. Adding more properties to the actor doesn’t change the symptom.

The Fix

Step 1: Open the synchronizer. Select the MultiplayerSynchronizer node. In the dock at the bottom, find the Replication tab.

Step 2: Add properties.

Replication panel:
  + .position           Sync: true   Spawn: true
  + .rotation           Sync: true   Spawn: true
  + AnimationPlayer:current_animation
                        Sync: true   Spawn: false
  + health              Sync: true   Spawn: true

Format: NodePath:property for child nodes; :property for the synchronizer’s root.

Step 3: root_path. Default is the parent. If the synchronizer needs to replicate a sibling’s state, set root_path explicitly.

Authority

By default, the multiplayer authority of the parent owns the data. For player-controlled actors, set authority to the owning peer with set_multiplayer_authority(peer_id) on spawn. The synchronizer reads from the authority and pushes to others.

Visibility

For per-peer visibility (only show to teammates), set the Visibility list. add_visibility_filter callback determines who sees this synchronizer.

Verifying

Run a host + client. Move on the host. Client sees position update. Open Remote → Network in the debugger to confirm packets are flowing for this synchronizer.

“Add properties to Replication Config. Sync flag. Authority right. Clients see updates.”

Related Issues

For MultiplayerSpawner replication, see spawner. For RPC not firing, see RPC.

Add properties. Sync ticked. State propagates.