デルタタイムまたはデルタタイミングは、ハードウェアとネットワークの応答性に関連してプログラマーの間で使用される概念です。 [1]グラフィックスプログラミングでは、この用語は通常、ゲームが最後に更新されてからの経過時間に基づいて風景を可変的に更新するために使用されます。 [2](つまり、前の「フレーム」)は、コンピューターの速度と、特定の時点でプログラムで実行する必要がある作業量によって異なります。これにより、グラフィックスがマルチスレッド化されている場合に、グラフィックスを個別に計算することもできます。
ネットワークプログラミングでは、インターネット接続の予測不可能な性質のため、デルタタイミングは同様の方法で使用され、移動情報の次のデータパケットを受信するのにどれだけの時間がかかったかに関係なく、コンピュータネットワークを介して受信した移動情報を可変的に更新します。[3]
これは通常、現在から最後の呼び出しまでの時間を保持するタイマーを毎秒フレームごとに呼び出すことによって行われます。その後、結果の数値 (デルタ時間) を使用して、たとえば、その時間内にビデオ ゲームのキャラクターがどれだけ移動したかを計算します。これにより、更新速度に関係なく、また遅延の原因が処理能力の不足かインターネット接続の遅さかに関係なく、キャラクターが画面を移動するのにかかる現実世界の時間は同じになります。
グラフィック プログラミングでは、これにより、特定の時点で発生している複雑さに応じてゲームプレイが遅くなったり速くなったりすることが回避されます。これにより、一貫性のない不快なエクスペリエンス (画面に表示されるキャラクターが増えると時間が遅くなったり、画面に表示されるキャラクターが 1 人だけなので速く走りすぎたりするなど) が発生します。ネットワーク プログラミングでは、これにより、一部のクライアントで最後の更新から他のクライアントよりも長い時間が経過した場合でも、各クライアントが最終的に同じアクティビティを同時に確認できるようにすることで、各コンピューターのゲーム ワールドが他のコンピューターと同期された状態が維持されます。
遅延が大きすぎると、最終的にはゲームプレイ体験に悪影響を及ぼしますが、Delta Time を使用すると、コンピューターとインターネット接続がゲームの最小ハードウェア要件を満たしている限り、ゲームプレイの一貫性が保たれます。
プログラミングにおけるデルタタイミング測定
デルタ時間を使用すると、特定のプログラムがリアルタイムで実行するのにかかった時間を測定できます。以下の Python スニペットは、実行前と実行後の時間のデルタを使用してサンプル関数の実行時間を計算する方法を示しています。
パイソン
# 時間()
# エポックからの秒数を浮動小数点数で返します
時刻 からインポート 時刻
# is_prime(x) を定義する
def is_prime ( x ):
i が 範囲( 2 , x )内に ある場合:
( x % i ) == 0の場合:
print ( x , "素数ではない" )
戻る
print ( x , "は素数です" )
# デルタ時間を測定
t0 = 時間() # 測定開始
is_prime ( 13 ) # 関数を呼び出す
t1 = 時間() # 測定終了
デルタ時間 = t1 - t0
print ( "is_prime(13) の実行には" , deltaTime , "秒かかります!" )
デルタ時間とフレームレート
デルタ時間とフレーム レートは必ずしも関連しているわけではありません。ビデオ ゲームは、フレーム レートに関して、フレーム レート依存またはフレーム レート非依存の 2 つのカテゴリのいずれかに分類されます。フレーム レート依存ゲームのフレーム レートは、ソフトウェアを実行しているコンピューターによって異なります。たとえば、フレーム レート依存ゲームがリフレッシュ レートが 120 ヘルツ (Hz) のコンピューターで 300 フレーム/秒 (fps) で実行される場合、リフレッシュ レートが 60 Hz のコンピューターでは 150 fps で実行されます。標準のデルタ時間式を使用すると、フレーム レート依存ゲームで一時停止画面や意図的なスローモーション効果を作成できます。標準のデルタ時間式は、フレーム間のデルタ時間がゲームを実行しているコンピューターのリフレッシュ レートによって大きく異なるため、標準的なゲーム プレイではほとんど使用されません。
ゲームがフレームレート独立型の場合、フレームレートは事前に設定されており、仕様に関係なくすべてのコンピュータで同じように実行されます。フレームレート独立型では、より多くの消費者がゲームを利用できるようにするために、最大グラフィックス品質が制限されます。フレームレート独立型は、モバイルゲームや、Chromebookなどのローエンドコンピュータ向けに最適化されたゲームで特に人気があります。フレームレート独立型ゲームでは、フレーム間のデルタ時間はゲーム全体で一貫しています。この標準化により、1つのデルタ時間式で、すべてのタイプのコンピュータのすべてのユーザーに対して一貫したフレームレートを作成できます。[4]
デルタタイムを使用する場合
ゲームのフレーム レートがハードウェアに依存しない必要がある場合は、デルタ タイミングが威力を発揮します。たとえば、モバイル デバイスやローエンド コンピューターで実行する必要があるゲームがこれに該当します。場合によっては、ビデオ ゲーム開発者は、画面上のオブジェクトの移動速度を標準化するためにデルタ タイミングを使用します。たとえば、キャラクターが一定の速度で画面上を移動する場合、デルタ タイミングを使用すると、この移動速度が一定で変動しないことが保証されます。デルタ タイミングを移動に使用することは、インターネット接続が不安定なユーザーやローエンド コンピューター ハードウェアを使用しているユーザーにとって特に便利です。この方法では、画面上のオブジェクトの移動も調整できます。
動きにデルタタイミングを使用するデメリットの 1 つは、さまざまな動きや移動速度を組み込んだゲームでは複雑になる可能性があることです。たとえば、ゲームではすべてのキャラクターの歩行速度と疾走速度が指定されている場合がありますが、キャラクターは車、ボート、飛行機、その他の乗り物を運転することもあります。開発者がこれらの移動速度をそれぞれ異なるものにしたい場合 (ゲームをできるだけリアルにするため)、各移動速度ごとに個別のデルタ時間式が必要になります (ただし、これらの動きが一定速度で発生すると仮定した場合のみです)。動きが一定速度で発生しない場合は、デルタタイミング式は効果がありません。[5]
参照
参考文献
- ^ 「ゲーム作成ソフトウェア - Construct 3 ★★★★★」。
- ^ 「HTML 5 Canvas と JavaScript を使用した時間ベースのアニメーション | Viget」。
- ^ Cook, Shane (2012-12-28). CUDA プログラミング: GPU による並列コンピューティングの開発者ガイド。Newnes. ISBN 978-0-12-415988-4。
- ^ Ashley (2017-09-26). 「Delta-Time と Framerate Independence」. Construct.net . 不明. 2022-02-05閲覧。
- ^ Drew Coleman (2019-07-24). 「Understanding Delta Time」. Medium.com . 不明. 2022-02-05閲覧。
