feat: Implement Nakama serialization, Realtime API, and a comprehensive lobby system with UI and player management.

This commit is contained in:
Yogi Wiguna
2026-02-09 16:46:42 +08:00
parent a68878483f
commit bffa9474e9
7 changed files with 221 additions and 45 deletions
+31
View File
@@ -277,6 +277,37 @@ func sync_character(player_id: int, character_name: String) -> void:
emit_signal("character_changed", player_id, character_name)
emit_signal("player_list_changed")
# =============================================================================
# Player Name Management
# =============================================================================
func set_player_name(new_name: String) -> void:
"""Set local player's name. Syncs to all peers."""
local_player_name = new_name
var my_id = multiplayer.get_unique_id()
# Update local player data
for player in players_in_room:
if player["id"] == my_id:
player["name"] = new_name
break
# Sync to all peers if connected
if multiplayer.has_multiplayer_peer():
rpc("sync_player_name", my_id, new_name)
emit_signal("player_list_changed")
@rpc("any_peer", "call_local", "reliable")
func sync_player_name(player_id: int, new_name: String) -> void:
"""Sync player name across all clients."""
for player in players_in_room:
if player["id"] == player_id:
player["name"] = new_name
break
emit_signal("player_list_changed")
# =============================================================================
# Area Selection (Host Only)
# =============================================================================