Bir XBOX veya Playstation devkit için 10.000 dolar ödemek istemiyorsanız, geliştirebileceğiniz tek konsol XBOX 360'tır ve bunu yapabilmenin tek yolu XNA ile.
Profesyonel gelişim için, XBOX'un işlem gücünün% 100'ünü (özellikle çoğu 2D oyunların ihtiyaç duymadığı) elde etmeniz gerekmedikçe, bence XNA aslında geliştirme için çok daha iyidir.
Diğer cevaplayıcıların yaptığı bazı hatalar:
XBOX sadece 3 çekirdeğe sahiptir. XNA ile hepsine erişebilirsiniz.
Her çekirdeğin hiper iş parçacığı ve 2 hiper iş parçacığı desteği vardır. Yalnızca 4/6 konularına erişebilirsiniz. Bu ipliklerden biri XNA içindir. Diğeri, XBOX OS tarafından kullanıldığı için hiçbir oyun geliştiricisinin erişemediği bir iş parçacığıdır.
XBOX'taki C #, Windows'taki C # 'dan çok daha yavaştır. XBOX, çok hafif olan ve masaüstü CLR'nin birçok optimizasyonundan yoksun .NET kompakt CLR'yi kullanıyor. XBOX güvenlik özellikleri programların kendi kaynak kodlarını değiştirmesini önler. Bu, .NET kodunun çalışmasına izin vermeyi çok zorlaştırır, hızlı çalıştırmak için çok daha az . Yönetilen kodu C ++ yerel koduyla performans açısından rekabetçi kılan şeylerden biri, CLR'nin önbellek tutarlılığını optimize etmek için kendi kodunu değiştirebilmesidir. XNA geliştirici ekibi, C # 'ın XBOX üzerinde çalışmasını sağlamak için bazı oldukça büyük çemberlerden atlamak zorunda ve bu çemberlerle ilişkili bir performans maliyeti var.
Bellek tahsisi ile ÇOK tembel olmuyorsunuz. Windows'taki XNA, yönetilen bir ortamdan beklediğiniz gibi bellek ayırmayı büyük ölçüde basitleştirir. Bununla birlikte, XBOX'ta .NET kompakt CLR, çöp toplama için süpürme ve kompakt bir yaklaşım kullanır ve koleksiyonlar nedeniyle oyununuzda kekemeliği önlemeye yönelik tipik yaklaşım, koleksiyonları tamamen önlemektir. Bu, sınıflarınız için nesne havuzlarının ve normalde Windows ortamında sınıfları kullanacağınız daha küçük nesneler için yapıların kullanılmasını gerektirir. Nesne havuzlaması genellikle C ++ bellek yönetiminden daha kötü (ve belki biraz daha iyi) olmayan bir tahsis / serbest nesne yönetimi modeli gerektirir.
Bununla birlikte, C # / XNA'daki geliştirme, DirectX API'sı (XNA olan) olmadan C ++ 'daki geliştirmeden hala birçok kez daha hızlı ve daha kolaydır.
İşte 4 hafta çalıştıktan sonra XNA'da yaptığım oyunun durumu:
Bu, XNA kütüphanesi / API ile inanılmaz derecede hızlı bir gelişimin C # ile kombinasyon halinde olduğunu hissetmelidir.
Bu ekran görüntüsü XBOX tarafından yaklaşık 65FPS'de görüntüleniyor.
Bir hobici oyun geliştiricisiyseniz ve bir konsol için oyun yapmak istiyorsanız, sadece tek gerçek seçenek olan XNA + XBOX değil, aynı zamanda oldukça şaşırtıcı bir seçenek, eğlenceli bir geliştirme ortamı ve birçok XBOX Live Arcade oyunu XNA ile yapılmış ve yüz binlerce dolar kazanmış. ( Örneğin Limbo .)