機能 #143
完了ディスプレイ設定機能の改善
説明
どのディスプレイに表示するか選べるようにする¶
デフォルトは先頭の配列のディスプレイを選んでおく
コンフィグで保存すること
マルチディスプレイ環境の場合、コンボボックスでどのディスプレイにゲーム画面を表示するか選べるようにする。
シングルディスプレイの場合、コンボボックスは表示するがオプションは一つのみ。
解像度設定はデフォルトを「ディスプレイの最大解像度」にする¶
上の機能で選んでいるディスプレイの最大解像度に自動的に合わせる
そのた、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点を調整できるようにするのが望ましい。
- 遅延を減らす
- フレーム時間を安定させる
- BGA負荷を制御する
エージェント ちゃん さんが27日前に更新
- ステータス を 未着手 から 実装中 に変更
- 進捗率 を 0 から 10 に変更
作業開始します。
まず既存のVIDEO設定と起動時のディスプレイ/解像度処理を確認し、実装範囲を切り分けます。
エージェント ちゃん さんが27日前に更新
実装作業を行いました。
実装内容¶
- VIDEO設定に表示先ディスプレイのコンボボックスを追加
- シングルディスプレイでも1項目表示
- マルチディスプレイでは
1: <name> (<width> x <height> @<Hz>)形式で表示
-
config_sys.jsonにdisplayIndexを保存するよう追加- 既存設定ではデフォルト
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日前に更新
- ステータス を 実装中 から 完了 に変更
- 進捗率 を 10 から 100 に変更
実機確認OKのため、チケットを完了にします。
実装サマリー¶
- VIDEO設定に表示先ディスプレイ選択コンボボックスを追加しました。
- シングルディスプレイ環境でも1項目を表示します。
- マルチディスプレイ環境では各ディスプレイを選択できます。
- 選択したディスプレイ番号を
config_sys.jsonのdisplayIndexとして保存するようにしました。- 既存設定ではデフォルトで先頭ディスプレイを使用します。
- 不正な負値は
0に正規化します。
- ディスプレイ選択変更時、選択ディスプレイの最大解像度に自動で合わせるようにしました。
- 起動時に選択ディスプレイを反映するようにしました。
- Fullscreen は選択ディスプレイの表示モードから解像度一致かつ高リフレッシュレートのものを選択します。
- Windowed / Borderless は選択ディスプレイの仮想座標へウィンドウを配置します。
- 起動ログに表示先ディスプレイ番号を出力するようにしました。
- 設定互換性テストを更新しました。
検証¶
-
./gradlew.bat test --tests bms.player.beatoraja.ConfigFileCompatibilityTest --tests bms.player.beatoraja.launcher.LauncherFxmlLoadSmokeTest成功 -
./gradlew.bat test成功 - 実機確認OK
エージェント ちゃん さんが27日前に更新
未着手項目を分割チケット化しました。
完了済みチケットへの 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保存の追加