danoniplus
danoniplus copied to clipboard
[要望] setTimeout -> requestAnimationFrameへの移行
改善詳細 / Details of Improvement
- 現状のプレイ画面処理で使っている
setTimeoutを、requestAnimationFrameに置き換えたい。 https://developer.mozilla.org/ja/docs/Web/API/window/requestAnimationFrame
改善理由 / Reason for Improvement
- 現状は
setTimeoutにて処理経過時間を別に取得した上で、その差分経過時に次の処理を実行する方法を取っている。 どの程度改善するかは試してみないとわからないが、まずは検討に上げる必要があると考えたため。 https://github.com/cwtickle/danoniplus/wiki/AboutFrameProcessing
スクリーンショット / Screenshot
期待する見せ方・挙動 / Expected Behavior
その他検討事項 / Other Considerations
- 過去作品の移植の都合でfpsを60以外に設定している場合があるが、
requestAnimationFrameでは原則60fps固定となるため、フレーム計算時にこれらの数値を60fps用に変換する必要がある。 requestAnimationFrameでは非アクティブ時にfpsが下がるという問題があるが、 それは現状のsetTimeoutでも同じため、同様のことができれば影響は少ないと考えている。
#1513 にて仮実装しましたが、以下の問題があり実装を断念しました。
このIssueはクローズします。⇒一応残しておきます。
- requestAnimationFrame でも、処理量が多いとFPSが下がる
- FPSが下がった場合にフレームスキップする方法はあるが、CW Editionの場合矢印やフリーズアローの座標操作、判定スキップを考慮しなければならず、ハードルが高い。 https://blog.oimo.io/2021/06/06/adjust-fps/ https://kuroeveryday.blogspot.com/2018/03/frame-skip-in-requestanimationframe.html
- そもそも144Hz対応のゲーミングモニタでは60fpsではなく144fpsで動作する