アンチヨーヨーシステム (Anti Yo-Yo System)
動的スケーリングシステムにおける最も厄介な問題の1つが、ヨーヨー効果 (Yo-Yo Effect)(または品質のピンポン)です。
コアとなる問題
インテリジェントな制御がない場合、システムは無限ループに陥ります:
- 重いシーンによりFPSが低下します。
- プラグインはグラフィック品質を下げます(例:解像度を減らします)。
- 負荷が減少し、FPSがベースラインを上回ります。
- プラグインはパフォーマンスの余裕(Performance Headroom)があると判断し、グラフィック品質を最大まで回復させます。
- FPSが再び低下します。このサイクルが繰り返されます。
その結果、プレイヤーは絶え間ない品質のちらつき(Quality flickering)を経験することになります。シャドウが絶え間なく現れたり消えたりし、画像は1秒ごとにぼやけたり鮮明になったりします。
WebAPの解決策:ペナルティロックアウト (Penalty Lockout)
私たちは、プラグイン設定の2つのパラメータに基づいて構築されたペナルティロックアウトの概念を実装することにより、この問題を完全に根絶しました。
プラグインがグラフィック品質を向上させると、非表示のタイマーである Detection Window(例:15秒)が開始されます。この期間中、インデクサー(Indexer)はフレームの安定性を注意深く監視します。
この時間枠内にFPSが突然低下した場合、システムは決定的な結論を導き出します:«以前のグラフィックの向上は間違いでした。デバイスはこのレベルを長期的に維持することはできません。»
ペナルティが適用されます:
- プラグインは直ちに品質を再び低下させます。
- 厳格な Penalty Lockout Duration(例:60秒)が適用されます。
- この1分間、プラグインはグラフィック品質を上げようとすることを断固として禁じられます。たとえFPSが急上昇してプロセッサがアイドル状態になったとしてもです。
セッションロック (Session Lock)
ゲームのダイナミクスに負荷の急増の波があり、最初の低下の後に品質が元に戻らないことを好む場合は、Penalty Lockout Duration フィールドに非常に大きな値(例:10分の場合は 600、1時間の場合は 3600)を指定するだけです。これにより、ゲームセッションが終了するまで、一貫した低レベルのグラフィックに効果的にロックされます。
流暢さ (Fluency) の優先
ペナルティは、レンダリングを向上させようとする試みのみをブロックします。プレイヤーがさらに重いシーンに入り、FPSが臨界しきい値を下回った場合、プラグインは緊急手段として依然として品質を低下させることができます。システムは常に、ビジュアルよりもゲームプレイの流暢さを優先します。
