3

まず、私はフランス人なので、おおよその英語についてお詫びしたいと思います。私は現在、LWJGL を使用して Java でリアルタイム ゲームを作成しています。ゲーム ループに関していくつか質問があります。

  • スレッドでレンダリング ルーチンを実行しています。それは良い考えですか?通常、レンダリング ルーチンはかなり遅く、より重要なワールド更新 (ティック) ルーチンを遅くするべきではありません。したがって、ここでスレッドを使用することは良い考えのように思えます (スレッドを使用することによる複雑さを除いて)。
  • 世界の更新ルーチンでは、エンティティのリストを現在の時刻で更新しています。その後、各エンティティは、最後に更新された時刻に対応する独自の deltaTime を計算できます。これは、リスト内のすべてのエンティティを同じ deltaTime で更新する通常の更新ループとは異なります。スレッド化されたレンダリングのため、これは適切に思えました。それは良い考えですか?代わりに 2 番目の方法を使用する必要がありますか? もしそうなら、スレッド化されたレンダリングはまだ必要ですか? その場合、最大 deltaTime を追加する必要がありますか?
  • 一般に、最大の deltaTime を持つことは良い考えですか?

御時間ありがとうございます!

4

2 に答える 2

0
  1. それは良い考えですか?個別のスレッドはかなり高度なものであり、そもそもマルチスレッドを実行する理由はありません。私がこれまで取り組んできたすべてのモバイルゲームは、「リアルタイム」であるにもかかわらず、複数のスレッドを必要としませんでした。ハードコアPCおよびコンソールゲームは、マルチスレッドが実際に登場し始める場所です。興味があれば、このテーマに関する最近の講演へのリンクがあります:http: //archive.assembly.org/2011/seminars/adventures-in-multithreaded-gameplay-coding

  2. このような音は、物理学が一度に処理されない場合、いくつかの奇妙なことを引き起こす可能性があります。これについてはよくわかりません。すでに別の位置に更新されているオブジェクトを別の場所にあるオブジェクトと衝突させると、たとえば、この種の状況を修正すると問題が発生する可能性がありますか?動きの速い衝突を細分化する必要がある場合があります。そのため、個別の更新スレッドがありますが、すべてが同時に発生するものとして計算されないのはなぜですか。

  3. 「可変タイムステップ」および「固定タイムステップ」は、レンダリングに使用できるオプションです。現在、ほとんどのゲームは30fpsの固定タイムステップを選択しているようです。レンダリングは制限内に維持する必要があるため、追いつく必要はありません。可変タイムステップの問題の1つは、時間に依存するすべての領域にdeltaTimeを渡さなければならないことです。固定タイムステップは、たとえば30 fpsで実行していると想定し、その値をどこでも使用できるので便利です。私の知る限り、これは現時点で推奨される方法です。

于 2011-08-12T00:20:09.787 に答える