WP 7/8 +xnaゲームはデフォルトで30FPSに設定されていますが、60 FPSに設定した場合、不利な点/パフォーマンスの問題/バグ/その他があります。私は常に60fpsでゲームをプレイ/開発したいので。
2 に答える
ストライフの他の点では優れた答えにいくつかのポイントを追加したいだけです。
物理シミュレーションは一般に、FPS が高いほど安定します。ゲームが 30 FPS で実行されている場合でも、フレームごとに 1/60 秒の更新を 2 回行うことで、物理シミュレーションを 60 FPS で実行できます。これにより、より優れたシミュレーションが得られますが、CPU コストが高くなります。(ただし、物理学では、固定フレーム レートは高フレーム レートよりも重要です。)
入力を 1 秒あたり 60 回ではなく 30 回ポーリングすると、入力状態の非常に高速な変化を見逃すことになり、入力の忠実度がいくらか失われます。
同様に、フレーム レートは入出力レイテンシに影響します。フレームレートが低いと、入力の変更が画面に反映されるまでに時間がかかり、ゲームの応答性が低下します。これは、特に音楽アプリケーションで、オーディオ フィードバックの問題になる可能性もあります。
これらの最後の 2 つのポイントは、非常に神経質なゲームをしている場合にのみ、本当に重要になります (スーパー ヘキサゴンは素晴らしい例です)。WP7/8 のタッチ入力が実際にどのくらいの速さで更新されるかはわかりませんが、情報を見つけるのは困難です。
Windows Phone 7 デバイスの画面のリフレッシュ レートが 30hz であるため、Windows Phone 7 SDK は XNA を 30 FPS に設定します。これは、画面が 1 秒間に 30 回更新されることを意味します。1 秒間に 30 回描画し、1 秒間に 30 回更新すると、そのデバイスの最適な滑らかさのレートになります。
ほとんどの人が 60 (または私のゲーム用 PC では 120) を目指す理由は、ほとんどのモニターのリフレッシュ レートが 60hz (一部は現在 120hz) であるためです。 FPS がリフレッシュ レートよりも高い場合、画面のリフレッシュよりも 1 秒間に多くのフレームをレンダリングすると発生する「スクリーン ティアリング」と呼ばれる可能性のある効果を除いて、他に何も表示されません。
つまり、画面に 2 回描画した後、画面が 1 回更新されたとします。2 回目に描画したのはなぜでしょうか? デバイスのリフレッシュ レートよりも速くレンダリングすると、バッテリー寿命、CPU 使用率、GPU 使用率が無駄になります。したがって、XNA を使い続ける場合は、30 FPS を使い続けることをお勧めします。古いデバイスでは、より多くのフレームをレンダリングしても何のメリットも得られず、どちらかといえば、画面のティアリングなどのグラフィカルな異常が発生するからです。
ハイエンド (およびそれ以降) の Windows Phone 8 デバイスをターゲットにする場合は、XNA をドロップし、Direct3D ルートに進み、Microsoft の「DirectX Toolkit」を使用します。Microsoft の「DirectX Toolkit」には、spritebatch のような XNA の「グラフィック関数」が含まれていますが、C# ではなく C++ が含まれているためです。
これが役立つことを願っています。