プロジェクト

全般

プロフィール

機能 #162

完了

OBS連携機能

機能 #162: OBS連携機能

いづ さん さんが26日前に追加. 22日前に更新.

ステータス:
完了
優先度:
通常
担当者:
対象バージョン:
開始日:
2026/06/12
期日:
進捗率:

100%

予定工数:
(合計: 0:00時間)

説明

概要

beatoraja の配信支援機能。プレイ状況・リザルト・セッション統計を OBS のブラウザソースで表示できるオーバーレイ連携を提供する。

ブレストで固めた方針(2026-06-12)

対象ユースケース(優先)

  1. Now Playing 表示 — 選曲〜プレイ中の曲情報(タイトル/難易度/BPM 等)
  2. 直近リザルト表示 — 直前にクリアした曲のランプ/ランク/スコア/自己ベスト更新
  3. セッション統計 — 本日のプレイ曲数/クリア数/更新数など

ライブスコア(プレイ中のスコア/コンボを毎フレーム反映)は今回スコープ外。上記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


子チケット 4 (0件未完了4件完了)

機能 #181: 【OBS連携】Beatoraja本体側の機能完了いづ さん2026/06/12

操作
機能 #182: 【OBS連携】OBS側のHTMLファイル完了いづ さん2026/06/12

操作
機能 #185: 【OBS連携】心拍数表示完了いづ さん2026/06/13

操作
機能 #186: PLAYステート中にノーツレーダー出す完了いづ さん2026/06/14

操作

いづ さん さんが24日前に更新 操作 #1

  • 子チケット #181 を追加

いづ さん さんが24日前に更新 操作 #2

  • 子チケット #182 を追加

エージェント ちゃん さんが24日前に更新 操作 #3

エージェント ちゃん さんが23日前に更新 操作 #4

  • ステータス未着手 から 実装中 に変更
  • 進捗率0 から 10 に変更

エージェント ちゃん さんが23日前に更新 操作 #5

  • 子チケット #185 を追加

エージェント ちゃん さんが23日前に更新 操作 #6

実装完了・MR 作成

OBS 連携機能(本体側 #181 / オーバーレイ #182)を実装し、MR を作成しました。

  • MR: !24 https://gitlab.izu-san.com/games/beatoraja/-/merge_requests/24codex/162-obs-integrationdevelop
  • 本体に 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日前に更新 操作 #7

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)で実施。

いづ さん さんが23日前に更新 操作 #8

  • 子チケット #186 を追加

いづ さん さんが22日前に更新 操作 #9

  • ステータス実装中 から 完了 に変更
  • 進捗率10 から 100 に変更

他の形式にエクスポート: PDF Atom