プロジェクト

全般

プロフィール

機能 #155

完了

VIDEO設定: Frame Pacing / Latency優先設定の追加

機能 #155: VIDEO設定: Frame Pacing / Latency優先設定の追加

エージェント ちゃん さんが27日前に追加. 22日前に更新.

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

100%

予定工数:

説明

#143 から分割。

概要

平均FPSだけでなく、フレーム時間の安定性や低遅延を選べる設定を追加する。

想定UI

  • Stability
  • Balanced
  • Low Latency

目的

  • フレーム時間のばらつきを抑える
  • 描画の安定性を重視する
  • 入力遅延を重視する

実装前に確認すること

各モードが具体的にどの設定値・描画ループ挙動を変更するかを定義する。


関連するチケット 1 (0件未完了1件完了)

関連している beatoraja - 機能 #143: ディスプレイ設定機能の改善完了いづ さん2026/06/09

操作

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

  • 関連している 機能 #143: ディスプレイ設定機能の改善 を追加

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

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

作業開始

#151 のFPSプリセット、#152 のLow Latency Modeと近い領域のため、次に #155 を進めます。

まず既存の描画ループ、FPS制御、VSync/Low Latency設定との関係を確認し、各モードが実際に変更する挙動を明確にしてから実装します。

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

  • ステータス設計中 から テスト中 に変更
  • 進捗率10 から 50 に変更

実装内容

VIDEO設定に Frame Pacing を追加しました。

モード定義

  • Balanced
    • 既存挙動を維持します。
    • Max FPS / VSync / Low Latency Mode の個別設定をそのまま使います。
  • Stability
    • 無制限FPS、または表示リフレッシュレートを超えるFPS上限が指定されている場合、起動時の foreground/idle FPS を表示リフレッシュレートへ丸めます。
    • 既に表示リフレッシュレート以下の上限が指定されている場合は、その値を尊重します。
    • 目的は過剰描画を抑えてフレーム時間のばらつきを減らすことです。
  • Low Latency
    • フレーム描画の終端で Gdx.gl.glFinish() を呼び出します。
    • #152Low Latency Mode: On と同じく、GPUコマンドの蓄積を抑える挙動です。
    • 環境によってはCPU/GPU同期コストでFPS低下やフレームタイム悪化が起きる可能性があります。

その他

  • config_sys.jsonframePacingMode を保存・復元します。
  • 既存設定ファイルでは未指定時に Balanced へフォールバックします。
  • 起動ログに frame pacing を出力するようにしました。

確認済み

  • ./gradlew.bat test --tests bms.player.beatoraja.ConfigFileCompatibilityTest --tests bms.player.beatoraja.launcher.LauncherFxmlLoadSmokeTest
  • ./gradlew.bat test

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

  • ステータステスト中 から 完了 に変更
  • 進捗率50 から 100 に変更

完了サマリー

  • VIDEO設定に Frame Pacing を追加しました。
    • Balanced は既存挙動を維持します。
    • Stability は無制限FPS、または表示リフレッシュレートを超えるFPS上限を、起動時に表示リフレッシュレートへ丸めます。
    • Low Latency はフレーム描画終端で Gdx.gl.glFinish() を呼び出し、GPUコマンドの蓄積を抑えます。
  • config_sys.jsonframePacingMode を保存・復元するようにしました。
  • 既存設定ファイルでは未指定時に Balanced へフォールバックします。
  • 起動ログに frame pacing を出力するようにしました。

確認

  • ./gradlew.bat test --tests bms.player.beatoraja.ConfigFileCompatibilityTest --tests bms.player.beatoraja.launcher.LauncherFxmlLoadSmokeTest
  • ./gradlew.bat test
  • 実機確認OK

Commit

  • 0fc8c482 refs#155 Add frame pacing mode

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

  • 対象バージョン1.0.0 にセット

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