そのため、Microsoft の新しいバージョンの Visual Studio がかなり最近リリースされ、パフォーマンスがいくらか向上したようです。また、ハードウェアの性能が向上しており、興味がありました。
VB .NET で開発されたゲームは、ユーザーが C++ で開発されたゲームとの違いに気付かないほど高速に実行されるでしょうか?
そのため、Microsoft の新しいバージョンの Visual Studio がかなり最近リリースされ、パフォーマンスがいくらか向上したようです。また、ハードウェアの性能が向上しており、興味がありました。
VB .NET で開発されたゲームは、ユーザーが C++ で開発されたゲームとの違いに気付かないほど高速に実行されるでしょうか?
ゲームの種類によって異なります。たとえば、単純な 2D ボード ゲームでは、レンダリングと計算は複雑ではなく、ユーザーが違いに気付くことはほとんどありません。ゲームがレスポンシブ 3D グラフィックスをリアルタイムでレンダリングする必要がある場合、常に違いがあります。または、複雑な AI (たとえば、チェスなど) の場合、データ量が多いと、ガベージ コレクション メモリが原因で、VB プログラムの速度が確実に低下します。それでも、実際に測定するまではわかりません。
私は最近、マネージ言語のパフォーマンスに関する記事を読み、JIT が事前のコンパイラー最適化よりも優れている場合があることを知りましたが、その記事がどこにあったか忘れてしまいました。私はそれがグーグル可能だと思います。それと、一般的な JIT の最適化を確認することをお勧めします (VB と C# の両方が IL にコンパイルされ、それが解釈されることを思い出してください)。
OpenGL/OpenAL バインディングにOpenTKを使用して、C# で一人称シューティング ゲームに取り組んできましたが、これまでのところ順調に進んでいます。いくつかの潜在的な落とし穴があり、JITted IL と C++ の間には常に測定可能な速度の違いがありますが、注意を払えば、エンド ユーザーが気付かない程度までその違いを最小限に抑えることができます。
できるだけ多くの作業を GPU にオフロードします。頂点処理 CPU 側は、注意しないと、特にアニメーションやパーティクル エフェクトでフレームレートを落としてしまいます。GPU での作業の速度は C++ ゲームと同じです (ただし、メソッド呼び出しにより少しコストがかかる可能性があるため、VBO/VAO などを使用してみてください)。
ゲームのプロファイリングを定期的に行います。フレームごとに割り当てられているオブジェクトの数を確認し、割り当ての数を減らすようにしてください。理想的には、すべての割り当てを初期化にオフセットします。unsafe
さらに、ゲームのボトルネックとなっているタイトな数学ループでブロックを使用することを恐れないでください。オブジェクト プールを使用すると、ゲームの実行中に割り当てを減らすことができます。
3D 物理演算が必要な場合、Jitter Physics Engineは実行時に大量のガベージを生成しない点で非常に優れており、必要な場合にはオブジェクト プールを使用することがわかりました。