「スーパー ミート ボーイ」は、最近 PC 向けに登場した難しいプラットフォーマーで、優れたコントロールとピクセル パーフェクトなジャンプが必要です。ゲーム内の物理コードはフレームレートに依存しており、フレームレートは 60fps に固定されています。これは、コンピューターがゲームをフルスピードで実行できない場合、物理学が異常になり、(とりわけ) キャラクターの実行が遅くなり、地面から落ちることを意味します。さらに、vsync がオフの場合、ゲームは非常に高速に実行されます。
2D ゲーム プログラミングの経験者は、ゲームがこのようにコーディングされた理由を説明できますか? 一定の速度で実行される物理ループは、より良い解決策ではないでしょうか? (実際には、一部のエンティティはフレームレートに関係なく正常に動き続けるため、ゲームの一部に物理ループが使用されていると思います。一方、あなたのキャラクターは正確に [fps/60] の速さで実行されます。)
この実装で気になるのは、モニター、グラフィック カード、CPU などのシステム固有のものに依存する、ゲーム エンジンとグラフィック レンダリングの間の抽象化が失われていることです。何らかの理由で、コンピューターが vsync を処理できない場合、または正確に 60 fps でゲームを実行できない場合、コンピューターは見事に壊れます。レンダリングステップが何らかの形で物理計算に影響を与えるのはなぜですか? (最近のほとんどのゲームは、ゲームを遅くするか、フレームをスキップします。) 一方、NES と SNES の古い学校のプラットフォーマーは、制御と物理の多くを固定フレームレートに依存していたことを理解しています。これはなぜですか? フレームレートに依存せずに、その流れでパトフォーマーを作成することは可能でしょうか? グラフィックス レンダリングをエンジンの残りの部分から切り離すと、必然的に精度が失われますか?
ありがとうございます。質問がわかりにくかったら申し訳ありません。