First working multiplayer implementation

This commit is contained in:
2025-01-23 20:24:42 +01:00
parent fe08da9d4c
commit 3ce278f89b
9 changed files with 141 additions and 64 deletions

View File

@ -6,16 +6,33 @@ var player_side: String
@onready var intro_view_port = $Intro/CameraMount/IntroCamera/SubViewportContainer/SubViewport
@onready var spawns = $Spawns
@onready var root = $'.'
@onready var players = $Players
# Called when the node enters the scene tree for the first time.
func _ready() -> void:
var char : Node3D = null
var red_spawn: Node3D = $Spawns/Blue/SpawnArea
var position := red_spawn.global_position
char = ResourceLoader.load("res://scenes/utils/character.tscn").instantiate()
char.global_position = position
root.add_child(char)
pass
if multiplayer.is_server():
for i in GameServerManager.players:
char = ResourceLoader.load("res://scenes/utils/character.tscn").instantiate()
char.name = str(GameServerManager.players[i].name)
char.global_position = position
var my_random_number = RandomNumberGenerator.new().randf_range(-2.0, 2.0)
char.global_position = position
char.global_position.x += my_random_number
$MultiplayerSpawner.spawn(char)
players.add_child(char)
func spawn_player(id: int):
var red_spawn: Node3D = $Spawns/Blue/SpawnArea
var position := red_spawn.global_position
var char = ResourceLoader.load("res://scenes/utils/character.tscn").instantiate()
char.name = str(GameServerManager.players[id].name)
char.global_position = position
var my_random_number = RandomNumberGenerator.new().randf_range(-2.0, 2.0)
char.global_position = position
char.global_position.x += my_random_number
# Called every frame. 'delta' is the elapsed time since the previous frame.
func _process(delta: float) -> void:

View File

@ -24,3 +24,10 @@ size = Vector3(0.100647, 1, 6.02112)
[node name="SpawnArea" type="CSGBox3D" parent="Spawns/Blue"]
transform = Transform3D(5.70162, 0, 0, 0, 1, 0, 0, 0, 7.97817, 21.2099, 1.78438, 1.23551)
size = Vector3(0.484497, 1, 5.99213)
[node name="MultiplayerSpawner" type="MultiplayerSpawner" parent="."]
_spawnable_scenes = PackedStringArray("res://scenes/utils/character.tscn")
spawn_path = NodePath("../Players")
spawn_limit = 4
[node name="Players" type="Node3D" parent="."]