Godot 4 lan multiplayer

Godot Version

4.3stable

Question

at this point I just want to know is lan multiplayer even possible?

I have been struggling a lot with lan multiplayer I found a tutorial it seems to be working on godot but when I export it the host button stops working I tried debugging and now it gives me error 20 I don’t know what that is
Here is the code for the root node:
‘’’
extends Node2D

@onready var host_button = $host
@onready var join_button = $join
@onready var like_button = $LikeButton
@onready var like_message_label = $Label

var server : ENetMultiplayerPeer = null
var client : ENetMultiplayerPeer = null
var player = -1 # Unique player ID

@rpc(“any_peer”, “reliable”)
func send_like(player_id):
print(“Player " + str(player_id) + " liked the game!”)
like_message_label.text = “Player " + str(player_id) + " liked the game!”

func _ready():
host_button.pressed.connect(_on_host_pressed)
join_button.pressed.connect(_on_join_pressed)
like_button.pressed.connect(_on_like_button_pressed)

# Listen for new players connecting
multiplayer.peer_connected.connect(_on_peer_connected)

host_button.show()
join_button.show()
like_button.hide()
like_message_label.hide()

func _on_host_pressed():
server = ENetMultiplayerPeer.new()
var error = server.create_server(9999, 10)
if error != OK:
like_message_label.text = "Failed to start server! Error: " + str(error)
like_message_label.show()
return

multiplayer.multiplayer_peer = server
like_message_label.text = "Server started, waiting for players..."
like_message_label.show()

player = multiplayer.get_unique_id()

host_button.hide()
join_button.hide()
like_button.show()

func _on_join_pressed():
client = ENetMultiplayerPeer.new()
client.create_client(“127.0.0.1”, 9999) # Replace with host IP
multiplayer.multiplayer_peer = client

print("Connecting to server...")
like_message_label.text = "Joining game..."
like_message_label.show()

player = multiplayer.get_unique_id()

host_button.hide()
join_button.hide()
like_button.show()

func _on_like_button_pressed():
send_like.rpc(player)

Function to display when a new player joins

func _on_peer_connected(id):
print(“Player " + str(id) + " joined the game!”)
like_message_label.text = “Player " + str(id) + " joined the game!”
like_message_label.show()
‘’’
P.S : I don’t have a PC I am making this on mobile Wich makes debugging even harder

Its possible but testing on mobile will be tough. As far as im aware it cant do multiple debug sessions at the same time very well. Even if you had two mobile devices, you need to deploy with the same code each time, which would making iterating a pain. Maybe Godot 4.4 with its game view tab might fix this.

You can build multiplayer server and client in one scene tree. Use multiple subviewports to watch both client and server. But that could make the code a little complex.

1 Like