You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: automated_updates_data.json
+4Lines changed: 4 additions & 0 deletions
Original file line number
Diff line number
Diff line change
@@ -84,6 +84,10 @@
84
84
{
85
85
"date": "2026-03-24",
86
86
"summary": "Fixed device-sensors docs (typo in gamma rotation description, wrong units deg/s vs m/s² for rotation values, clarified Is Absolute expression, added gravity note to acceleration) and fixed broken wiki URL in advanced-conditions OR condition"
87
+
},
88
+
{
89
+
"date": "2026-04-02",
90
+
"summary": "Improved multiplayer docs: added Quick Join section, documented player username/ping/last-joined/last-left expressions, lobby ID expression, custom message variable variant, and synchronization rate action"
Copy file name to clipboardExpand all lines: docs/gdevelop5/all-features/multiplayer/index.md
+28-1Lines changed: 28 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -111,13 +111,31 @@ Typically, you can use this condition to either start moving things in your game
111
111
- Condition and expression **Player number**. Use this expression or condition to retrieve and compare the player number of a player in the lobby. Numbers are 1, 2, 3, etc.
112
112
This will be particularly useful during the game so you can assign who has permissions to do what, and who is in charge of what, depending on the player number.
113
113
114
+
- Expression **Current lobby ID**: returns the unique identifier of the current lobby. Useful if you want to let players invite friends directly to a specific lobby.
115
+
116
+
- Expressions **Player username** and **Current player username**: return the GDevelop/gd.games username of a specific player (by player number) or of the current player. You can use these to display player names in the game HUD.
117
+
118
+
- Expressions **Player ping** and **Current player ping**: return the network latency in milliseconds for a given player or for the current player. Useful to display connection quality indicators.
119
+
120
+
- Expressions **Player number that just joined** and **Player number that just left**: return the player number of the most recent player to join or leave the lobby. Use alongside the conditions **Any player has joined** / **Any player has left** when you need to react generically without checking each player number individually.
121
+
114
122
- Conditions **Player has left**:
115
123
use this condition to know if a player has left the lobby. This can be useful to adapt your game if a player leaves the game, either by ending the game or adapt the difficulty of the game.
116
124
117
125
When developing the game, you can open multiple preview windows and join the same lobby with the same account. This way, you can test the multiplayer features without needing multiple devices.
118
126
119
127

120
128
129
+
### Quick join: skipping the lobby screen
130
+
131
+
Instead of showing the full lobbies UI, you can use **Quick join** to instantly place a player into the next available lobby without any intermediate screen. This is useful for games where you want a seamless "play now" experience.
132
+
133
+
- The action **Join the next available lobby** will search for an open lobby and join it automatically. You can optionally show a loading indicator and fall back to the full lobbies window if no lobby is available.
134
+
- The action **Join a specific lobby by its ID** lets you send a player directly to a known lobby (for invite links or friend sessions). Use the **Current lobby ID** expression to obtain the lobby ID from the host and share it with others.
135
+
136
+
Use the condition **Is searching for a lobby to join** to know if the quick join is still in progress, and **Quick join failed to join a lobby** to detect failure (for example to show an error message or open the full lobby screen instead).
137
+
The expression **Quick join failure reason** returns `'FULL'` when all lobbies are full, `'NOT_ENOUGH_PLAYERS'` when the lobby requires more players to start, or `'UNKNOWN'` for other errors.
138
+
121
139
### Letting players join a game in progress
122
140
123
141
By default, a lobby allows players to join a game in progress. If your game shouldn't support this, you can disable this feature in the lobbies configuration.
@@ -323,7 +341,12 @@ For instance, when an arrow shot by a player hits another character or an enemy,
323
341
324
342
!!! note
325
343
326
-
You can also use the action **Send a custom message to other players** in this case. This action sends a message to other players. For instance a message `Arrow hit player 2` can be sent to all players, so that they can handle the collision on their side, using the condition to read the custom message.
344
+
You can also use **custom messages** in this case. Two actions are available:
345
+
346
+
- **Send a custom message to other players** — sends a named text message with a string payload.
347
+
- **Send a custom message with a variable to other players** — sends a named message whose payload is taken from a variable (useful for structured data like coordinates or health values).
348
+
349
+
Both actions include an automatic retry system so the message is reliably delivered. Use the condition **Message has been received** (with the message name) to react when the message arrives. Use the action **Get message variable** to copy the message payload into a variable, or the expression **Message data** to read the payload as a string, and **Message sender** to know which player number sent it.
327
350
328
351
### Can I still do procedural generation of objects in a multiplayer game?
329
352
@@ -336,6 +359,10 @@ If a player is disconnected or close the game, other players will be notified (t
336
359
If the host quits the game, the lobby game will be ended for all players.
337
360
Note that each player's scene will keep running unless you use the condition to check for lobby game ending (usually, to redirect to a menu or back to the lobbies).
338
361
362
+
### Adjusting the synchronization rate
363
+
364
+
By default, synchronized objects send updates **30 times per second**. You can adjust this with the **Objects synchronization rate** action (accepts values from 1 to 60). Lowering the rate reduces bandwidth usage at the cost of less smooth replication; raising it improves smoothness but increases traffic. In most cases the default of 30 is a good balance.
0 commit comments