If I figure this out, I’ll contribute to the docs with examples and clarifications.
I want to make a template project for anyone to use and learn from.
Question
How can I send and receive raw packets (likely with put_packet and get_packet) between clients, using a client-server structure where packets are relayed between all clients?
Using ENet, specifically without rpc, it must be possible since we have an ENetPacketPeer that inherits PacketPeer (unless it’s broken ).
(I tried this for ~15 hours already , read tons of docs, searched forums, issues, read C++ source code, and created 5 blank test projects to try everything that came to mind… no success.)
Could anyone create a tiny minimal repro code that proves this is even possible in Godot 4.2?
extends Node
# ---------- Setup server or client ----------
func setup_network(is_server: bool):
var peer := ENetMultiplayerPeer.new()
if is_server:
peer.create_server(55556)
else:
peer.create_client("127.0.0.1", 55556)
multiplayer.multiplayer_peer = peer
multiplayer.peer_connected.connect(peer_connected_callback)
multiplayer.peer_packet.connect(received_message_callback)
# ---------- Button signals ----------
func _on_start_server_button_pressed():
setup_network(true)
func _on_start_client_button_pressed():
setup_network(false)
func _on_send_message_button_pressed():
var msg = "Hi from %d" % local_id()
multiplayer.send_bytes(msg.to_utf8_buffer())
# ---------- Network signal callbacks ----------
func received_message_callback(id: int, packet: PackedByteArray):
print(
"peer %d: received msg from peer %d '%s'"
% [local_id(), id, packet.get_string_from_utf8()]
)
func peer_connected_callback(connected_peer_id: int):
print('peer %d: received connection signal from (peer %d)' % [local_id(), connected_peer_id])
# ---------- Utils ----------
func local_id() -> int:
return multiplayer.multiplayer_peer.get_unique_id()
(Your link points to send_bytes, it took me a minute to find out that I also needed to use the SceneMultiplayer.peer_packet signal , now I need to put an example in the docs)