2012-04-18 5 views
0

私のゲームでは、私のビューは矛盾したレートを引きます。それは順番にそれをglitchyにします。私はinvalidate()で多くの問題に取り組んできました。メアドード。あらゆるシンプルなアイデア - どこでも私は沢山の強烈なコードによって投げられます。一貫したゲームループを作る方法

+0

あなたの質問は、問題の非常に説明的ではありません。いくつかのコードを投稿できますか?あなたのゲームエンジンの主なビットは? – slayton

答えて

1

それは考慮に間を通過した実際の時間がかかることはありません、あなたのゲームループのように聞こえます反復。

問題は、ループの繰り返しの間に一定の時間があるという前提です。しかし、この時間は、シーン内のオブジェクトの数、コンピュータ上の他のプロセス、またはコンピュータ自体によって変わる可能性があります。

これはゲームプログラミングでは多少微妙な間違いですが、簡単に修正できます。トリックは、各描画ループの最後に時間を格納し、最後の更新の差分と開始時の現在の時間を取ることです。その後、実際の経過時間に基づいてすべてのアニメーションとゲームの変更をスケーリングする必要があります。私はしばらく前にここに私のブログにこのについての詳細を書いてきました

http://laststop.spaceislimited.org/2008/05/17/programming-a-pong-clone-in-c-and-opengl-part-i/

パートIIは、具体的には、この問題を取り上げます。 http://laststop.spaceislimited.org/2008/06/02/programming-pong-in-c-and-opengl-part-ii/

2

多くの情報、具体的にはコードを提供していません。あなたができる

いくつかあります:

  1. アプリケーションを観察する最低値に初期フレームレートは現在の1/60に設定されますが、フレームレートが継続的に低下した場合、すなわち、で動作を設定30分の1に設定します。
  2. より効率的になるように図面の呼び出しを再現します。
  3. 行列を掛けることによって、つまり3つの別々の変換を適用するのではなく、3つの行列を掛け合わせてその変換を頂点に適用するなど、行列を乗算することによって複数の変換を1つの変換に組み合わせようとします。
  4. 不要な場合は、リスト/配列全体を反復処理しないようにしてください。
  5. アンボクシングのオーバーヘッドを避けるために、ループ内で処理する必要があるものに対して、可能な最も低いレベル/最も基本的な構造を使用しようとします。あなたを固定する

[2012年8月27日の編集]

役立つリンクはタイムステップ:http://gafferongames.com/game-physics/fix-your-timestep/

関連する問題