Quick answer: Preload spawnable scenes before connecting peers. Or use spawn_function for explicit control.
Server spawns Player. Client connects, scene preload still in progress, spawn fails silently. Race between connect and preload.
The Fix
# Bootstrap
var spawn_scene = preload("res://player.tscn")
$Spawner.spawnable_scenes.append(spawn_scene.resource_path)
# Or spawn_function callback (explicit)
$Spawner.spawn_function = func(data):
var p = preload("res://player.tscn").instantiate()
p.peer_id = data.peer_id
return p
# Then start server
multiplayer.create_server(7777)
Preload guarantees scenes are in cache when peers connect. spawn_function callbacks let you customize per-spawn logic deterministically.
Verifying
Connect client. Spawner instantiates immediately on both sides. Without preload: timing-dependent failure.
“Preload before connect. Spawn deterministic.”
Related Issues
For RPC silent, see RPC silent. For multiplayer sync, see sync.
Preload. Spawn deterministic.