1

現代のゲームループについて最も嫌いなことは何ですか?ゲームループを改善することはできますか、それともイベント駆動型アーキテクチャなどのより良い代替手段がありますか?

4

4 に答える 4

2

これは本当にCWであるべきだと思われます...

私は現在、大学院レベルのゲームエンジンプログラミングコースを受講していますが、彼らはゲームループアプローチに固執しています。確かに、それが唯一の/最良の解決策であるという意味ではありませんが、それは確かに論理的です。ループを使用すると、すべてのゲームシステムが、独自のタイミング割り込みなどを要求することなく、確実に実行できるようになります。制御は一元化できます。現在のプロジェクトでは、各フレームで、登録されているすべてのオブジェクトGameManagerの関数を順番にループするクラスがあります。Update(float deltaTime)イベントシステムをデバッグしたり、時限信号を設定したりする必要はありません。ループを使用して一連の関数を呼び出すだけです。騒ぎも大騒ぎもありません。

私が最も嫌うものについてのあなたの質問に答えるために、ループアプローチは、オブジェクトのサイズ/複雑さを膨らませる可能性のある継承とポリモーフィズムの自由な使用に論理的に役立ちます。注意しないと、これは軽度から恐ろしい落とし穴になる可能性があります。注意すれば、まったく問題ないかもしれません。

于 2011-02-19T11:55:18.093 に答える
0

完全にイベントベースにするために、xミリ秒ごとにCPUTickイベントをイベントキューに入れるだけの追加のスレッドを生成できます。

JavaScriptでは、setInterval()を使用してイベントを送信する追加の「スレッド」を簡単に作成できるため、これは通常、より自然なルートです。

または、ゲームを含むフレームワークにすでにループがある場合(JSがブラウザーにある場合、またはpythonにツイストがある場合など)、そのルーパーに一定の間隔でコールバックするように指示できます。例えば:

function gameLoop() {
   // update, draw...
}
window.setInterval(gameLoop, 1000/fps);
于 2011-02-21T16:04:13.443 に答える
0

通常、イベント駆動型アーキテクチャはゲームに最適です(ユーザーが何かをしたい場合にのみ何かを実行します)。ただし、常に世界を再描画するスレッドが必要です。

于 2011-02-19T05:11:19.253 に答える
0

ゲーム内にイベントがあろうとなかろうと、ゲームは自分自身を描画して一定の割合で更新することになっているので、ゲームループを落とすことはできないと思います。それでも、誰かがゲームループの他の代替案を考えることができるかどうか疑問に思います。

于 2011-02-19T04:49:58.523 に答える