私はiPhone shmupを作成しており、使用するゲームループのタイプを決定しようとしています。半固定のタイムステップまたは完全に固定のタイムステップを使用したい。
タイムステップが半固定の場合、0回以上のupdate(FIXED_INTERVAL)呼び出しを行い、その後、ゲームループごとにdt <= FIXED_INTERVALのupdate(dt)呼び出しを1回行います。私が理解しているように、この方法の欠点は、更新ごとに変数dtを仮定する必要があるため、物理update(dt)ロジックのプログラミングがより難しくなることです。そして、毎回同じではない浮動小数点値のために、ゲームの各実行がわずかに異なることも耳にしました。
次に、完全に固定されたタイムステップを使用して、0回以上のupdate(FIXED_INTERVAL)呼び出しを行い、その後、ゲームループごとにdt <FIXED_INTERVALの補間(dt / FIXED_INTERVAL)呼び出しを1回行います。
だから、私が本当にしなければならない大きな決断は、変数dtを使ってupdate(dt)を実装するという課題に取り組むのか、補間を実装するという課題に取り組むのか、ということです。
今、私が読んだことから、大部分の人々は完全に修正されたものを使って補間を行うと言っています。しかし、補間の実装について考えると、変数dtを使用したupdate(dt)よりもはるかに複雑になりそうです。これは、補間を使用する場合、前の状態と現在の状態の両方を記憶する必要があるためです。したがって、補間を使用する場合は、個々のゲーム状態全体を抽象化する追加の間接レイヤーを作成する必要があります。補間を使用する必要がない半固定タイムステップでは、ゲーム状態の抽象化を考え出す必要はありません。ゲーム状態は常に1つだけであり、単に敵と敵を表す「グローバルアレイ」であるためです。弾丸など
それで、より実用的な選択は何ですか:物理的な更新が変数dtで複雑になる可能性があることを知って、半固定で実装しますか?または、補間を実行するために以前の状態と現在の状態を追跡できるように、完全に固定された状態を使用してゲーム状態の抽象化を試みますか?