extends Node3D const Player := preload("res://player.tscn") @onready var ui_main_menu := $UIMainMenu @onready var players := $Players func _ready(): pass func _process(_delta): pass func _on_button_start_as_server_pressed(): var peer := ENetMultiplayerPeer.new() peer.create_server(9080, 10) peer.peer_connected.connect(self._on_peer_connect) peer.peer_disconnected.connect(self._on_peer_disconnected) multiplayer.multiplayer_peer = peer ui_main_menu.visible = false # Server connected _on_peer_connect(get_multiplayer_authority()) func _on_button_start_as_client_pressed(): var peer := ENetMultiplayerPeer.new() peer.create_client("localhost", 9080) multiplayer.multiplayer_peer = peer ui_main_menu.visible = false func _on_peer_connect(id): print("(server) peer connected: ", id) var player: Node3D = Player.instantiate() player.name = str(id) player.set_multiplayer_authority(id) player.global_transform = players.global_transform.translated(Vector3.UP * 3) players.add_child(player, true) func _on_peer_disconnected(id): print("(server) peer disconnected: ", id) var player := players.get_node_or_null(str(id)) if player: player.queue_free()