From d024f217d0ac7ea7e77a1d0c1bdfa74880e65fa4 Mon Sep 17 00:00:00 2001 From: Nikolai Rodionov Date: Wed, 29 Jan 2025 12:25:26 +0100 Subject: [PATCH] WIP: Add more spawners and start moving authority to the server --- scenes/characters/placeholder.tscn | 6 ++-- .../base/player_spawner/player_spawner.gd | 7 ++--- scenes/maps/base/spawn_controller.gd | 1 + scenes/maps/maps/lowpoly_tdm_2.tscn | 28 +++++++++++++++++-- scripts/player/player_input_controller.gd | 2 +- 5 files changed, 33 insertions(+), 11 deletions(-) diff --git a/scenes/characters/placeholder.tscn b/scenes/characters/placeholder.tscn index 1960c5d..e47b9da 100644 --- a/scenes/characters/placeholder.tscn +++ b/scenes/characters/placeholder.tscn @@ -10,13 +10,13 @@ height = 1.6 [sub_resource type="SceneReplicationConfig" id="SceneReplicationConfig_tl74a"] properties/0/path = NodePath(".:position") -properties/0/spawn = false +properties/0/spawn = true properties/0/replication_mode = 1 properties/1/path = NodePath(".:rotation") -properties/1/spawn = false +properties/1/spawn = true properties/1/replication_mode = 1 properties/2/path = NodePath(".:health") -properties/2/spawn = false +properties/2/spawn = true properties/2/replication_mode = 2 [sub_resource type="Animation" id="Animation_falg4"] diff --git a/scenes/maps/base/player_spawner/player_spawner.gd b/scenes/maps/base/player_spawner/player_spawner.gd index cb5eaaa..6119159 100644 --- a/scenes/maps/base/player_spawner/player_spawner.gd +++ b/scenes/maps/base/player_spawner/player_spawner.gd @@ -19,15 +19,12 @@ func _get_root() -> Node3D: # -- Spawn a player node and sync it across all peers func spawn_players(spawn_location: SpawnController, id: int) -> Error: if multiplayer.is_server(): - var char : Node3D = null + var char : CharacterBody3D = null var player_data: PlayerState = GameServerManager.players[id] char = ResourceLoader.load("res://scenes/characters/placeholder.tscn").instantiate() char.name = "PlayerPlaceholder_" + str(player_data.id) - print(player_data) - var position = spawn_location.get_spawner(SpawnController.Sides.BLUE) + var position: Vector3 = spawn_location.get_spawner(SpawnController.Sides.BLUE) char.global_position = position - char.global_position = position - #_get_spawner().spawn(char) _get_root().add_child(char) return OK return ERR_UNAUTHORIZED diff --git a/scenes/maps/base/spawn_controller.gd b/scenes/maps/base/spawn_controller.gd index 91e4beb..b7cd7aa 100644 --- a/scenes/maps/base/spawn_controller.gd +++ b/scenes/maps/base/spawn_controller.gd @@ -41,6 +41,7 @@ func _get_available_spawn(spawn_set: Node3D) -> Node3D: func get_spawner(team: Sides) -> Vector3: match team: Sides.BLUE: + print("Getting a blue spawner") var spawn := _get_available_spawn(blue_spawners) return spawn.choose_spawn_location() Sides.RED: diff --git a/scenes/maps/maps/lowpoly_tdm_2.tscn b/scenes/maps/maps/lowpoly_tdm_2.tscn index 8a03531..127ca9c 100644 --- a/scenes/maps/maps/lowpoly_tdm_2.tscn +++ b/scenes/maps/maps/lowpoly_tdm_2.tscn @@ -961,13 +961,37 @@ script = ExtResource("2_1ss1b") [node name="Blue" type="Node3D" parent="SpawnLocations"] +[node name="Spawn4" type="Node3D" parent="SpawnLocations/Blue"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 53.1487, -0.0093751, -8.68195) + [node name="Spawn1" type="Node3D" parent="SpawnLocations/Blue"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 0.234959, 25.2818, 2.12756) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 52.9098, -0.00937462, 10.3532) [node name="Spawn2" type="Node3D" parent="SpawnLocations/Blue"] -transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 29.4253, 15.2112, 4.25512) +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 52.8486, -0.00937653, 4.25512) + +[node name="Spawn3" type="Node3D" parent="SpawnLocations/Blue"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 53.6493, -0.00937504, -4.34097) + +[node name="Spawn5" type="Node3D" parent="SpawnLocations/Blue"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, 51.5453, -0.0187502, -17.3639) [node name="Red" type="Node3D" parent="SpawnLocations"] +[node name="Spawn4" type="Node3D" parent="SpawnLocations/Red"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -40.9916, -0.0093751, -8.68195) + +[node name="Spawn1" type="Node3D" parent="SpawnLocations/Red"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -41.2305, -0.00937462, 10.3532) + +[node name="Spawn2" type="Node3D" parent="SpawnLocations/Red"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -41.2917, -0.00937653, 4.25512) + +[node name="Spawn3" type="Node3D" parent="SpawnLocations/Red"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -40.491, -0.00937504, -4.34097) + +[node name="Spawn5" type="Node3D" parent="SpawnLocations/Red"] +transform = Transform3D(1, 0, 0, 0, 1, 0, 0, 0, 1, -42.595, -0.0187502, -17.3639) + [node name="WorldEnvironment" type="WorldEnvironment" parent="."] environment = SubResource("Environment_3ha0j") diff --git a/scripts/player/player_input_controller.gd b/scripts/player/player_input_controller.gd index 63f969b..6dfb495 100644 --- a/scripts/player/player_input_controller.gd +++ b/scripts/player/player_input_controller.gd @@ -29,7 +29,7 @@ var multiplayer_id: int = 0 var alive: bool = true func _ready() -> void: - player_synchronizer.set_multiplayer_authority(owner_id) + player_synchronizer.set_multiplayer_authority(1) multiplayer_id = multiplayer.get_unique_id() # -- Separate logic for player and other models that are controlled # -- by other players on the server