Skip to main content
This guide provides a step-by-step walkthrough of how to use the PlayFlow Lobby SDK. We’ll cover setting up, creating, managing, and joining lobbies with practical code examples. For a high-level overview of the concepts, please see the Beginner’s Guide to Lobbies.

Prerequisites

Before you write any lobby code, make sure you have:
  • The PlayFlow Unity SDK installed in your project.
  • A PlayFlow project created in the dashboard, with your API key copied from the project’s settings. Use a client key (prefix pfclient_) in game builds you ship to players — it is safe to embed. Keep server keys (prefix pf_) server-side only.
  • The SDK configured with that API key so it can reach the lobby API.
The player ID you pass to Initialize becomes the identity the lobby API trusts for that client. If you have configured a player-auth provider on your project, the SDK sends a verified player token instead and the player ID is derived from it.

Initial Setup (5 Minutes)

First, you need to get the Lobby Manager set up in your game.

Step 1: Configure in Dashboard

Before you write any code, set up a lobby configuration in your PlayFlow project dashboard.
  1. Go to your project’s ConfigurationLobbies tab.
  2. Create a new lobby configuration (e.g., “Default” or “Ranked”).
  3. Select the game server build and instance type this lobby will use.
  4. Save your configuration.

Step 2: Initialize the SDK

To use the lobby system, you must initialize it with a unique ID for the current player.
Add the PlayFlowLobbyManagerV2 component to a GameObject in your scene. Then, in a script, call the Initialize method.

Basic Lobby Actions

Once the SDK is initialized, you can start performing lobby actions.

Creating a Lobby

To create a new lobby, specify a name, the max number of players, and whether it’s private.

Joining a Lobby

Every lobby gets an invite code when it is created, public and private alike. Players can join a public lobby by its ID or by its code. Private lobbies can only be joined by code — a direct join by ID is rejected.

Listing Public Lobbies

To build a server browser, you can fetch a list of all available public lobbies.

Managing the Match

Starting a Match

When everyone is ready, the host can start the match. This will begin the process of launching a dedicated server.

Connecting to the Server

After a match is started, all players in the lobby need to listen for the OnMatchRunning event. This event provides the IP address and port needed to connect to the game server.

Syncing Player Data

Use UpdatePlayerState to sync custom data for the local player, like their ready status or character choice. This data is automatically sent to all other players in the lobby.
To read another player’s data, you can access the lobbyStateRealTime dictionary from the CurrentLobby object.

Host-Only Actions

Only the host of a lobby can perform sensitive actions:
  • Kicking a Player: KickPlayer(playerId)
  • Updating Lobby Settings: UpdateLobby(...) / UpdateLobbySettings(...)
Host is assigned automatically. There is no call to hand the host role to a specific player. When the current host leaves, host duty transfers automatically to the next player in the lobby (controlled by the lobby config’s hostLeaveBehavior).
Player state is self-owned. Hosts cannot push state onto other players. Each player updates their own state via UpdatePlayerState() and everyone reacts via OnLobbyUpdated. For team/role assignment, either have players pick their own team or broadcast assignments through UpdateLobbySettings() (host-owned) and have each client apply them locally.

Next Steps

Matchmaking Guide

Learn how to use the matchmaking system to find opponents automatically.

Lobby Events Reference

See a full list of all the events you can subscribe to for building a responsive UI.