Skip to content

Desuq Cafe

ドキュメントメニュー

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

接続と再接続

このガイドでは、実行中の OBS インスタンスへの接続、接続ステートマシン、自動再接続、およびバインドできる接続関連イベントについて説明します。

OBS WebSocket サーバーの有効化

プラグインが接続できるようにするには、OBS 内で WebSocket サーバーを有効にしてください。

  1. OBS Studio を起動する
  2. ツール → WebSocket サーバー設定 に移動する
  3. WebSocket サーバーを有効にする にチェックを入れる
  4. パスワードを設定する(推奨)
  5. ポートを確認する(デフォルト: 4455

接続

接続は OBS Component(アクタごと)または OBS Subsystem(グローバル)を通じて行えます。どちらもホスト、ポート、パスワードを受け付けます。

OBS Component を使用する場合(ほとんどのユーザーに推奨)

  1. 任意のアクタに OBS Controller コンポーネントを追加する。
  2. 詳細パネル上部の Features ピッカーで使用したいドメインを有効にする(初期状態ではシーン + 録画 & 配信が有効で、接続は常にオン)。
  3. 接続カードに接続設定を入力し、Connect をクリックする。
  4. 組み込みのコントロールを使用するか、Blueprint でイベントにバインドする。

詳細パネルを使用すると、コードを書かずに OBS を完全に操作できます。また、選択した機能のみが表示されるため、最小構成のコンポーネントはすっきりした状態を保ちます。

OBS Subsystem を使用する場合(Blueprint)

// Get the OBS Subsystem
Get Game Instance → Get Subsystem (InhyeongOBSSubsystem)

// Connect to OBS
Connect (Host: "localhost", Port: 4455, Password: "your_password")

// React to events
Bind to On Connected
Bind to On Disconnected

OBS Subsystem を使用する場合(C++)

// Get subsystem
UInhyeongOBSSubsystem* OBS = GetGameInstance()->GetSubsystem<UInhyeongOBSSubsystem>();

// Connect
OBS->Connect("localhost", 4455, "password");

// Bind to events (dynamic delegates for UFUNCTIONs)
OBS->OnConnected.AddDynamic(this, &AMyActor::HandleConnected);

// Or use native delegates with lambdas
OBS->GetClient()->OnConnectedNative.AddLambda([]() {
    UE_LOG(LogTemp, Log, TEXT("Connected to OBS"));
});

認証

OBS はパスワードが設定されている場合、SHA256 チャレンジ/レスポンスのハンドシェイクを使用します。これは接続シーケンス中に自動的に処理されるため、パスワードを指定するだけで問題ありません。パスワードが必要であるにもかかわらず指定されていない場合、接続はハングせずに即座に失敗します。

接続ステートマシン

接続は以下のステートを遷移します。

Disconnected → Connecting → Authenticating → Connected
ステート意味
Disconnectedアクティブな接続がない状態
ConnectingOBS への WebSocket を開いている状態
AuthenticatingSHA256 チャレンジハンドシェイクを実行中の状態
Connected識別済みでリクエストの送信 / イベントの受信が可能な状態

Connected 状態になると、クライアントはリクエストを ID で関連付け、受信した OBS イベントを適切なハンドラーに振り分けます。

自動再接続

自動再接続はデフォルトで有効です。接続が切断された場合、クライアントは指数バックオフを使用して再試行するため、OBS に過剰な負荷をかけません。バックオフは試行のたびに増加し、設定した最大試行回数に達すると再接続を停止します(無制限設定の場合は無限に再試行します)。

再接続が進行中に手動で Connect() を呼び出しても、進行中の試行はキャンセルされません。新しい接続先で上書きされます。

接続と再接続のイベント

接続ライフサイクルの変化に応じるには、以下のイベントにバインドしてください。

接続

イベント説明
OnConnectedOBS への接続に成功した
OnDisconnected(Reason)OBS から切断された
OnConnectionError(Error)接続に失敗した

再接続

イベント説明
OnReconnecting(AttemptNumber)再接続の試行を開始した
OnReconnectFailedすべての再接続試行が失敗した

すべてのイベントは、Blueprint で割り当て可能な動的デリゲートとネイティブ C++ デリゲートの両方として利用できます(ネイティブ版には Native サフィックスが付きます)。

あらゆる OBS ドメインにわたるイベントの完全なカタログについては、イベントリファレンスを参照してください。