Skip to content

Desuq Cafe

ドキュメントメニュー

この翻訳は最新の英語版より遅れている場合があります。 英語版を表示

ゲームイベントと General ハンドラー

エンジンから OBS へ構造化イベントをプッシュする機能と、単一の OBS ドメインに属さないエンドポイントをまとめた General ハンドラーという、二つの関連する機能について説明します。

ゲームイベントを OBS へ送信する

エンジンから OBS へ、名前空間付きの CustomEvent として構造化イベントをプッシュします(エンジン → OBS 方向)。OBS 側のプラグインやスクリプト(Lua/Python)、ブラウザソースのオーバーレイ、または他の接続済み WebSocket クライアントがこれをリッスンして反応できます。

// Send arbitrary JSON
OBS->EmitGameEvent(TEXT("BossDefeated"), TEXT("{\"boss\":\"Dragon\",\"timeSec\":372}"));

// ...or a simple string map (each pair becomes a string field under "payload")
TMap<FString, FString> Payload;
Payload.Add(TEXT("combo"), TEXT("42"));
OBS->EmitGameEventMap(TEXT("ComboMilestone"), Payload);
メソッド説明
EmitGameEvent(EventName, PayloadJson, Realm="inhyeongobs")任意の JSON を送信します。ペイロード文字列が有効な JSON でない場合は false を返し、何も送信しません。
EmitGameEventMap(EventName, Map, Realm="inhyeongobs")各キー/値ペアが payload 以下の文字列フィールドになります。

イベントは OBS の CustomEvent 内の固定エンベロープに包まれます。

{ "realm": "inhyeongobs", "eventType": "BossDefeated", "payload": { }, "ts": 0 }

省略可能な Realm 引数(デフォルト "inhyeongobs")はイベントに名前空間を付与し、リスナーがフィルタリングできるようにします。これらのメソッドは General ハンドラーの BroadcastCustomEvent の上に構築されており、EmitGameEvent はその構造化ラッパーであり、General ハンドラーの機能の中で Subsystem の直接ショートカットを持つ唯一のものです。

注意: OBS はカスタムイベントを送信元のセッションにエコーバックしません。そのため、送信側のクライアントは自分自身のイベントを受け取りません。

General ハンドラー(パフォーマンス統計、ホットキー、ベンダーリクエスト、カスタムイベント)

単一のドメインに属さない汎用エンドポイントで、クライアントの General ハンドラーを通じてアクセスします。

UInhyeongOBSGeneral* General = OBS->GetClient()->GetGeneral();

// Performance stats (CPU usage, active/render FPS, dropped frames, free disk space, ...)
General->GetStats();                        // async -> OnStatsReceived
FOBSStats Stats = General->GetCachedStats();

// Hotkeys
General->GetHotkeyList();                    // async -> OnHotkeyListReceived
General->TriggerHotkeyByName(TEXT("OBSBasic.StartRecording"));
General->TriggerHotkeyByKeySequence(TEXT("OBS_KEY_F1"), /*bShift=*/false, /*bControl=*/true);

メソッド

メソッド説明
GetStats()パフォーマンス統計(CPU、アクティブ/レンダーフレームレート、ドロップフレーム、空きディスク容量など)の非同期リクエスト → OnStatsReceived
GetCachedStats()最後にキャッシュされた FOBSStats
GetHotkeyList()登録済みホットキー名の非同期リクエスト → OnHotkeyListReceived
TriggerHotkeyByName(Name)登録名(例: OBSBasic.StartRecording)でホットキーを発火します。
TriggerHotkeyByKeySequence(Key, bShift, bControl, …)キーと修飾キーの組み合わせでホットキーを発火します。
BroadcastCustomEvent(...)生のカスタムイベント(上記の EmitGameEvent はその構造化ラッパーです)。
CallVendorRequest(...)サードパーティの OBS プラグインのベンダー API を呼び出します → OnVendorResponseReceived

イベント

イベント発火タイミング
OnStatsReceivedGetStats のレスポンスが届いたとき。
OnHotkeyListReceivedGetHotkeyList のレスポンスが届いたとき。
OnExitStartedOBS のシャットダウンが開始されたとき。
OnVendorEventサードパーティのベンダープラグインがイベントを発行したとき。
OnCustomEvent別のセッションからカスタムイベントがブロードキャストされたとき。

General ハンドラーのほとんどのメソッドは GetClient()->GetGeneral() 経由でアクセスします。EmitGameEvent には上記のように Subsystem の直接ショートカットがあります。

関連項目