コンテンツにスキップ

Unity Quick Start

このページでは最小の Core 接続を扱います。Multiplayer は Playing 開始後、 RoomNode の reliable / unreliable lane でゲームデータを同期します。 Core は現在の Unity runtime platform を DesktopMobile の順に判定し、 一致した runtime を 1 つだけ作成します。attach 失敗で platform は切り替わらず、 利用者による選択も不要です。Multiplayer は platform や初期化 mode を持ちません。Runtime は Core から descriptor を取得するか、呼び出し元から明示的に受け取ります。 RoomChanged と Runtime のルームライフサイクル API は Game data plane の 接続入口ではありません。

  • cn.indiegp.sdk.unity を導入済み
  • Unity 2022.3 LTS
  • Windows 10 以上
  • IGP 運用から割り当てられた appId
  • Desktop 機能を確認する場合、対応する IGP デスクトップクライアントに ログイン済み

1. 最小初期化スクリプトを追加する

Section titled “1. 最小初期化スクリプトを追加する”

Assets/Scripts/IGPQuickstartDriver.cs を作成します。

using IGP.UnitySDK;
using UnityEngine;
public sealed class IGPQuickstartDriver : MonoBehaviour
{
[SerializeField] private IGPRuntimeManager runtime;
private async void Start()
{
runtime ??= FindObjectOfType<IGPRuntimeManager>();
if (runtime == null || !await runtime.InitializeAsync())
{
Debug.LogError("IGP Core initialization failed.");
return;
}
Debug.Log($"IGP Core ready. Desktop attached={runtime.IsDesktopSessionAttached}");
}
[ContextMenu("IGP/Unlock Quickstart Achievement")]
private async void UnlockAchievement()
{
var result = await IGPSDK.UnlockAchievementAsync(runtime, "first_session");
Debug.Log($"Unlock success={result.success}, duplicated={result.duplicated}");
}
}
  1. IGPBootstrap などの常駐オブジェクトを作成します。
  2. IGPRuntimeManagerIGPQuickstartDriver を追加します。
  3. 生成された IGPConfigappId を設定します。
  4. 有効な IGPRuntimeManager は 1 つだけにします。

コンポーネントを置くだけでは SDK は起動しません。ゲームの起動処理から InitializeAsync() を明示的に呼び出してください。

Play mode で次を確認します。

  1. InitializeAsync() が成功する。
  2. Desktop 機能を使う場合、IsDesktopSessionAttached == true になる。
  3. 必要に応じて実績コマンドを実行し、結果を確認する。

Core の初期化成功は、RoomNode データプレーン接続を意味しません。現在の Host の descriptor 経路がない場合、Multiplayer は warning を記録し、 IsRuntimeCreated == false のままです。IsRuntimeCreatedIsRealtimeReady、 Game メッセージ送受信で検証し、RoomChanged を受け入れ条件にしないでください。

InitializeAsync() 完了後、ゲームは runtime.RuntimeInfo.SaveRootPath から現在の ゲームインスタンスのセーブルートを取得し、そのディレクトリ配下にゲーム独自の セーブファイルを整理、作成、読み書きできます。

var saveRootPath = runtime.RuntimeInfo.SaveRootPath;

この値は Host が提供します。利用可能なディレクトリがない場合、プロパティは空文字列 になるため、別のローカル保存先を使うかどうかはゲーム側で決めてください。SDK はこの ディレクトリを作成、変更、削除、管理せず、返されたパスの正規化も行いません。 SaveRootPath はコマンドライン引数ではなく、--game-params は任意のゲーム起動文字列を 渡すためだけに使用します。