XBOXまたはPlaystation devkitに10,000ドルを支払うつもりがない場合、開発できる唯一のコンソールはXBOX 360であり、XNAを使用する唯一の方法です。
プロの開発では、XBOXの処理能力(ほとんどのゲーム、特に2Dゲームは必要ありません)の100%を実際に取得する必要がない限り、XNAは実際には開発にはるかに適しています。
他の回答者が犯したいくつかの間違い:
XBOXには3つのコアしかありません。XNAでそれらすべてにアクセスできます。
各コアにはハイパースレッディングがあり、2つのハイパースレッドをサポートしています。4/6スレッドのみにアクセスできます。それらのスレッドの1つはXNA用です。もう1つは、XBOX OSで使用されているため、ゲーム開発者がアクセスできないスレッドです。
XBOXのC#は、WindowsのC#よりもはるかに低速です。XBOXは.NETコンパクトCLRを使用します。これは非常に軽量で、デスクトップCLRの最適化の多くが欠けています。XBOXセキュリティ機能は、プログラムが独自のソースコードを変更するのを防ぎます。これにより、.NETコードの実行を許可することさえ非常に難しくなり、高速で実行することははるかに少なくなります。マネージコードのパフォーマンスをC ++ネイティブコードと競合させる理由の1つは、CLRが独自のコードを変更してキャッシュの一貫性を最適化できることです。XNA開発チームは、XboxでC#を実行するために、いくつかの非常に大きなフープをジャンプする必要があり、これらのフープには関連するパフォーマンスコストがあります。
あなたは、メモリの割り当てであまりにも怠getになることはありません。Windows上のXNAは、管理された環境から期待されるように、メモリ割り当てを大幅に簡素化します。ただし、XBOXでは、.NETコンパクトCLRはガベージコレクションにスイープとコンパクトなアプローチを使用し、コレクションによるゲームのst音を防ぐための一般的なアプローチは、コレクションを完全に回避することです。これには、クラスにオブジェクトプールを使用し、通常Windows環境でクラスを使用する小さなオブジェクトに構造体を使用する必要があります。通常、オブジェクトプーリングには、オブジェクト管理の割り当て/解放モデルが必要です。これは、C ++のメモリ管理よりも悪くはありません(おそらく少しは良いかもしれません)。
とはいえ、C#/ XNAでの開発は、DirectX API(XNA)を使用しないC ++での開発よりも何倍も高速で簡単です。
4週間の仕事の後、XNAで作成しているゲームのステータスは次のとおりです。
これにより、XNAライブラリ/ APIを使用した非常に高速な開発がC#とどのように組み合わされているかがわかります。
そのスクリーンショットは、約65FPSのXBOXによってレンダリングされます。
あなたが趣味のゲーム開発者であり、コンソール用のゲームを作りたい場合、XNA + XBOXが唯一の現実的なオプションであるだけでなく、それはかなり驚くべきオプションであり、楽しい開発環境であり、多くのXBOX Live ArcadeゲームはXNAで作成し、それを何十万ドルも行いました。(たとえば、リンボ。)