4

私はすでにいくつかのビデオ ゲームを C で作成しています (小規模な個人プロジェクト)。そして、私が毎回遭遇する問題は同じで、ゲーム内のサイクルをどのように管理するかです。

たとえば、SFML でヘビをコーディングしました。フレーム レートでサイクルを処理しました。通常は 5 フレーム レートで、パワーアップすると 10 に変更されました。しかし、それは恐ろしいです。また、悪いコンピュータでは正しく動作しません。同じ考えで、1 サイクルがループ (無限ループ) の 1 ターンに等しいと判断したゲームも作成しました。同じ問題で、高性能のコンピューターは低性能のコンピューターよりも高速になります。

それで、誰かがビデオゲームで正しく適切にサイクルを管理する方法について私にアドバイスできますか.

前もって感謝します !

4

2 に答える 2

6

フレーム レートは、ゲーム プレイにまったく影響を与えるべきではありません。その gettig 60FPS または 1000 秒の FPS であれば、何の影響もありません。

あなたがしたいことは、デルタ時間または経過時間を見て、それが十分な時間である場合は、シミュレーションを行うか電源を入れることです。

だからヘビを動かすとき。フレームごとに距離だけ移動したい。フレームレートが低い場合は、フレームレートが高い場合よりも距離が長くなります。距離はspeed_it_moves_at * delta_time.

于 2013-05-09T14:26:33.337 に答える
5

非常に大まかに言えば、ゲームの状態をモデル化して、指定された時間の増分だけ「進む」ことができるようにし、メイン ループの各サイクルで、経過した時間を判断する必要があります (通常は、 2 番目) それだけゲームの状態を進めます。これにより、ゲームはフレーム レートに関係なくスムーズに動作するように見えます。

間隔は、基本的にすべての動きの倍率になります。たとえば、ヘビが 1 秒あたり 5 単位の距離で前進していて、メイン ループ中にヘビが最後に移動してから 0.01 秒が経過したことがわかった場合、ヘビを (0.01 * 5) 単位だけ前進させます。そのループ中の距離。

于 2013-05-09T14:27:46.867 に答える