feat: Implement a new portal door game mode with arena partitioning, dynamic connections, and multiplayer synchronization.

This commit is contained in:
Yogi Wiguna
2026-03-02 14:48:59 +08:00
parent 1425dff93e
commit 78634d6421
4 changed files with 55 additions and 27 deletions
+8
View File
@@ -58,6 +58,14 @@ func _ready():
if multiplayer.is_server():
randomize_game_grid()
@rpc("any_peer", "call_local", "reliable")
func sync_portal_configs(configs: Array):
if portal_mode_manager:
# Temporarily store the configs and trigger spawn
# Note: We use a custom property in manager to pass this
portal_mode_manager.set_meta("door_configs", configs)
portal_mode_manager._spawn_portal_doors()
# Force gridmap cell size to match player logic (1, 0.05, 1) - >0.001 to avoid errors
var em = $EnhancedGridMap
if em:
+1 -1
View File
@@ -21,7 +21,7 @@ emission = Color(0.0, 0.4, 1.0, 1)
emission_energy_multiplier = 2.0
[sub_resource type="BoxShape3D" id="BoxShape3D_trigger"]
size = Vector3(1.4, 2.1, 0.5)
size = Vector3(1.4, 2.1, 0.8)
[sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_portal"]
properties/0/path = NodePath(":target_room_id")