Fix dedicated server: delay netfox tick loop until first client connects, keep full scene tree for identity sync
This commit is contained in:
@@ -6,6 +6,17 @@ extends Node
|
||||
## Set to false for dedicated server operation.
|
||||
@export var spawn_host_avatar: bool = true
|
||||
|
||||
## When true, this is a dedicated server. Peer 1 (the server itself) never
|
||||
## gets a player avatar. Clients also skip spawning peer 1 locally.
|
||||
var _dedicated_server: bool = false
|
||||
|
||||
## Mark this spawner as running on a dedicated server.
|
||||
## The host avatar (peer 1) is skipped entirely — no avatar is spawned for the
|
||||
## server process itself.
|
||||
func set_dedicated_server() -> void:
|
||||
_dedicated_server = true
|
||||
print("[PlayerSpawner] Dedicated server mode enabled")
|
||||
|
||||
var t_spawn_points: Array[Marker3D] = []
|
||||
var ct_spawn_points: Array[Marker3D] = []
|
||||
var team_manager: TeamManager
|
||||
@@ -47,8 +58,12 @@ func _handle_connected(id: int):
|
||||
_spawn(id)
|
||||
|
||||
func _handle_host():
|
||||
if _dedicated_server:
|
||||
print("[PlayerSpawner] Dedicated server — skipping host avatar entirely")
|
||||
# Match starts when the first client connects (handled by headless_server)
|
||||
return
|
||||
if not spawn_host_avatar:
|
||||
print("[PlayerSpawner] Dedicated server mode — skipping host avatar")
|
||||
print("[PlayerSpawner] spawn_host_avatar=false — skipping host avatar")
|
||||
if round_manager:
|
||||
round_manager.start_match()
|
||||
return
|
||||
@@ -58,8 +73,11 @@ func _handle_host():
|
||||
round_manager.start_match()
|
||||
|
||||
func _handle_new_peer(id: int):
|
||||
if _dedicated_server and id == 1:
|
||||
# Peer 1 is the server itself — no avatar needed
|
||||
return
|
||||
if id == 1 and not spawn_host_avatar:
|
||||
print("[PlayerSpawner] Skipping spawn for peer 1 (dedicated server)")
|
||||
print("[PlayerSpawner] Skipping spawn for peer 1 (spawn_host_avatar=false)")
|
||||
return
|
||||
_spawn(id)
|
||||
if multiplayer.is_server():
|
||||
|
||||
Reference in New Issue
Block a user