Skip to main content
A session is one game. One player hosts it and the others hold seats, up to 16 in all. A player hosts a session and reads out its join code, or a match makes one. A player holds one seat at a time: hosting or joining another session gives up the one held. When the host leaves, the player seated longest becomes the host.
Scope: sessions belong to one game; a seat belongs to a player.
Multiplayer → Sessions lists the Live Sessions and the Session History. Each session’s details show its host and Host changes, its Connection, Join code, Participants, and the Relay credentials drawn by its players. Multiplayer settings on the same page set the seat count, timeouts and maximum age; see Multiplayer.

Game versions

A session takes only players on the host’s Game Version unless the host passes sameVersionOnly: false (Unreal: bSameVersionOnly false). A player on another build is refused with MultiplayerVersionMismatch; ask them to update.

When a player goes quiet

The SDK sends a heartbeat every 20 seconds while the game runs, so a playing player never times out. What happens when the game stops running (where a cell gives two names, the first is Unity’s and the second Unreal’s):

When a session ends

Ended (OnEnded on Unreal) is raised once with the reason. On Unity the reason is a FlockMultiplayerSessionEndReason; on Unreal it is a string, compared with the constants of FlockMultiplayerSessionEndReasons, which carry the same names (FlockMultiplayerSessionEndReasons::EndedByHost is ended_by_host). The server can add reasons, so keep a default: Ended (OnEnded) is not raised when the game quits.

Errors

Each code is a FlockErrorCode on Unity and an EFlockErrorCode on Unreal, with the same name, and the error carries a hint naming the fix.