【ゲーム】ゲームの移動処理はデルタタイムを使用する

目次

デルタタイムとはなにか

デルタタイムとは、最後のフレームから今までに経過した時間の長さのことを言います。

言い方を代えると、1フレームの長さになります。

なぜ必要なのか

現在のプロセッサは一定の速度で動かないので、フレームレートは固定されません。また、処理速度もバラバラなPCやスマホで動かすので1フレームでどれくらい動かすかを定義すると移動量に違いが生じてしまいます。

以下のコードを使用したゲームの場合、3.8GHzで動作するプロセッサを使用しているPCで丁度いい速度で動いていた敵は、1.25Ghzのスマホでは3/1のスピードになってしまいます。

1
enemy.x += 10f;

デルタタイムを使用するとどうなるのか

デルタタイムを使用すると、FPSに関係せずに、1秒間でどれだけ進むかを定義しておけば結果としての速度は変わらなくなる

1秒間に100ピクセル動かしたい場合、30FPSだと1フレーム0.033で1フレーム3.3ピクセル,60FPSだと0.016で1フレーム1.6ピクセル動かせば1秒で100ピクセル動かすことができる。

  • 通常 : 1フレームの移動量
  • デルタタイム : 1秒の移動量
1
2
//  デルタタイム(1フレームにかかる時間)をかける
enemy.x += 10f * deltime;

fpsを求める

デルタタイムが求められれば、現在のFPSを求める事もできる

デルタタイムは1フレームの時間なので、その1フレームを1秒から割れば、FPSを求めることができる

1
2
//  1からデルタタイムを割ることでFPSを求める事ができる
var fps = 1 / deltime;

【ゲーム】ゲームの移動処理はデルタタイムを使用する

https://blog.djima.net/2021/11/05/【ゲーム】ゲームの移動処理はデルタタイムを使用する/

Author

Daiki Iijima

Posted on

2021-11-05

Updated on

2024-04-17

Licensed under