機能 #162
完了OBS連携機能
説明
概要¶
beatoraja の配信支援機能。プレイ状況・リザルト・セッション統計を OBS のブラウザソースで表示できるオーバーレイ連携を提供する。
ブレストで固めた方針(2026-06-12)¶
対象ユースケース(優先)¶
- Now Playing 表示 — 選曲〜プレイ中の曲情報(タイトル/難易度/BPM 等)
- 直近リザルト表示 — 直前にクリアした曲のランプ/ランク/スコア/自己ベスト更新
- セッション統計 — 本日のプレイ曲数/クリア数/更新数など
ライブスコア(プレイ中のスコア/コンボを毎フレーム反映)は今回スコープ外。上記3つはすべて「画面遷移などのイベント時に更新される低頻度データ」であり、リアルタイム push は不要。
アーキテクチャ¶
本体に軽量なローカル HTTP サーバを1本立て、オーバーレイ HTML と状態 JSON の両方を配信する構成。
beatoraja (本体, #181)
MainController.changeState() を唯一の更新funnelとして ObsState を更新
├ / → overlay HTML(#182)を静的配信
└ /state.json → 現在状態のスナップショット
▲ 1秒ポーリング
OBS ブラウザソース: http://localhost:<port>/overlay.html
- 伝送方式: HTTP + ポーリング(WebSocket/SSE は今回不要。将来ライブスコア対応時に追加余地を残す)
- セッション区切り: アプリ起動ごと(起動時に統計初期化、リセット UI 不要)
- バインド: localhost 固定(外部公開しない)
- 既存の
bms.player.beatoraja.streamパッケージ(視聴者リクエストの inbound パイプ)と対になる outbound 機能として、同系統に配置する
子チケットへの分担¶
- #181 本体側の機能 — HTTP サーバ、状態収集(ObsState)、セッション統計、設定、/state.json 生成
- #182 OBS 側の HTML ファイル — オーバーレイテンプレート(用途別に分割)、/state.json を消費する表示ロジック
マイルストーン¶
1.0.1
エージェント ちゃん さんが24日前に更新
- 説明 を更新 (差分)
エージェント ちゃん さんが23日前に更新
- ステータス を 未着手 から 実装中 に変更
- 進捗率 を 0 から 10 に変更
エージェント ちゃん さんが23日前に更新
- 子チケット #185 を追加
エージェント ちゃん さんが23日前に更新
実装完了・MR 作成¶
OBS 連携機能(本体側 #181 / オーバーレイ #182)を実装し、MR を作成しました。
- MR: !24 https://gitlab.izu-san.com/games/beatoraja/-/merge_requests/24 (
codex/162-obs-integration→develop) - 本体に localhost HTTP サーバーを1本立て、
/state.jsonと./obsのオーバーレイを配信。OBS ブラウザソース1つでプレイ状況・リザルト・セッション統計・選曲履歴を表示。obsEnabled=false時は完全無効・既存挙動ゼロ影響。 - 追加対応:難易度表テーブル表記(sl9 / ★13)、ゲーム画面フレーム(16:9)・現在時刻・選曲履歴、曲名/作者名のフォント自動フィット、Claude 製デザイン。
- 心拍数表示は #185(将来要望)として予約枠のみ。
テスト:xvfb-run -a ./gradlew test 成功(各段階で再検証)。動作確認は Windows ホストで OBS ブラウザソースに http://localhost:7322/overlay.html。
MR 承認後に 完了 へ移行予定。
エージェント ちゃん さんが23日前に更新
MR !24 承認・ develop へマージ完了につき完了(子 #181 / #182 も完了)。
実装サマリ(OBS 連携)¶
beatoraja 本体に localhost HTTP サーバーを1本立て、/state.json(現在状態スナップショット)と ./obs のオーバーレイを配信。OBS ブラウザソース1つで Now Playing / プレイオプション(GAS ゲージライブ)/ プロフィール / リザルト / セッション統計 / 選曲履歴を表示。obsEnabled=false 時は完全無効・既存挙動ゼロ影響。
- 本体側の詳細は #181、オーバーレイの詳細は #182 参照。
- 伝送:HTTP ポーリング(約1秒)、localhost 固定、セッション区切りは起動ごと。
- 心拍数表示は #185(将来要望)として分離、今回は予約枠のみ。
テスト:xvfb-run -a ./gradlew test 成功。動作確認は Windows ホストの OBS ブラウザソース(http://localhost:7322/overlay.html)で実施。