11
いつ固定または可変の時間ステップを使用する必要がありますか?
ゲームループは固定または可変の時間ステップに基づいている必要がありますか?常に優れているのですか、それとも正しい選択はゲームによって異なりますか? 可変時間ステップ 物理の更新には「最後の更新からの経過時間」引数が渡されるため、フレームレートに依存します。これは、計算を行うことを意味する場合がありposition += distancePerSecond * timeElapsedます。 長所:スムーズで、コーディングが簡単 短所:非決定的で、非常に小さいまたは大きなステップで予測できない deWiTTERSの例: while( game_is_running ) { prev_frame_tick = curr_frame_tick; curr_frame_tick = GetTickCount(); update( curr_frame_tick - prev_frame_tick ); render(); } 固定タイムステップ 更新は、各更新が一定期間のものであると想定するため、「経過時間」を受け入れない場合もあります。計算はとして行うことができますposition += distancePerUpdate。この例には、レンダリング中の補間が含まれています。 長所:予測可能、決定論的(ネットワーク同期が容易?)、より明確な計算コード 短所:v-syncを監視するために同期されない(補間しない限りグラフィックが不安定になる)、最大フレームレートが制限される(補間しない限り)、フレームワーク内で動作しにくい可変時間ステップ(PygletやFlixelなど)を想定 deWiTTERSの例: while( game_is_running ) { while( GetTickCount() > next_game_tick ) { update(); next_game_tick += SKIP_TICKS; } interpolation …