プロジェクト

全般

プロフィール

機能 #143

完了

ディスプレイ設定機能の改善

機能 #143: ディスプレイ設定機能の改善

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

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

100%

予定工数:

説明

どのディスプレイに表示するか選べるようにする

デフォルトは先頭の配列のディスプレイを選んでおく
コンフィグで保存すること

マルチディスプレイ環境の場合、コンボボックスでどのディスプレイにゲーム画面を表示するか選べるようにする。
シングルディスプレイの場合、コンボボックスは表示するがオプションは一つのみ。

解像度設定はデフォルトを「ディスプレイの最大解像度」にする

上の機能で選んでいるディスプレイの最大解像度に自動的に合わせる

そのた、VIDEO設定に追加したい項目

音ゲー用途として、現状のVIDEO設定に対して以下の項目を追加したい。

必須寄り

Low Latency Mode

描画遅延を減らすための設定。

想定例:

  • Off
  • On

用途:

  • 描画キューを溜めない
  • フレーム先読みを抑える
  • 入力から描画反映までの遅延を減らす

音ゲーでは入力タイミングと画面表示のズレがプレイ感に直結するため、優先度は高い。


VSync詳細設定

現在の垂直同期はON/OFFのみだが、もう少し細かく選択できるようにしたい。

想定例:

  • Off
  • On
  • Adaptive
  • Driver controlled

用途:

  • ティアリングを抑える
  • 環境ごとに遅延と見た目のバランスを調整する

VSyncは有効にすると画面は安定しやすいが、環境によっては入力遅延が増えるため、単純なチェックボックスより選択式のほうが望ましい。


Fullscreen Mode

現在は BORDERLESS が選択可能だが、可能であれば排他フルスクリーンも選択できるようにしたい。

想定例:

  • Windowed
  • Borderless
  • Exclusive Fullscreen

用途:

  • 環境によって遅延や描画安定性を改善できる
  • Borderlessで問題がある環境への回避策になる

あると望ましい

MaxFPSプリセット

現在は数値入力のみだが、代表的な値をプリセットとして選択できるようにしたい。
「ディスプレイに合わせる」設定があってもいいかも。

想定例:

  • 60
  • 120
  • 144
  • 165
  • 240
  • 360
  • 480
  • Unlimited
  • Custom

用途:

  • モニターのリフレッシュレートに合わせやすくする
  • 入力ミスや極端な値の設定を防ぐ

Custom選択時のみ任意入力できる形が望ましい。


Frame Pacing / Latency優先設定

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

想定例:

  • Stability
  • Balanced
  • Low Latency

用途:

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

音ゲーでは平均FPSよりもフレームごとの安定性が重要なため、設定として持っておきたい。


Render Scale

表示解像度とは別に、内部描画解像度を調整する設定。

想定例:

  • 50%
  • 75%
  • 100%
  • 125%
  • 150%
  • 200%

用途:

  • 高解像度環境で負荷を下げる
  • UI解像度を維持したまま描画負荷を調整する
  • 余裕のある環境では高品質化する

BGA Quality / BGA負荷軽減設定

BGAはON/OFFだけでなく、負荷を調整できる設定があるとよい。
スキン設定にあるやつをグローバル設定にしたほうがいい。

想定例:

  • BGA Quality: Low / Medium / High
  • BGA FPS Limit: 30 / 60 / Unlimited
  • BGA Brightness: 0% - 100%

用途:

  • BGAは表示したいが、ゲーム本体の描画安定性を優先したい場合に使う
  • 動画再生負荷によるフレーム落ちを抑える
  • 視認性向上のためBGAを暗くする

Performance Overlay

FPSやフレーム時間を表示するデバッグ用設定。
F1キー押下でFPSは表示できるが、それを拡張する。

想定例:

  • Off
  • FPS
  • FPS + Frame Time

用途:

  • 設定変更後の動作確認
  • フレーム落ちやカクつきの原因確認
  • 環境依存の問題調査

Window Position / Size保存

Windowed / Borderless使用時に、前回の表示位置やサイズを保存する設定。

用途:

  • マルチディスプレイ環境での使い勝手向上
  • 毎回ウィンドウ位置を調整する手間を減らす

補足

音ゲー用途では、単に高FPSが出ることよりも以下が重要になる。

  • 入力から画面反映までの遅延が少ないこと
  • フレーム時間が安定していること
  • BGAなどの演出によってゲーム本体の描画が乱れないこと

そのため、VIDEO設定では以下の3点を調整できるようにするのが望ましい。

  1. 遅延を減らす
  2. フレーム時間を安定させる
  3. BGA負荷を制御する

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

関連している beatoraja - 機能 #151: VIDEO設定: MaxFPSプリセットの追加完了いづ さん2026/06/09

操作
関連している beatoraja - 機能 #152: VIDEO設定: Low Latency Modeの追加完了いづ さん2026/06/09

操作
関連している beatoraja - 機能 #153: VIDEO設定: VSync詳細設定の追加完了いづ さん2026/06/09

操作
関連している beatoraja - 機能 #154: VIDEO設定: Fullscreen Modeの整理と排他フルスクリーン確認完了いづ さん2026/06/09

操作
関連している beatoraja - 機能 #155: VIDEO設定: Frame Pacing / Latency優先設定の追加完了いづ さん2026/06/09

操作
関連している beatoraja - 機能 #156: VIDEO設定: Render Scaleの追加却下いづ さん2026/06/09

操作
関連している beatoraja - 機能 #157: VIDEO設定: BGA Quality / 負荷軽減設定の追加完了いづ さん2026/06/09

操作
関連している beatoraja - 機能 #158: VIDEO設定: Performance Overlayの追加完了いづ さん2026/06/09

操作
関連している beatoraja - 機能 #159: VIDEO設定: Window Position / Size保存の追加完了いづ さん2026/06/09

操作

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

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

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

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

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

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

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

作業開始します。

まず既存のVIDEO設定と起動時のディスプレイ/解像度処理を確認し、実装範囲を切り分けます。

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

実装作業を行いました。

実装内容

  • VIDEO設定に表示先ディスプレイのコンボボックスを追加
    • シングルディスプレイでも1項目表示
    • マルチディスプレイでは 1: <name> (<width> x <height> @<Hz>) 形式で表示
  • config_sys.jsondisplayIndex を保存するよう追加
    • 既存設定ではデフォルト 0(先頭ディスプレイ)
    • 不正な負値は 0 に正規化
  • 選択中ディスプレイに合わせて解像度候補を更新
    • ディスプレイ選択変更時は、そのディスプレイで選べる最大解像度を自動選択
  • 起動時に選択ディスプレイを反映
    • Fullscreen: 選択ディスプレイの表示モードから解像度一致かつ高リフレッシュレートのモードを選択
    • Borderless/Windowed: 選択ディスプレイの仮想座標へウィンドウ位置を設定
  • 起動ログに displayIndex を出力

検証

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

補足

Low Latency Mode / Adaptive VSync / Frame Pacing などは、現状のlibGDX起動APIだけでは設定値の意味を保証しにくいため、今回の実装対象から外しています。必要であれば別途、LWJGL/GLFWレベルでの実現可否と仕様を確認してから実装します。

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

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

実機確認OKのため、チケットを完了にします。

実装サマリー

  • VIDEO設定に表示先ディスプレイ選択コンボボックスを追加しました。
    • シングルディスプレイ環境でも1項目を表示します。
    • マルチディスプレイ環境では各ディスプレイを選択できます。
  • 選択したディスプレイ番号を config_sys.jsondisplayIndex として保存するようにしました。
    • 既存設定ではデフォルトで先頭ディスプレイを使用します。
    • 不正な負値は 0 に正規化します。
  • ディスプレイ選択変更時、選択ディスプレイの最大解像度に自動で合わせるようにしました。
  • 起動時に選択ディスプレイを反映するようにしました。
    • Fullscreen は選択ディスプレイの表示モードから解像度一致かつ高リフレッシュレートのものを選択します。
    • Windowed / Borderless は選択ディスプレイの仮想座標へウィンドウを配置します。
  • 起動ログに表示先ディスプレイ番号を出力するようにしました。
  • 設定互換性テストを更新しました。

検証

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

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

未着手項目を分割チケット化しました。

完了済みチケットへの parent_issue_id 指定はRedmine側で422になったため、子チケットではなく本文参照 #143 から分割 と、この一覧コメントで関連付けています。

分割チケット

  • #152 VIDEO設定: Low Latency Modeの追加
  • #153 VIDEO設定: VSync詳細設定の追加
  • #154 VIDEO設定: Fullscreen Modeの整理と排他フルスクリーン確認
  • #151 VIDEO設定: MaxFPSプリセットの追加
  • #155 VIDEO設定: Frame Pacing / Latency優先設定の追加
  • #156 VIDEO設定: Render Scaleの追加
  • #157 VIDEO設定: BGA Quality / 負荷軽減設定の追加
  • #158 VIDEO設定: Performance Overlayの追加
  • #159 VIDEO設定: Window Position / Size保存の追加

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

  • 関連している 機能 #151: VIDEO設定: MaxFPSプリセットの追加 を追加
  • 関連している 機能 #152: VIDEO設定: Low Latency Modeの追加 を追加
  • 関連している 機能 #153: VIDEO設定: VSync詳細設定の追加 を追加
  • 関連している 機能 #154: VIDEO設定: Fullscreen Modeの整理と排他フルスクリーン確認 を追加
  • 関連している 機能 #155: VIDEO設定: Frame Pacing / Latency優先設定の追加 を追加

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

  • 関連している 機能 #156: VIDEO設定: Render Scaleの追加 を追加
  • 関連している 機能 #157: VIDEO設定: BGA Quality / 負荷軽減設定の追加 を追加
  • 関連している 機能 #158: VIDEO設定: Performance Overlayの追加 を追加
  • 関連している 機能 #159: VIDEO設定: Window Position / Size保存の追加 を追加

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

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

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