Godot example errors

The Godot API and quickstart example template don't work the way I assume they're intended to work. For example, when running the unmodified template with 2 clients, you can see that after connecting both clients and then disconnecting one, the Menu will also pop up on the client that you did not disconnect with. This is because the server_connected and server_disconnected signals are emitted for every other peer, but the code in main.gd of the example appears to assume that it is being called for whenever the client itself connects/disconnects to the server. Here's an example console output with some additional prints.
2 Replies
Xen
XenOP14mo ago
[Rivet] request=lobbies.find_or_create result=ok elapsed=117ms
[Rivet] Connecting to lobby: { "id": "00000000-0000-0000-0000-000000000000", "version": "default", "tags": { "test": "5" }, "region": { "slug": "local", "name": "Local", "latitude": 32.23233, "longitude": -110.96167 }, "createdAt": 1730310247233, "readyAt": 1730310247233, "players": 20, "maxPlayers": 32, "maxPlayersDirect": 32, "backend": { "localDevelopment": { "ports": { "game": { "protocol": "udp", "hostname": "127.0.0.1", "port": 7777 } } } } } { "token": "player_nTrehlYNIC37U9nMXOXAkpzo72GGgnjrfvQO3L7P", "id": "b9e4694c-20fc-4000-b28d-ebe91fb26994" }
[Rivet] Connecting to ENet server: 127.0.0.1:7777
[Rivet] Authenticating with server
[Rivet] Connected to server
[Rivet] Peer connected: 1
_on_server_connected | id: 1 multiplayer.get_unique_id(): 1838460286
[Rivet] request=lobbies.find_or_create result=ok elapsed=117ms
[Rivet] Connecting to lobby: { "id": "00000000-0000-0000-0000-000000000000", "version": "default", "tags": { "test": "5" }, "region": { "slug": "local", "name": "Local", "latitude": 32.23233, "longitude": -110.96167 }, "createdAt": 1730310247233, "readyAt": 1730310247233, "players": 21, "maxPlayers": 32, "maxPlayersDirect": 32, "backend": { "localDevelopment": { "ports": { "game": { "protocol": "udp", "hostname": "127.0.0.1", "port": 7777 } } } } } { "token": "player_D8SJwH69Dpn1BeftUfbGyupGiAvurZw8n3Xh7OIa", "id": "df65b7ed-ffd2-4ecf-b59b-ff2c65ba68fe" }
[Rivet] Connecting to ENet server: 127.0.0.1:7777
[Rivet] Authenticating with server
[Rivet] Peer connected: 192359596
_on_server_connected | id: 192359596 multiplayer.get_unique_id(): 1838460286
[Rivet] Connected to server
[Rivet] Peer connected: 1
_on_server_connected | id: 1 multiplayer.get_unique_id(): 192359596
[Rivet] Peer connected: 1838460286
_on_server_connected | id: 1838460286 multiplayer.get_unique_id(): 192359596
[Rivet] request=lobbies.find_or_create result=ok elapsed=117ms
[Rivet] Connecting to lobby: { "id": "00000000-0000-0000-0000-000000000000", "version": "default", "tags": { "test": "5" }, "region": { "slug": "local", "name": "Local", "latitude": 32.23233, "longitude": -110.96167 }, "createdAt": 1730310247233, "readyAt": 1730310247233, "players": 20, "maxPlayers": 32, "maxPlayersDirect": 32, "backend": { "localDevelopment": { "ports": { "game": { "protocol": "udp", "hostname": "127.0.0.1", "port": 7777 } } } } } { "token": "player_nTrehlYNIC37U9nMXOXAkpzo72GGgnjrfvQO3L7P", "id": "b9e4694c-20fc-4000-b28d-ebe91fb26994" }
[Rivet] Connecting to ENet server: 127.0.0.1:7777
[Rivet] Authenticating with server
[Rivet] Connected to server
[Rivet] Peer connected: 1
_on_server_connected | id: 1 multiplayer.get_unique_id(): 1838460286
[Rivet] request=lobbies.find_or_create result=ok elapsed=117ms
[Rivet] Connecting to lobby: { "id": "00000000-0000-0000-0000-000000000000", "version": "default", "tags": { "test": "5" }, "region": { "slug": "local", "name": "Local", "latitude": 32.23233, "longitude": -110.96167 }, "createdAt": 1730310247233, "readyAt": 1730310247233, "players": 21, "maxPlayers": 32, "maxPlayersDirect": 32, "backend": { "localDevelopment": { "ports": { "game": { "protocol": "udp", "hostname": "127.0.0.1", "port": 7777 } } } } } { "token": "player_D8SJwH69Dpn1BeftUfbGyupGiAvurZw8n3Xh7OIa", "id": "df65b7ed-ffd2-4ecf-b59b-ff2c65ba68fe" }
[Rivet] Connecting to ENet server: 127.0.0.1:7777
[Rivet] Authenticating with server
[Rivet] Peer connected: 192359596
_on_server_connected | id: 192359596 multiplayer.get_unique_id(): 1838460286
[Rivet] Connected to server
[Rivet] Peer connected: 1
_on_server_connected | id: 1 multiplayer.get_unique_id(): 192359596
[Rivet] Peer connected: 1838460286
_on_server_connected | id: 1838460286 multiplayer.get_unique_id(): 192359596
I'm pretty sure the expected behavior for the _on_server_connected and _on_server_disconnected callbacks are for them to be connected to multiplayer.connected_to_server.connect(_on_server_connected) and multiplayer.server_disconnected.connect(_on_server_disconnected) respectively. There's no need for RivetMultiplayerManager to try to forward the server_connected and server_disconnected signals out of multiplayer.peer_connected(id: int) (Sorry if this post is a little long and confusing. I figured out the correct solution halfway through typing it.)
ptato
ptato14mo ago
hey, appreciate the bug report. godot is currently on the backburner (for now) but we'll make sure this gets fixed asap

Did you find this page helpful?