2012-01-10 17 views
2

私のXNAゲームでは、私のコンピュータ(2.5GhzデュアルコアIntel Centrino 2)でデバッグモードで約10msかかる動作があります。数分ごとに1回しか実行されません。基本的に整数ですが、整数演算/ビット単位の演算です。60 fpsで時々10msの遅延がありますか?

私はこのメソッドを直接Updateメソッドで呼び出すことができますか、それともあまりにも遅れが生じるでしょうか? Updateメソッドの残りの部分は5msを超えてはいけません(まだ作成されていないためプロファイルできません)。また、すべてのステップが順番に呼び出される限り、複数のフレームに分割することもできます。

主な質問は、これは別のスレッドを作成する価値があるのでしょうか、または60fpsでは遅延が無関係でしょうか?

+1

だから、あなたは基本的に私たちに推測してほしいですか? –

答えて

5

可能であれば描画遅延を引き起こす可能性のあるものに対して、別のスレッドを作成します。ゲームが成長して新しい機能を享受するにつれて、コードを取り直して最初からよりよく設計された可能性のある要素を切り離すのではなく、パフォーマンスを常に心に留めておく方がよいでしょう。

3

コードがFPSクリティカルな場合は、別のスレッドを使用します。コードの所要時間を保証することはできません。フレームをレンダリングすることは重要ではありません。

システムで10msかかることがありますが、他のシステムはどうですか?そしてそれはいつか目立つジッタを引き起こすかもしれません。

1

60 Frames per second = 16.666(ms) theoretically available per frame. 

は今、あなたは、フレームごとに行っている他に何に応じて、数学を確認できます、これは許容可能である可能性があります。

さらに重要なのは、この操作は将来のフレームにとって重要なのでしょうか?

もしそうなら、できるだけ多くを最適化する以外の選択肢はありません。

そうでない場合、この操作のために別個のスレッドを生成する必要があります。

+0

「未来のフレームにはクリティカル」 - はい、レベル生成であるため、ゲームを一時停止することができ、ユーザーは新しいレベルで10フレームを待たなくても構いません。 –

+0

これを生成するのが最適なのは、あらかじめ精巧なスレッドで事前に作成することです。私はあなたが「通常のスタートエリア」の外に出てくるディアブロアイゲームをランダムにしていると仮定します。ディアブロのように、最初はすべてのレベルを生成してから演奏を始めることができます。 –

+0

これは、GBのようなものではなく、大量のメモリを必要としますが、遅い可能性があります。 –

関連する問題