Host Player not syncing position to Clients

Godot Version

4.6.stable.mono.official [89cea1439]

Question

I’m setting up a little dummy project to confirm I understand how the high level multiplayer systems work before I commit to building something larger for a real project. Currently I’m using MultiplayerSpawners and MultiplayerSynchronizers to load an arbitrary number of little Godot icons into a 3D level and move them around. Currently, clients work great. I can join with a handful of client players and they all move and replicate their movement, since position is synced with the MultiplayerSynchronizer. The issue is that the host does not seem to be broadcasting its position changes, though it can observe the client position changes.

Player:

class_name Player extends CharacterBody3D

@export var speed = 1.0
@export var gravity = 1.0

var up_down: float = 0.0;
var left_right: float = 0.0;

func _enter_tree() -> void:
	set_multiplayer_authority(name.to_int())

func _ready() -> void:
	# Follow own character
	if is_multiplayer_authority():
		var player_camera = CameraManagerGlobal.get_player_camera()
		player_camera.follow_target = self
		player_camera.current = true

func _physics_process(delta: float) -> void:
	if !is_multiplayer_authority(): return 

	if !is_on_floor():
		velocity.y -= gravity * delta
	else:
		velocity.y = 0.0
	
	var left_right := Input.get_axis("Left", "Right")
	var up_down := Input.get_axis("Up", "Down")

	var input_vec := Vector2(
		left_right,
		up_down
	).normalized()

	velocity.x = input_vec.x * speed
	velocity.z = input_vec.y * speed

	move_and_slide()

Spawner:

extends MultiplayerSpawner

@export var network_player: PackedScene
@export var player_spawn_1: Node3D
@export var player_spawn_2: Node3D
@export var player_spawn_3: Node3D
@export var player_spawn_4: Node3D

func _ready() -> void:
	multiplayer.peer_connected.connect(spawn_player)

func spawn_player(id: int) -> void:
	if !multiplayer.is_server(): return

	var player: Node = network_player.instantiate()
	player.name = str(id)

	player.position = player_spawn_1.position
	get_node(spawn_path).call_deferred("add_child", player)

test_level

extends Node3D

var multiplayerSpawner: MultiplayerSpawner
var playerSpawners: Node

func _ready() -> void:
	multiplayerSpawner = find_child("Spawner")
	playerSpawners = find_child("Spawner").find_child("Players")

	if multiplayer.is_server():
		multiplayerSpawner.spawn_player(multiplayer.get_unique_id()) # Server is always id 1