Wenn Sie nicht bereit sind, 10.000 US-Dollar für ein XBOX- oder Playstation-Devkit zu zahlen, können Sie nur eine XBOX 360 entwickeln. Dies ist nur mit XNA möglich.
Für die professionelle Entwicklung ist XNA meiner Meinung nach viel besser für die Entwicklung, es sei denn, Sie benötigen wirklich 100% der Rechenleistung der XBOX (die die meisten Spiele, insbesondere 2D-Spiele, nicht benötigen).
Einige Fehler, die andere Antwortende gemacht haben:
Die XBOX hat nur 3 Kerne. Mit XNA haben Sie Zugriff auf alle.
Jeder Core verfügt über Hyperthreading und unterstützt 2 Hyperthreads. Sie erhalten nur Zugriff auf 4/6 Threads. Einer dieser Threads ist für XNA. Der andere Thread ist ein Thread, auf den keine Spieleentwickler Zugriff haben, da er vom XBOX-Betriebssystem verwendet wird.
C # auf der XBOX ist viel langsamer als C # unter Windows. Die XBOX verwendet die kompakte .NET-CLR, die sehr leichtgewichtig ist und viele der Optimierungen der Desktop-CLR nicht bietet. Die XBOX-Sicherheitsfunktionen verhindern, dass Programme ihren eigenen Quellcode ändern. Das macht es sehr schwierig, .NET-Code überhaupt laufen zu lassen, geschweige denn, schnell zu laufen . Zu den Leistungsmerkmalen von verwaltetem Code im Vergleich zu nativem C ++ - Code gehört, dass die CLR ihren eigenen Code ändern kann, um die Cache-Kohärenz zu optimieren. Das XNA-Entwicklerteam muss durch einige ziemlich große Rahmen springen, um C # überhaupt auf der XBOX zum Laufen zu bringen, und mit diesen Rahmen sind Leistungskosten verbunden.
Sie werden nicht zu faul mit der Speicherzuweisung. XNA unter Windows vereinfacht die Speicherzuweisung erheblich, wie Sie es von einer verwalteten Umgebung erwarten. Auf der XBOX verwendet die .NET-Kompakt-CLR jedoch einen Sweep & Compact-Ansatz für die Garbage-Collection. Der typische Ansatz zur Verhinderung von Spielstörungen aufgrund von Collections besteht darin, Collections insgesamt zu vermeiden. Dies erfordert die Verwendung von Objektpools für Ihre Klassen und von Strukturen für kleinere Objekte, bei denen Sie normalerweise Klassen in der Windows-Umgebung verwenden würden. Das Poolen von Objekten erfordert im Allgemeinen ein Allokations- / freies Modell der Objektverwaltung, das nicht schlechter (und vielleicht ein bisschen besser) ist als die C ++ - Speicherverwaltung.
Trotzdem ist die Entwicklung in C # / XNA um ein Vielfaches schneller und einfacher als die Entwicklung in C ++ ohne DirectX-API (die XNA ist).
Hier ist der Status eines Spiels, das ich in XNA nach 4 Wochen Arbeit mache:
Das sollte Ihnen ein Gefühl dafür vermitteln, wie unglaublich schnell die Entwicklung mit der XNA-Bibliothek / API in Kombination mit C # ist.
Dieser Screenshot wird von der XBOX mit ca. 65FPS gerendert.
Wenn Sie ein begeisterter Spieleentwickler sind und Spiele für eine Konsole entwickeln möchten, ist XNA + XBOX nicht nur Ihre einzige realistische Option, sondern auch eine erstaunliche Option, eine unterhaltsame Entwicklungsumgebung und viele XBOX Live Arcade-Spiele mit XNA gemacht und dabei Hunderttausende von Dollar verdient. ( Limbo zum Beispiel.)