コンテンツにスキップ

起動と接続

起動と接続は、すべての機能の前提となるフローです。エンジンごとに導入方法は異なりますが、目的は共通しています。ゲームが appId を取得し、ローカルの IGP デスクトップクライアントへ接続し、必要に応じてマルチプレイヤーロビーフローへ入れるようにします。

この層では主に次を扱います。

  • appId の読み取りまたは設定
  • ゲーム起動フローから明示的に SDK 初期化を実行すること
  • ローカル IGP デスクトップクライアントへの接続
  • 接続状態の確認
  • デスクトップクライアントが現在公開している機能の照会
  • IGP デスクトップクライアントからゲーム起動時に注入されるパラメータの処理
  • ルーム、リアルタイム通信、状態、RPC の場面でのルームマルチプレイヤー接続の確立
エンジン状態説明
UnityPreviewIGPRuntimeManager がデスクトップクライアント接続、起動パラメータ、ルームマルチプレイヤー接続を担当します。
GameMakerPreviewWindows runtime が初期化、毎フレーム更新、機能照会、イベントキューを担当します。
Godot開発中コマンドラインパラメータで bootstrap し、autoload でルームマルチプレイヤー機能を公開します。
  • ローカルに IGP デスクトップクライアントがインストールされている。
  • ゲームが IGP から割り当てられた appId を取得している。
  • ゲームの起動フローから IGP SDK の初期化メソッドを呼び出す。
  • ルーム、リアルタイム通信、状態、RPC が必要な場合、ゲームは IGP デスクトップクライアントの連携テストフローから起動する必要があります。
  • 実績、ゲーム認可、実名認証とアンチアディクションだけを検証する場合も、IGP デスクトップクライアント接続が必要です。

初期化は、ゲームプロジェクト側の起動フローで制御します。SDK コンポーネントをシーンに置くだけでは SDK は起動しません。

Unity では、IGPRuntimeManager.InitializeAsync() を呼び出して SDK を初期化します。

GameMaker では、igp_init(...) を呼び出して runtime を初期化します。

Unity では、シーンに IGPRuntimeManager を 1 つ配置し、appId を設定し、起動フローから InitializeAsync() を呼び出してください。

using UnityEngine;
using IGP.UnitySDK;
public sealed class IGPStartupDriver : MonoBehaviour
{
[SerializeField] private IGPRuntimeManager runtimeManager;
private void OnEnable()
{
if (runtimeManager == null)
{
return;
}
runtimeManager.onConnectionStateChanged.AddListener(OnConnectionChanged);
runtimeManager.onRoomJoined.AddListener(room =>
{
Debug.Log($"IGP room joined: {room.id}");
});
runtimeManager.onError.AddListener(error =>
{
Debug.LogError($"IGP runtime error: {error}");
});
}
private async void Start()
{
await runtimeManager.InitializeAsync();
}
private void OnDisable()
{
if (runtimeManager == null)
{
return;
}
runtimeManager.onConnectionStateChanged.RemoveListener(OnConnectionChanged);
}
private void OnConnectionChanged(bool connected)
{
Debug.Log($"IGP connected={connected}");
}
}

Unity Editor で完全なルームフローをデバッグする場合は、Unity デバッグ を参照してください。

エンジン最小確認
UnityUnity Quick Start を完了し、ルームなし接続ではデスクトップ機能の結果を確認し、ルーム接続ではルーム参加と ready のログを確認する。
GameMakerGameMaker Quick Start を完了し、接続状態が disconnected のままになっていないことを確認する。
Godotプレビュー工程で BootstrapFromCommandLineAsync() が成功し、ルームスナップショットを受信することを確認する。

より完全なチェックリストは テスト を参照してください。

  • appId がない: まずプラットフォームから割り当てられた appId を設定してください。
  • SDK から接続やイベントが発生しない: IGPRuntimeManager.InitializeAsync() または対象エンジンの初期化入口を呼んでいるか確認してください。
  • デスクトップクライアントから起動していない: ルーム、リアルタイム通信、状態、RPC は通常、完全には利用できません。
  • 接続状態が失敗し続ける: ローカル IGP デスクトップクライアントがインストールされ、起動できるか確認してください。
  • Unity でシーン切り替え後に切断される: フロー全体で IGPRuntimeManager が 1 つだけであることを確認し、必要に応じてシーンをまたいで保持してください。