जब तक आप एक XBOX या Playstation Devkit के लिए $ 10,000 का भुगतान करने के लिए तैयार नहीं होते हैं, तब आप जिस कंसोल के लिए विकसित कर सकते हैं वह केवल XBOX 360 है, और आप इसे XNA के साथ कर सकते हैं।
व्यावसायिक विकास के लिए, जब तक आपको वास्तव में XBOX की प्रसंस्करण शक्ति का 100% प्राप्त करने की आवश्यकता नहीं है (जो कि अधिकांश गेम, विशेष रूप से 2 डी गेम की आवश्यकता नहीं है), तो मेरे विचार में XNA वास्तव में विकास के लिए बहुत बेहतर है।
कुछ गलतियाँ जो अन्य उत्तरदाताओं ने की हैं:
XBOX में केवल 3 कोर हैं। आप XNA के साथ उन सभी तक पहुँच प्राप्त करते हैं।
प्रत्येक कोर में 2 हाइपरथ्रेड के लिए हाइपरथ्रेडिंग और समर्थन है। आप केवल 4/6 धागे तक पहुंच पाते हैं। उन थ्रेड्स में से एक XNA के लिए है। दूसरा एक ऐसा धागा है जो किसी भी गेम डेवलपर्स को नहीं मिलता है, क्योंकि यह एक्सबीओएक्स ओएस द्वारा उपयोग किया जाता है।
X # X पर C # विंडोज पर C # की तुलना में बहुत धीमा है। XBOX .NET कॉम्पैक्ट CLR का उपयोग करता है, जो बहुत हल्का है और डेस्कटॉप CLR के ऑप्टिमाइज़ेशन में से कई का अभाव है। XBOX सुरक्षा सुविधाएँ प्रोग्राम को अपने स्वयं के स्रोत कोड को संशोधित करने से रोकती हैं। इससे .NET कोड को रन करने की अनुमति देना बहुत मुश्किल हो जाता है, बहुत तेजी से चलाने के लिए कम । C ++ देशी कोड के साथ प्रदर्शन में प्रबंधित कोड को प्रतिस्पर्धी बनाने का एक हिस्सा यह है कि CLR संशोधित कर सकता है कि यह कैश कोहेरेंसी को ऑप्टिमाइज़ करने का अपना कोड है। XNA देव टीम को XBOX पर चलने के लिए बस C # प्राप्त करने के लिए कुछ बहुत बड़े हुप्स के माध्यम से कूदना पड़ता है, और इन हुप्स के साथ एक संबंधित प्रदर्शन लागत होती है।
आपको मेमोरी आवंटन के साथ TOO आलसी होने की आवश्यकता नहीं है। Windows पर XNA मेमोरी आवंटन को बहुत सरल करता है, जैसा कि आप प्रबंधित वातावरण से उम्मीद करेंगे। हालांकि, XBOX पर, .NET कॉम्पैक्ट CLR कचरा संग्रहण के लिए एक स्वीप और कॉम्पैक्ट दृष्टिकोण का उपयोग करता है, और संग्रह के कारण आपके गेम में हकलाना को रोकने के लिए विशिष्ट दृष्टिकोण, पूरी तरह से संग्रह से बचना है। इसके लिए अपनी कक्षाओं के लिए ऑब्जेक्ट पूल का उपयोग करना और छोटी वस्तुओं के लिए स्ट्रक्चर्स का उपयोग करना आवश्यक है, जहां आप सामान्य रूप से विंडोज वातावरण में कक्षाओं का उपयोग करते हैं। ऑब्जेक्ट पूलिंग के लिए आम तौर पर ऑब्जेक्ट प्रबंधन के एक आवंटित / मुक्त मॉडल की आवश्यकता होती है, जो C ++ मेमोरी प्रबंधन की तुलना में कोई भी बदतर (और शायद थोड़ा बेहतर) है।
इसने कहा, C # / XNA में विकास अभी भी कई बार तेज और आसान है C ++ में बिना DirectX API (जो XNA) के है।
4 सप्ताह के काम के बाद, मैं XNA में बना रहे खेल की स्थिति देख रहा हूँ:
आपको यह समझ में आना चाहिए कि XNA लाइब्रेरी / एपीआई के साथ C # के संयोजन में कितना तेजी से विकास होता है।
उस स्क्रीनशॉट को XBOX द्वारा लगभग 65FPS में प्रस्तुत किया गया है।
यदि आप एक हॉबीस्ट गेम डेवलपर हैं, और आप कंसोल के लिए गेम बनाना चाहते हैं, तो केवल XNA + XBOX ही आपका एकमात्र वास्तविक विकल्प नहीं है, यह एक बहुत ही अद्भुत विकल्प, एक मजेदार विकास वातावरण और कई XBOX लाइव आर्केड गेम्स हैं। XNA के साथ बनाया, और ऐसा करने के लिए सैकड़ों हजारों डॉलर बनाए। ( उदाहरण के लिए लिम्बो ।)