コンテンツにスキップ

ルーム

ルームは マルチプレイヤーロビー の基礎機能です。リアルタイム通信、状態と RPC、Mirror transport はすべてルームフローに依存します。

ルーム機能は、ルーム参加、ready、開始、終了、再戦、退出、およびプレイヤー参加 / 退出イベントをカバーします。ルームフローでは通常、連携テストまたは正式フローに従って IGP デスクトップクライアントからゲームを起動する必要があります。

エンジン状態説明
UnityPreview完全な主要ルームフローを提供しています。
GameMaker未対応現在の GameMaker 初回公開版にはルーム機能は含まれません。
Godot開発中プレビュー runtime にはルームライフサイクル呼び出しがあります。
  • 起動と接続 が完了している。
  • ゲームが IGP デスクトップクライアントから起動され、マルチプレイヤー起動情報を受け取っている。
  • Unity シーンに IGPRuntimeManager が 1 つだけ保持されている。
  • Godot プロジェクトで 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) {}
}
エンジン確認項目
UnityonRoomJoined を受け取り、SetReadyAsync(true) が成功する。
GameMaker現在はルーム検証の対象外です。
GodotRoomSnapshotReceived を受け取り、SetReadyAsync(true) が成功する。
  • ルームに入れない: まずゲームが IGP デスクトップクライアントから起動されているか確認してください。
  • Unity でシーン切り替え後にルームが切断される: 2 つ目の IGPRuntimeManager が作成されていないか確認してください。
  • ready が反映されない: ルーム参加後に ready を呼び出しているか確認してください。
  • Godot でルームスナップショットを受け取れない: bootstrap が完了し、ルームマルチプレイヤー接続が確立されているか確認してください。