diff --git a/docs/plans/2026-04-13-lobby-rollen-design.md b/docs/plans/2026-04-13-lobby-rollen-design.md index 1553e8f..4a0b10a 100644 --- a/docs/plans/2026-04-13-lobby-rollen-design.md +++ b/docs/plans/2026-04-13-lobby-rollen-design.md @@ -58,7 +58,7 @@ signal game_started() ### Anpassung: `_on_peer_disconnected` -Beide Dicts bereinigen und beide Signale emittieren: +Server bereinigt lokal und broadcastet den Disconnect an alle anderen Clients: ```gdscript func _on_peer_disconnected(id: int) -> void: @@ -66,9 +66,20 @@ func _on_peer_disconnected(id: int) -> void: players.erase(id) peer_disconnected.emit(id) player_left.emit(id) + _broadcast_player_left.rpc(id) # andere Clients informieren print("[Server] Peer getrennt: %d" % id) ``` +### Neues RPC: `_broadcast_player_left` (Server → alle anderen Clients) + +```gdscript +# call_remote: Server hat bereits lokal gelöscht; nur Clients führen aus +@rpc("authority", "call_remote", "reliable") +func _broadcast_player_left(peer_id: int) -> void: + players.erase(peer_id) + player_left.emit(peer_id) +``` + ### Neues RPC: `register` (Client → Server) ```gdscript diff --git a/docs/plans/2026-04-13-lobby-rollen-plan.md b/docs/plans/2026-04-13-lobby-rollen-plan.md index 64e3da9..7ea78d9 100644 --- a/docs/plans/2026-04-13-lobby-rollen-plan.md +++ b/docs/plans/2026-04-13-lobby-rollen-plan.md @@ -53,6 +53,7 @@ func _on_peer_disconnected(id: int) -> void: players.erase(id) peer_disconnected.emit(id) player_left.emit(id) + _broadcast_player_left.rpc(id) print("[Server] Peer getrennt: %d" % id) ``` @@ -130,6 +131,13 @@ func request_start_game() -> void: @rpc("authority", "call_local", "reliable") func start_game() -> void: game_started.emit() + + +# call_remote: Server hat lokal bereits gelöscht; nur Clients führen aus +@rpc("authority", "call_remote", "reliable") +func _broadcast_player_left(peer_id: int) -> void: + players.erase(peer_id) + player_left.emit(peer_id) ``` - [ ] **Step 2: Einrückung prüfen (Tabs, nicht Spaces)** @@ -366,7 +374,7 @@ git commit -m "net: add lobby scene instance to main.tscn" - [ ] **Step 1: Server headless starten** ```bash -# aus ruf-der-pilze/ +cd /home/mpuchstein/Dev/Godot/DnD_Anna_OneShot/ruf-der-pilze godot --headless -- --server ``` @@ -396,8 +404,7 @@ Server-Terminal: Zweiten Godot-Prozess starten (z.B. über Terminal): ```bash -# aus ruf-der-pilze/ -godot +cd /home/mpuchstein/Dev/Godot/DnD_Anna_OneShot/ruf-der-pilze && godot ``` Name "Marie", Rolle "DM", "Beitreten".