Skip to content

Rooms

Rooms are the base capability for Multiplayer lobby. Realtime messaging, state and RPC, and Mirror transport all depend on the room flow.

Room support covers entering a room, ready, start, finish, rematch, leave, and player join / leave events. The room flow usually requires the IGP desktop client to launch the game through the local testing or formal launch flow.

EngineStatusNotes
UnityPreviewComplete main room flow is available.
GameMakerNot supportedThe first GameMaker release does not include room capabilities.
GodotIn developmentThe preview runtime already has room lifecycle calls.
  • Startup and connection is complete.
  • The game is launched by the IGP desktop client and receives multiplayer launch information.
  • Unity scene keeps exactly one IGPRuntimeManager.
  • Godot project has registered IGPGodotAutoload.
using UnityEngine;
using IGP.UnitySDK;
using IGP.UnitySDK.Models;
public sealed class IGPRoomDriver : MonoBehaviour
{
[SerializeField] private IGPRuntimeManager runtimeManager;
private void OnEnable()
{
runtimeManager.onRoomJoined.AddListener(OnRoomJoined);
runtimeManager.onRoomUpdated.AddListener(OnRoomUpdated);
runtimeManager.onRoomLeft.AddListener(OnRoomLeft);
}
private void OnDisable()
{
runtimeManager.onRoomJoined.RemoveListener(OnRoomJoined);
runtimeManager.onRoomUpdated.RemoveListener(OnRoomUpdated);
runtimeManager.onRoomLeft.RemoveListener(OnRoomLeft);
}
private async void OnRoomJoined(Room room)
{
Debug.Log($"Joined room {room.id}");
await runtimeManager.SetReadyAsync(true);
}
public async void StartGame()
{
await runtimeManager.StartHostedGameAsync();
}
public async void FinishGame()
{
await runtimeManager.FinishHostedGameAsync();
}
public async void LeaveRoom()
{
await runtimeManager.LeaveHostedRoomAsync();
}
private void OnRoomUpdated(Room room) {}
private void OnRoomLeft(Room room) {}
}
EngineCheckpoint
UnityonRoomJoined is received and SetReadyAsync(true) succeeds.
GameMakerRoom validation is not performed currently.
GodotRoomSnapshotReceived is received and SetReadyAsync(true) succeeds.
  • Cannot enter a room: first confirm the game is launched by the IGP desktop client.
  • Unity room disconnects after a scene switch: check whether a second IGPRuntimeManager was created.
  • ready does not take effect: call ready only after the room has been joined.
  • Godot does not receive room snapshots: confirm bootstrap is complete and the room multiplayer connection is established.