パソコン・メモメモ備忘録

気の向くままパソコン関係等で気になることを書き記す。時々更新!

ディレイの中身

はっきり言って、この辺は専門家でもなんでもない私が書いても仕方ないのだが、まぁ、さらっと軽く。

昨日測定したのは、テレビゲームのフィードバックループのターンアラウンドタイム?の一部の時間である。ここでいうフィードバックループは、
プレーヤのボタン操作 → ゲーム機が操作を検出 → ゲームに反映 → 画面に出力 → プレーヤがそれを確認 → 最初に戻る
という感じだと思われる。プレーヤが0秒で「最初に戻る」部分を処理できれば、昨日のディレイがこのループにかかる時間となる。実際には、プレーヤは予測制御しているので、「最初に戻る」のにかかる時間はマイナス秒と考えることもできるので、あまりこの時間を考えることは意味が無い。

大元の目的は、ディスプレイ装置が、入力信号を受け取ってからそれを画面上に表示するまでのディレイを測定するということだった。しかしながら、この時間を直接測定するのは素人の私には非常に難しいので、昨日測定したような時間から、推測できる各要素を引き算していって、求める時間を得るのが現実的である。

さぁ、どんな要素が含まれているのだろうか。昨日挙げたリモコンコード送信時間というのもその一つである。

後、大きい時間がかかる要素としては、

ボタン操作信号が入力されてから、ゲームプログラムがそれを受け取るまでの時間
多分、ゲームプログラムは定期的に(1フレーム毎か、その1/nとか)入力をチェックしているのでは無いだろうか。要するに、ボタン操作をしても、少なくとも入力をチェックされるまではゲームは反映しない。
ボタン操作信号の入力をチェックしてから、ゲームへ反映し、その結果をフレームバッファへ反映開始するまでの時間
ゲームによっては、次のフレームへ持ち越すものもあるかもしれないが、それほど複雑で無いものなら、そのフレーム内におさまるはず。
フレームバッファへの画像の書き込み後、フロント/バックバッファをフリップするまでの時間
現在のフレームバッファベースのゲーム機では、裏で描画して、描き終ったらフリップしていると思われる。

最初のものは0〜1フレームの変動がありえる。後の二つはゲームによると思うが、単純なゲームでは合わせて1〜2フレーム程度ではないだろうか。高度な3Dグラフィックと物理計算を行うゲームでは、もう1フレーム追加される可能性もある。また、トリプルバッファという手法もあるが、リアルタイムなゲームでは使わないことにしておこう。ということで、ゲーム機のなかで費やされるディレイは1〜3フレームといった所か。

それにしても、先日測定したディレイは大きすぎる気がする。もっと他にディレイの要素があるのか。