Skip to main content
Flock’s multiplayer brings players together and connects them. Friends form a party, the party or a lone player finds a match or joins a friend’s game by code, and every game is a session: one player hosts, the others hold seats. The SDK then connects the players over your game’s networking: Netcode for GameObjects on Unity, the engine’s own networking on Unreal. Players on the host’s network connect to it directly; everyone else goes through Flock’s relay, so nobody forwards a port, and on Unity moves to a direct path to the host when the two can reach each other. When the host leaves, another player takes over.
Scope: matchmaking queues and multiplayer settings are defined per game; parties and seats belong to a player.

Parties

Friends who stay together from one game to the next.

Matchmaking

Fill a game from a queue, alone or as a party.

Sessions

One game: a host, its players and a join code.

Connecting players

Netcode for GameObjects or Unreal’s own networking, the relay, and host changes.

Setting up

Open Multiplayer → Sessions and click Multiplayer settings. The defaults suit most games:Then make a queue for each mode under Multiplayer → Matchmaking; see Matchmaking.

Which setup fits your game

Several players on one device (split screen, shared controllers) need none of this: that is one game with one Flock player, and Flock’s multiplayer connects devices.
  • Local co-op: nothing beyond the multiplayer settings.
  • Online co-op with friends: leave Hand out relay credentials on.
  • Online matchmaking: a queue for each mode under Multiplayer → Matchmaking, with its smallest and largest match.
  • Friends matched together: a queue whose largest match holds the whole party.
  • Streamers and competitive play: nothing more; the choice is made in the game.

What the SDK does for you

  • Keeps each seat. It sends the session’s heartbeat every 20 seconds while the game runs.
  • Keeps your objects current. It reads the party, a search and the session in the background, and raises events when something changed: a player joined, the leader or host changed, a search ended, the session ended.
  • Finds the session again after the game restarts (GetMySessionAsync, or GetMySession on Unreal), and the party (GetMyPartyAsync, or GetMyParty).
  • Gives the seat up when the game quits, so the others see it at once.

What counts as an API call

The background reads (the party, a search, the session, waiting for the host to say where it is) and heartbeats are not billed as API calls. They share a limit of 120 a minute per player; the SDK’s defaults use under 60. Actions are billed as usual: making or joining a party or session, starting a search, leaving, the host’s check of each joining player, relay logins, and a relayed player telling the host its relay address (once for each address).

Which games it fits

The host is one of the players, sessions hold up to 16, and matching is first come, first served.

Limits today

  • No dedicated servers. A player hosts every session.
  • No skill or region matching yet. Flock stores what a search sends but matches in the order players search. Use a queue per mode and region.
  • A host cannot remove a player, and a session’s data is set once when it is created.
  • One kind of networking per engine. On Unity, Netcode for GameObjects 1.x and 2.x; on Unreal, the engine’s own IP networking, not Steam’s sockets. Other networking uses the session’s published connection and join token directly; see Connecting players.
  • On Unreal, relayed players stay on the relay. The Unreal SDK has no direct path yet, so each of their packets takes the relay’s extra hop.
  • Web players can use parties, matchmaking and sessions, but not the relay: a browser cannot send UDP.