Quick answer: Godot 4 RPC calls from _physics_process flooding the network at 60+ Hz? Per-tick RPCs saturate bandwidth - throttle to 10-20Hz or use MultiplayerSynchronizer for state.

Player position broadcast via @rpc each physics tick. 60Hz upstream; mobile clients can't keep up.

Throttle to 20Hz

var tick_counter = 0
func _physics_process(_):
    tick_counter += 1
    if tick_counter % 3 == 0:
        broadcast.rpc(state)

Every third tick = 20Hz at 60 physics. Bandwidth drops; interpolation smooths the gap.

Use MultiplayerSynchronizer

Set replication frequency on the synchronizer. Built-in interpolation; no manual throttle needed.

Or delta on change

Only broadcast when state changed by > threshold. Idle players consume no bandwidth.

“RPC every physics tick is the bandwidth floor for that channel. Throttle is the path to scale.”

Profile bandwidth at expected player count. The numbers surface budget gaps before launch.

Related reading