2

私は Java ゲームを作成していますが、タイミングを簡単に行う方法にこだわっています。デルタ時間があることは知っていますが、それは、ほとんどすべての移動/更新関数にそのデルタ変数を挿入する必要があることを意味しますか?

ゲームのメインの While ループをできるだけ速くではなく、50 ミリ秒ごとに実行/ループするように時間を計ることができるかどうか疑問に思っていました。

4

1 に答える 1

1

位置の変化は時間の関数であるため、ゲームの状態を更新するほとんどの関数に時間デルタを渡す必要があるのは理にかなっています。それは当然のことです。私はそうすることを恐れません。

フレームごとに遅延を挿入することは可能ですが (ゲームを 1000 fps で実行しても意味がないため、ほぼ確実にそうする必要があります)、更新ロジック各フレームがあらかじめ設定された時間。これを行うと、あるフレームが他のフレームよりも長くかかる場合に途切れが生じます。

ゲームに特定のフレームレートを与えるための、各フレームの一般的なアプローチは次のとおりです。

  • 現在時刻を として記録しstartTimeます。
  • 状態の更新を行います。
  • 再描画します。
  • 現在時刻を として記録しendTimeます。
  • スリープ(1 / framerate) - (endTime - startTime)
于 2013-01-07T02:49:30.537 に答える