Lobby Service
The Lobby Service is a middleware API for rooms
enabling players to create and find existing matches. It can be useful for games that are looking to have a player-driven server browsing (an alternative to a matchmaker).
Check out Bullet Mania, a showcase game that uses our Lobby Service.
Features
With our managed Lobby Service, you can:
- Rate limit the number of lobbies a player can create (defaults to 10 lobbies per hour).
- Create and update lobby configurations as JSON blobs.
- Create private lobbies to allow for a
room
code sharing system. - List active public lobbies to allow for a server browsing system.
CreateRoom vs. CreateLobby
CreateRoom is an admin API call, called on behalf of a developer, and CreateLobby is a player API call, called on behalf of a player.
CreateRoom | CreateLobby |
---|---|
Create a room in a specified region | Create a room in a specified region |
Call from server or middleware (i.e. matchmaker) | Call from client code |
Developer authentication | Player authentication |
- | Rate limit players on lobby creation |
- | Create and update lobby configuration |
Developer authentication used in CreateRoom
is a secret token that players should never have access to, do not expose it to the client at any point.
We require a secret token to call the CreateRoom
endpoint because it schedules compute on our platform that you'll pay for. If players could call CreateRoom
directly then they could spam room creation and run up your bill. Our Lobby Service has player authentication and rate limiting to prevent this scenario.
Manage lobby configuration
Configure and manage lobby metadata using roomConfig
. User input can be stored in roomConfig
to initialize a match when CreateLobby()
is called. However, once a match is initialized, only your game server code can update roomConfig
using UpdateRoomConfig()
. roomConfig
can be any string including a stringified JSON but must be <= 10k characters.
roomConfig
is accessible by both game client and server. Here are a couple ways to use roomConfig
:
- user input to initialize a match using
CreateLobby()
- Example use-cases:
- Number of players allowed in the room
- Map selection
- Example use-cases:
- game server code updates match progress using
UpdateRoomConfig()
- Example use-cases:
- Live player count to enforce max number of clients
- Persist end-game data like winner and final scores
- Example use-cases: