接続と再接続
このガイドでは、実行中の OBS インスタンスへの接続、接続ステートマシン、自動再接続、およびバインドできる接続関連イベントについて説明します。
OBS WebSocket サーバーの有効化
プラグインが接続できるようにするには、OBS 内で WebSocket サーバーを有効にしてください。
- OBS Studio を起動する
- ツール → WebSocket サーバー設定 に移動する
- WebSocket サーバーを有効にする にチェックを入れる
- パスワードを設定する(推奨)
- ポートを確認する(デフォルト:
4455)
接続
接続は OBS Component(アクタごと)または OBS Subsystem(グローバル)を通じて行えます。どちらもホスト、ポート、パスワードを受け付けます。
OBS Component を使用する場合(ほとんどのユーザーに推奨)
- 任意のアクタに OBS Controller コンポーネントを追加する。
- 詳細パネル上部の Features ピッカーで使用したいドメインを有効にする(初期状態ではシーン + 録画 & 配信が有効で、接続は常にオン)。
- 接続カードに接続設定を入力し、Connect をクリックする。
- 組み込みのコントロールを使用するか、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 | アクティブな接続がない状態 |
Connecting | OBS への WebSocket を開いている状態 |
Authenticating | SHA256 チャレンジハンドシェイクを実行中の状態 |
Connected | 識別済みでリクエストの送信 / イベントの受信が可能な状態 |
Connected 状態になると、クライアントはリクエストを ID で関連付け、受信した OBS イベントを適切なハンドラーに振り分けます。
自動再接続
自動再接続はデフォルトで有効です。接続が切断された場合、クライアントは指数バックオフを使用して再試行するため、OBS に過剰な負荷をかけません。バックオフは試行のたびに増加し、設定した最大試行回数に達すると再接続を停止します(無制限設定の場合は無限に再試行します)。
再接続が進行中に手動で Connect() を呼び出しても、進行中の試行はキャンセルされません。新しい接続先で上書きされます。
接続と再接続のイベント
接続ライフサイクルの変化に応じるには、以下のイベントにバインドしてください。
接続
| イベント | 説明 |
|---|---|
OnConnected | OBS への接続に成功した |
OnDisconnected(Reason) | OBS から切断された |
OnConnectionError(Error) | 接続に失敗した |
再接続
| イベント | 説明 |
|---|---|
OnReconnecting(AttemptNumber) | 再接続の試行を開始した |
OnReconnectFailed | すべての再接続試行が失敗した |
すべてのイベントは、Blueprint で割り当て可能な動的デリゲートとネイティブ C++ デリゲートの両方として利用できます(ネイティブ版には Native サフィックスが付きます)。
あらゆる OBS ドメインにわたるイベントの完全なカタログについては、イベントリファレンスを参照してください。