Kecuali jika Anda bersedia membayar $ 10.000 untuk XBOX atau Playstation devkit, maka satu-satunya konsol yang dapat Anda kembangkan adalah XBOX 360, dan satu-satunya cara Anda dapat melakukannya adalah dengan XNA.
Untuk pengembangan profesional, kecuali jika Anda benar-benar perlu mendapatkan 100% dari kekuatan pemrosesan XBOX (yang sebagian besar game, terutama game 2D tidak perlu), maka XNA menurut saya sebenarnya jauh lebih baik untuk pengembangan.
Beberapa kesalahan yang dilakukan penjawab lain:
XBOX hanya memiliki 3 core. Anda mendapatkan akses ke semuanya dengan XNA.
Masing-masing core memiliki hyperthreading dan dukungan untuk 2 hyperthread. Anda hanya mendapatkan akses ke 4/6 utas. Salah satu utas itu adalah untuk XNA. Yang lainnya adalah utas yang tidak dapat diakses pengembang game, karena digunakan oleh OS XBOX.
C # pada XBOX jauh lebih lambat dari C # pada Windows. XBOX menggunakan .NET compact CLR, yang sangat ringan dan tidak memiliki banyak optmisasi desktop CLR. Fitur keamanan XBOX mencegah program dari memodifikasi kode sumber mereka sendiri. Ini membuatnya sangat sulit untuk bahkan memungkinkan kode .NET untuk berjalan, apalagi untuk berjalan cepat . Bagian dari apa yang membuat kode terkelola kompetitif dalam kinerja dengan kode asli C ++, adalah bahwa CLR dapat memodifikasi kode sendiri untuk mengoptimalkan koherensi cache. Tim pengembang XNA harus melompati beberapa simpai yang cukup besar hanya untuk membuat C # berjalan di XBOX sama sekali, dan ada biaya kinerja yang terkait dengan simpai ini.
Anda tidak boleh terlalu malas dengan alokasi memori. XNA pada Windows sangat menyederhanakan alokasi memori, seperti yang Anda harapkan dari lingkungan yang dikelola. Namun, di XBOX, .NET compact CLR menggunakan pendekatan sweep & compact untuk pengumpulan sampah, dan pendekatan khas untuk mencegah kegagapan dalam gim Anda karena koleksi, adalah untuk menghindari koleksi sekaligus. Ini membutuhkan penggunaan kumpulan objek untuk kelas Anda, dan menggunakan struct untuk objek yang lebih kecil, tempat Anda biasanya menggunakan kelas di lingkungan Windows. Pengumpulan objek umumnya membutuhkan model alokasi / bebas dari manajemen objek, yang tidak lebih buruk (dan mungkin sedikit lebih baik) daripada manajemen memori C ++.
Yang mengatakan, pengembangan di C # / XNA masih banyak kali lebih cepat dan lebih mudah daripada pengembangan di C ++ tanpa DirectX API (yang XNA adalah).
Berikut status permainan yang saya buat di XNA, setelah 4 minggu bekerja:
Itu seharusnya memberi Anda gambaran betapa cepatnya perkembangan dengan perpustakaan / API XNA dikombinasikan dengan C #.
Tangkapan layar itu dibuat oleh XBOX di sekitar 65FPS.
Jika Anda seorang pengembang game penghobi, dan Anda ingin membuat game untuk konsol, tidak hanya XNA + XBOX satu-satunya pilihan realisitic Anda, itu juga merupakan opsi yang cukup menakjubkan, lingkungan pengembangan yang menyenangkan, dan banyak game XBOX Live Arcade telah dibuat dengan XNA, dan menghasilkan ratusan ribu dolar melakukannya. ( Limbo misalnya.)