Crossplay Integration Kit
Multiplayer

Crossplay Lobbies

Create cross-platform lobbies for listen server games with voice chat, host migration, and Steam integration

Crossplay Lobbies

Lobbies are ideal for listen server games where players gather before starting a match. UCIK lobbies provide:

  • Voice chat integration
  • Host migration - lobby persists if host leaves
  • Presence - friends see your lobby status
  • Steam shadow lobbies - automatic Steam friends list integration

Creating a Lobby

Use the Create Crossplay Session node with SessionType = Lobby.

Quick Setup

SessionType = Lobby
Visibility = Public
MaxPlayers = 8
bAutoServerTravel = true
bAutoDetectSessionReady = true
MapName = "/Game/Maps/MyGameMap"

This creates your lobby, travels to the map, and automatically marks the session as ready when the server starts listening.

Parameters

Session Name

The internal session name identifier (e.g., "GameSession"). Must be unique per session.

Settings

Travel & Ready Detection:

ParameterTypeDescription
bAutoServerTravelBooleanAutomatically travel to MapName after lobby creation.
MapNameStringThe map to travel to. Only used if bAutoServerTravel is true.
bAutoDetectSessionReadyBooleanAuto-detect when server starts listening. If false, call SetSessionReady manually.

Lobby Configuration:

ParameterTypeDescription
SessionTypeEnumSet to Lobby for listen server games.
VisibilityEnumPublic: Anyone can find. Friends Only: Friends only. Private: Invite only.
MaxPlayersIntegerMaximum players (2-64 for lobbies).
GameModeStringOptional game mode URL option.
RegionEnumRegion preference (Auto, NA, EU, Asia, etc.).

Lobby-Specific Options:

ParameterTypeDescription
bEnableVoiceChatBooleanEnable built-in voice chat.
bEnableHostMigrationBooleanLobby persists and migrates to another member if host leaves.
bUsePresenceBooleanShow lobby status to friends. Only one session can use presence.
bAllowJoinInProgressBooleanAllow joining after game starts.

Custom Attributes:

ParameterTypeDescription
CustomAttributesMapKey-value pairs (String, Boolean, Integer, Double) for filtering.

Output Delegates

DelegateDescription
OnSuccessLobby created successfully. Returns FUCIK_SessionResult.
OnFailureLobby creation failed. Returns error message.
OnSessionReadyChangedServer started/stopped listening.

Usage Modes

bAutoServerTravel = true
bAutoDetectSessionReady = true
MapName = "/Game/Maps/MyGameMap"

UCIK handles everything automatically.

Manual Travel Mode

bAutoServerTravel = false
bAutoDetectSessionReady = true

You call ServerTravel, UCIK detects when ready.

Full Manual Mode

bAutoServerTravel = false
bAutoDetectSessionReady = false

You control everything. Call SetSessionReady(true) when ready.

Voice Chat

When bEnableVoiceChat is enabled, UCIK sets up EOS voice chat for all lobby members. Voice chat works cross-platform - Steam and Epic players can talk to each other.

Host Migration

With bEnableHostMigration enabled:

  1. Host leaves or disconnects
  2. EOS automatically promotes another member to host
  3. Lobby persists, game can continue
  4. OnHostMigration delegate fires (implement in your game mode)

Without host migration, the lobby is destroyed when the host leaves.

Steam Shadow Lobbies

On Steam, UCIK automatically creates a "shadow lobby" linked to your EOS lobby:

  1. EOS Lobby Created - Gets connect string
  2. Steam Lobby Created - Stores EOS connect string as lobby data

This enables:

  • Steam friends list shows your lobby
  • Steam overlay invites work
  • Steam lobby browser can find your game
  • Players connect via EOS for cross-platform play

Shadow Lobby Data

KeyValue
EosJoinAddrEOS connect string
IsEosSession"true"
EosSessionIdEOS lobby ID
IsListeningServer ready state

You don't need to manage this - UCIK handles it automatically.

Custom Attributes

Store game-specific data for filtering and display:

Key: "MapName"      → String "Sanctuary"
Key: "GameMode"     → String "TeamDeathmatch"
Key: "MinLevel"     → Integer 10
Key: "RankedMatch"  → Boolean true

Use these when finding lobbies to filter results.

Session Result

The FUCIK_SessionResult returned contains:

FieldTypeDescription
bSuccessBooleanWhether creation succeeded.
SessionIdStringEOS Lobby ID.
PlatformLobbyIdStringSteam Lobby ID.
ConnectStringStringAddress for joining.
bIsListeningBooleanServer accepting connections.
ErrorMessageStringError details if failed.

Platform Support

PlatformEOS LobbyShadow Lobby
Windows (Steam)YesSteam Lobby
Windows (Epic)Yes-
Mac (Steam)YesSteam Lobby
Linux (Steam)YesSteam Lobby
iOSYes-
AndroidYes-

FAQs

When should I use Lobby vs Session?

Use Lobby for:

  • Listen server games (player hosts)
  • Games needing voice chat
  • Games needing host migration
  • Social/party games
  • Up to 64 players

Use Session for dedicated servers. See Sessions.

Do I need to handle Steam separately?

No. UCIK creates and manages the Steam shadow lobby automatically. Your Blueprint code is platform-agnostic.

What happens if host leaves without host migration?

The lobby is destroyed and all players are disconnected. Enable bEnableHostMigration to prevent this.


Next: Sessions | Finding Sessions | Joining Sessions

On this page