diff --git a/godot/project.godot b/godot/project.godot index c48fdd3..27c4711 100644 --- a/godot/project.godot +++ b/godot/project.godot @@ -78,3 +78,4 @@ jump={ 3d/physics_engine="JoltPhysics3D" 3d/default_gravity=15.0 2d/default_gravity=1200.0 +common/physics_interpolation=true diff --git a/godot/scenes/characters/y-bot/character.tscn b/godot/scenes/characters/y-bot/character.tscn index 22b24ca..286653c 100644 --- a/godot/scenes/characters/y-bot/character.tscn +++ b/godot/scenes/characters/y-bot/character.tscn @@ -2796,7 +2796,7 @@ mesh = SubResource("ArrayMesh_7ywky") skin = SubResource("Skin_rvj8b") [node name="HeadAttachment" type="BoneAttachment3D" parent="Model/Body/Skeleton3D"] -transform = Transform3D(0.882565, -0.444116, -0.154401, 0.270521, 0.211033, 0.939299, -0.384574, -0.870762, 0.306393, -6.4511, 7.27767, -150.755) +transform = Transform3D(0.882565, -0.444116, -0.154401, 0.270521, 0.211033, 0.9393, -0.384574, -0.870762, 0.306393, -6.4511, 7.27766, -150.755) bone_name = "mixamorig_Head" bone_idx = 5 @@ -2813,7 +2813,7 @@ transform = Transform3D(1, 0, 0, 0, -4.37114e-08, -1, 0, 1, -4.37114e-08, 0, 0, shape = SubResource("CapsuleShape3D_yrrmu") [node name="TorsoAttachment" type="BoneAttachment3D" parent="Model/Body/Skeleton3D"] -transform = Transform3D(0.766679, -0.0560176, -0.639582, 0.64197, 0.0531821, 0.764883, -0.00883259, -0.997012, 0.0767353, 3.85161, -5.43985, -116.78) +transform = Transform3D(0.766679, -0.0560176, -0.639582, 0.64197, 0.053182, 0.764883, -0.0088326, -0.997012, 0.0767351, 3.85161, -5.43985, -116.78) bone_name = "mixamorig_Spine1" bone_idx = 2 @@ -2827,7 +2827,7 @@ body_part = "Torso" shape = SubResource("CapsuleShape3D_tr87i") [node name="RightHipAttachment" type="BoneAttachment3D" parent="Model/Body/Skeleton3D"] -transform = Transform3D(-0.807937, -0.161163, -0.566802, -0.581917, 0.0667467, 0.810505, -0.092791, 0.984668, -0.14771, -7.363, -5.25271, -89.2051) +transform = Transform3D(-0.807937, -0.161163, -0.566801, -0.581917, 0.0667468, 0.810505, -0.092791, 0.984668, -0.147711, -7.363, -5.25271, -89.2051) bone_name = "mixamorig_RightUpLeg" bone_idx = 60 @@ -2843,7 +2843,7 @@ transform = Transform3D(0.997222, -0.0744854, -0.000943551, 0.0744854, 0.997222, shape = SubResource("CapsuleShape3D_xyxrh") [node name="RightLegAttachment" type="BoneAttachment3D" parent="Model/Body/Skeleton3D"] -transform = Transform3D(-0.801839, 0.200184, -0.563011, -0.593879, -0.371127, 0.713844, -0.0660485, 0.906748, 0.416469, -13.9061, -2.54283, -49.228) +transform = Transform3D(-0.801839, 0.200184, -0.563011, -0.593879, -0.371127, 0.713844, -0.0660485, 0.906748, 0.416469, -13.9061, -2.54282, -49.228) bone_name = "mixamorig_RightLeg" bone_idx = 61 @@ -2858,7 +2858,7 @@ body_part = "Right Leg" shape = SubResource("CapsuleShape3D_h5mrs") [node name="RightFootAttachment" type="BoneAttachment3D" parent="Model/Body/Skeleton3D"] -transform = Transform3D(-0.588698, -0.731611, -0.343773, -0.806695, 0.504491, 0.307786, -0.0517495, 0.458513, -0.88718, -5.4786, -18.1669, -11.0549) +transform = Transform3D(-0.588698, -0.731611, -0.343773, -0.806695, 0.504491, 0.307786, -0.0517494, 0.458513, -0.88718, -5.4786, -18.1669, -11.0549) bone_name = "mixamorig_RightFoot" bone_idx = 62 @@ -2873,7 +2873,7 @@ body_part = "Right Foot" shape = SubResource("BoxShape3D_1pj41") [node name="RightArmAttachment" type="BoneAttachment3D" parent="Model/Body/Skeleton3D"] -transform = Transform3D(0.374872, -0.587376, 0.717259, 0.864165, 0.501541, -0.0409307, -0.335693, 0.635174, 0.695604, -10.8404, -16.1981, -138.841) +transform = Transform3D(0.374872, -0.587376, 0.717259, 0.864165, 0.501541, -0.0409305, -0.335693, 0.635173, 0.695604, -10.8404, -16.1981, -138.841) bone_name = "mixamorig_RightArm" bone_idx = 32 @@ -2888,7 +2888,7 @@ body_part = "Right Arm" shape = SubResource("CapsuleShape3D_56i6t") [node name="RightForearmAttachment" type="BoneAttachment3D" parent="Model/Body/Skeleton3D"] -transform = Transform3D(0.525953, 0.457071, 0.717259, -0.623016, 0.781137, -0.0409307, -0.578986, -0.425336, 0.695604, -26.9373, -2.45355, -121.435) +transform = Transform3D(0.525953, 0.457071, 0.717259, -0.623016, 0.781137, -0.0409306, -0.578986, -0.425336, 0.695604, -26.9373, -2.45355, -121.435) bone_name = "mixamorig_RightForeArm" bone_idx = 33 @@ -2903,7 +2903,7 @@ body_part = "Right Forearm" shape = SubResource("CapsuleShape3D_1sjun") [node name="RightPalmAttachment" type="BoneAttachment3D" parent="Model/Body/Skeleton3D"] -transform = Transform3D(-0.101872, 0.0272958, 0.994423, -0.100369, 0.994241, -0.0375728, -0.989721, -0.103637, -0.0985454, -14.3155, 19.1172, -133.18) +transform = Transform3D(-0.101872, 0.0272956, 0.994423, -0.100369, 0.994241, -0.0375728, -0.989721, -0.103637, -0.0985452, -14.3155, 19.1172, -133.18) bone_name = "mixamorig_RightHand" bone_idx = 34 @@ -2919,7 +2919,7 @@ transform = Transform3D(1, -4.54747e-13, -5.68434e-14, 0, 1, 2.94416e-14, 0, -8. shape = SubResource("SphereShape3D_eryh8") [node name="LeftHipAttachment" type="BoneAttachment3D" parent="Model/Body/Skeleton3D"] -transform = Transform3D(-0.982279, 0.127, 0.137838, 0.176971, 0.38628, 0.905245, 0.0617221, 0.913597, -0.40191, 6.6331, 6.44913, -89.6507) +transform = Transform3D(-0.982279, 0.127, 0.137838, 0.176971, 0.38628, 0.905245, 0.061722, 0.913597, -0.40191, 6.6331, 6.44913, -89.6507) bone_name = "mixamorig_LeftUpLeg" bone_idx = 55 @@ -2935,7 +2935,7 @@ transform = Transform3D(0.997222, -0.0744854, -0.000943551, 0.0744854, 0.997222, shape = SubResource("CapsuleShape3D_xyxrh") [node name="LeftLegAttachment" type="BoneAttachment3D" parent="Model/Body/Skeleton3D"] -transform = Transform3D(-0.982093, 0.0367378, 0.18478, 0.184413, -0.013171, 0.982761, 0.0385382, 0.999238, 0.00616023, 11.7892, 22.1319, -52.5592) +transform = Transform3D(-0.982093, 0.0367378, 0.18478, 0.184413, -0.0131707, 0.982761, 0.0385382, 0.999238, 0.00616005, 11.7892, 22.1319, -52.5592) bone_name = "mixamorig_LeftLeg" bone_idx = 56 @@ -2950,7 +2950,7 @@ body_part = "Left Leg" shape = SubResource("CapsuleShape3D_h5mrs") [node name="LeftFootAttachment" type="BoneAttachment3D" parent="Model/Body/Skeleton3D"] -transform = Transform3D(-0.977188, 0.206477, 0.0497126, 0.205976, 0.864368, 0.45874, 0.0517493, 0.458515, -0.887179, 13.3358, 21.5774, -10.4923) +transform = Transform3D(-0.977188, 0.206477, 0.0497126, 0.205976, 0.864368, 0.45874, 0.0517493, 0.458514, -0.887179, 13.3358, 21.5774, -10.4923) bone_name = "mixamorig_LeftFoot" bone_idx = 57 @@ -2980,7 +2980,7 @@ body_part = "Left Arm" shape = SubResource("CapsuleShape3D_56i6t") [node name="LeftForearmAttachment" type="BoneAttachment3D" parent="Model/Body/Skeleton3D"] -transform = Transform3D(0.0873336, -0.555, -0.827253, 0.636753, 0.669735, -0.3821, 0.766106, -0.493386, 0.411889, 11.27, 33.558, -124.364) +transform = Transform3D(0.0873334, -0.555, -0.827253, 0.636753, 0.669735, -0.3821, 0.766106, -0.493386, 0.411888, 11.27, 33.558, -124.364) bone_name = "mixamorig_LeftForeArm" bone_idx = 9 @@ -2995,7 +2995,7 @@ body_part = "Left Forearm" shape = SubResource("CapsuleShape3D_1sjun") [node name="LeftPalmAttachment" type="BoneAttachment3D" parent="Model/Body/Skeleton3D"] -transform = Transform3D(-0.752812, -0.657604, -0.028832, -0.658199, 0.751584, 0.0435493, -0.00696856, 0.0517617, -0.998635, -4.05605, 52.0524, -137.988) +transform = Transform3D(-0.752812, -0.657604, -0.0288319, -0.658199, 0.751583, 0.0435492, -0.00696859, 0.0517616, -0.998635, -4.05606, 52.0524, -137.988) bone_name = "mixamorig_LeftHand" bone_idx = 10 diff --git a/godot/scenes/maps/base/map_controller.gd b/godot/scenes/maps/base/map_controller.gd index fc21e3c..1db0f17 100644 --- a/godot/scenes/maps/base/map_controller.gd +++ b/godot/scenes/maps/base/map_controller.gd @@ -47,10 +47,11 @@ func _request_spawn(): _spawn_player(id) func _spawn_player(id: int): - player_spawner.spawn_players(spawn_locations, id) - var controlled_node: ServerNode = player_spawner.get_player_node(id) - var position := controlled_node.shared_node.global_position - _spawn_player_controller_node.rpc_id(id, position.x, position.y, position.z) + if multiplayer.is_server(): + player_spawner.spawn_players(spawn_locations, id) + var controlled_node: ServerNode = player_spawner.get_player_node(id) + var position := controlled_node.shared_node.global_position + _spawn_player_controller_node.rpc_id(id, position.x, position.y, position.z) @rpc("any_peer", "call_local", "reliable") func _spawn_player_controller_node(x: float, y: float, z: float): diff --git a/godot/scenes/maps/base/player_spawner/player_spawner.gd b/godot/scenes/maps/base/player_spawner/player_spawner.gd index 4b775d5..bae26c2 100644 --- a/godot/scenes/maps/base/player_spawner/player_spawner.gd +++ b/godot/scenes/maps/base/player_spawner/player_spawner.gd @@ -2,10 +2,16 @@ class_name PlayerSpawnerController extends Node3D func _get_spawner() -> MultiplayerSpawner: - return $MultiplayerSpawner + return $PlayersSpawner func _get_root() -> Node3D: return $Players + +func _get_model_spawner() -> MultiplayerSpawner: + return $ModelSpawner + +func _get_model_root() -> Node3D: + return $Models # -- Spawn a player node and sync it across all peers func spawn_players(spawn_location: SpawnController, id: int) -> Error: @@ -18,6 +24,11 @@ func spawn_players(spawn_location: SpawnController, id: int) -> Error: char.owner_id = id _get_root().add_child(char) char.shared_node.global_position = new_position + + var model_scene: PackedScene = ResourceLoader.load("res://scenes/characters/y-bot/character.tscn") + var model: CharacterWrapper = model_scene.instantiate() + model.global_position = new_position + _get_model_root().add_child(model) return OK return ERR_UNAUTHORIZED diff --git a/godot/scenes/maps/base/player_spawner/player_spawner.tscn b/godot/scenes/maps/base/player_spawner/player_spawner.tscn index 6efb124..fac5e01 100644 --- a/godot/scenes/maps/base/player_spawner/player_spawner.tscn +++ b/godot/scenes/maps/base/player_spawner/player_spawner.tscn @@ -5,9 +5,15 @@ [node name="PlayerSpawner" type="Node3D"] script = ExtResource("1_2hsyd") -[node name="MultiplayerSpawner" type="MultiplayerSpawner" parent="."] -_spawnable_scenes = PackedStringArray("res://scenes/player/server_node.tscn") +[node name="PlayersSpawner" type="MultiplayerSpawner" parent="."] +_spawnable_scenes = PackedStringArray("res://scenes/player/server_node.tscn", "res://scenes/characters/y-bot/character.tscn") spawn_path = NodePath("../Players") spawn_limit = 100 [node name="Players" type="Node3D" parent="."] + +[node name="Models" type="Node3D" parent="."] + +[node name="ModelSpawner" type="MultiplayerSpawner" parent="."] +_spawnable_scenes = PackedStringArray("res://scenes/characters/y-bot/character.tscn") +spawn_path = NodePath("../Models") diff --git a/godot/scenes/player/server_node.tscn b/godot/scenes/player/server_node.tscn index af01aa4..9a8757d 100644 --- a/godot/scenes/player/server_node.tscn +++ b/godot/scenes/player/server_node.tscn @@ -22,6 +22,7 @@ script = ExtResource("1_bau14") [node name="Character" parent="SharedNode" instance=ExtResource("3_eykxo")] transform = Transform3D(-1, 0, 8.74228e-08, 0, 1, 0, -8.74228e-08, 0, -1, 0, 0, 0) +visible = false [node name="MultiplayerSynchronizer" type="MultiplayerSynchronizer" parent="."] replication_interval = 0.1