ENetMultiplayer not connecting

:information_source: Attention Topic was automatically imported from the old Question2Answer platform.
:bust_in_silhouette: Asked By Karl Marx

I am making a multiplayer game using ENetMultiplayerPeer in godot 4. The connection seems to work and does not raise any error messages but when I check get_tree().get_multiplayer().get_peers() it only contains the local peer and the _peer_connected signal never gets called.
My Multiplayer Code:

extends Node

var players=[]
var has_started=false

func host(MAX_PLAYERS=100, SERVER_PORT=10567):
	get_tree().get_multiplayer().multiplayer_peer=null
	var peer = ENetMultiplayerPeer.new()
	peer.peer_connected.connect(Callable(self,"_peer_connected"))
	peer.peer_disconnected.connect(Callable(self,"_peer_disconnected"))
	print("create server: "+str(peer.create_server(SERVER_PORT, MAX_PLAYERS)))
	get_tree().get_multiplayer().multiplayer_peer=peer
	players.append(peer.get_unique_id())

func join(SERVER_IP="192.168.178.1", SERVER_PORT=10567):
	get_tree().get_multiplayer().multiplayer_peer=null
	var peer = ENetMultiplayerPeer.new()
	peer.peer_connected.connect(Callable(self,"_peer_connected"))
	peer.peer_disconnected.connect(Callable(self,"_peer_disconnected"))
	print("create client: "+str(peer.create_client(SERVER_IP, SERVER_PORT)))
	get_tree().get_multiplayer().multiplayer_peer=peer
	players.append(peer.get_unique_id())

func _peer_connected(id:int): # new player joins the group
	print('not running (whaat)')
	players.append(id)
	rpc_id(id,"register_player",has_started) # tell the new player "I'm here too"

func _peer_disconnected(id:int):
	players.erase(id)

func get_player_name():
	return str(get_tree().get_multiplayer().get_unique_id())

@rpc("any_peer")
func register_player(_has_started):
	var id = get_tree().get_multiplayer().get_remote_sender_id()
	players.append(id)
	if _has_started:
		print("game has already started so going to map.tscn")
		start_game()

@rpc("any_peer","call_local")
func start_game():
	assert(get_tree().change_scene_to_file("res://map.tscn")==OK)

func host_begin_game():
	assert(get_tree().get_multiplayer().is_server())
	for id in players:
		rpc_id(id,"start_game")

func _process(_delta):
	if Input.is_action_just_pressed("debug_action"): # SPACE
		print("Players: "+str(players)+", Peers: "+str(get_tree().get_multiplayer().get_peers()))

See the minimal reproduction project on the comments

Minimal reproduction project: https://github.com/kit-solent/networking_min_rep

Karl Marx | 2023-05-12 02:34