コンテンツにスキップ

状態と RPC

状態と RPC は マルチプレイヤーロビー のサブ機能です。状態はルーム内の共有データやプレイヤーデータを同期するために使い、RPC はルーム内で名前付きロジックを呼び出すために使います。どちらもプレイヤーがルームに参加した後で使用します。

エンジン状態説明
UnityPreviewstate set / get / reset と RPC register / call / unregister をサポートします。
GameMaker未対応現在の GameMaker 初回公開版には状態と RPC は含まれません。
Godot開発中プレビュー runtime には JSON 状態と RPC 呼び出しがあります。
  • ルーム の最小フローが完了している。
  • ルームに参加済みである。
  • 状態 key と RPC 名称は安定している必要があります。
  • Unity でイベントを受け取る場合は、シーンに IGPEventManager も配置してください。
using System;
using UnityEngine;
using IGP.UnitySDK;
public sealed class IGPStateRpcDriver : MonoBehaviour
{
[SerializeField] private IGPRuntimeManager runtimeManager;
public async void SetGlobalScore()
{
await runtimeManager.SetGlobalStateAsync("match.score", new
{
red = 1,
blue = 0,
updatedAt = DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(),
});
}
public async void RegisterEchoRpc()
{
await runtimeManager.RegisterRPCAsync("sample.echo");
}
public async void CallEchoRpc()
{
var requestId = await runtimeManager.CallRPCAsync(
"sample.echo",
new { text = "hello" },
"all");
Debug.Log($"RPC request id={requestId}");
}
}

状態と RPC イベントを受け取る場合は、シーンに IGPEventManager を配置し、その状態変化イベントと RPC イベントを監視します。

エンジン確認項目
Unity状態設定後に状態変化を受け取れる。RPC を登録、呼び出し、応答できる。
GameMaker現在は状態と RPC の検証対象外です。
GodotSetStateJsonAsyncGetStateAsyncCallRpcJsonAsync が順に完了する。
  • 状態を読み取れない: scope と key が完全に一致しているか確認してください。
  • RPC が発火しない: まず該当する RPC 名称が登録済みか確認してください。
  • Unity でイベントを受け取れない: シーンに IGPEventManager があり、関連イベントがバインドされているか確認してください。
  • Godot の JSON が失敗する: まず {"value":1} のような単純なオブジェクト文字列で検証してください。