Godot Version
v4.2.2
Question
I have been working on a 2D multiplayer game and have run into a roadblock. I am currently trying to make it so that when the host starts the game, the game scene loads and all of the players are created at their respective spawn points. I’m currently using the MultiplayerSpawner node to spawn all of the players in, but I’m having issues. I’m spawning in the players with a script in the game scene, and whenever the server does it everything goes fine. But the moment a player tries to create a player instance it gives me a get_node error:
E 0:00:21:0154 get_node: Node not found: “Game/MultiplayerSpawner” (relative to “/root”).
<C++ Error> Method/function failed. Returning: nullptr
<C++ Source> scene/main/node.cpp:1651 @ get_node()
I can not for the life of me figure out why this is happening. It works flawlessly when the server runs it. But the moment a client tries to get a reference to the MultiplayerSpawner node it can’t find path. Here’s the game scene script:
extends Node2D
@onready var spawnLocations = ["SpawnP2","SpawnP1","SpawnP3","SpawnP4"]
const PLAYER = preload("res://Scenes/player.tscn")
@onready var spawner = $MultiplayerSpawner
func _ready():
spawner.spawn_function = spawnPlayer
if not multiplayer.is_server():return
startGame()
func startGame():
var i = 0
for id in Global.playerList:
print("Spawning player number ",i+1,". ID: ",id)
#I have multiple spawn locations, this works fine. I've tested it.
var spawnNodePath = NodePath(spawnLocations[i])
spawner.set_spawn_path(spawnNodePath)
spawner.spawn(id)
i+=1
func spawnPlayer(_id: int):
var player = PLAYER.instantiate()
player.set_multiplayer_authority(_id)
player.id = _id
return player
I’m ripping my hair out at this point. If you have any ideas of why this isn’t working please do tell. If you think I should post a problem on github I’m more than happy to.