क्या Xbox 360 के लिए पेशेवर विकास के लिए XNA अच्छा है?


16

मैं अपने Xbox 360 के लिए विकसित करना शुरू करना चाहता हूं, और मैंने XNA फ्रेमवर्क के बारे में सुना है जो पीसी और Xbox दोनों को लक्षित कर सकता है। यह एक आकर्षक विकल्प की तरह लगता है क्योंकि मेरे ग्राहक सामान्य कंप्यूटर पर भी गेम / ऐप का उपयोग कर सकते हैं।

हालाँकि मैं Xbox दृश्य के लिए बहुत नया हूँ। क्या XNA केवल शौक़ीन विकास के लिए है, और क्या यह अर्ध-पेशेवर या कॉर्पोरेट अनुप्रयोग विकास के लिए अनुशंसित नहीं है? क्या XNA में C ++ विकसित समाधान की क्षमताओं का अभाव है, या यह Xbox पर चलने वाले गेम / ऐप के प्रदर्शन को बुरी तरह से कम करता है?

क्या C # का उपयोग कर Xbox को लक्षित करना संभव है, और XNA के बिना? क्या फायदे हैं?

डायरेक्ट-लेवल के साथ कम-स्तरीय प्रोग्रामिंग सीधे C ++ में होगी। क्या फायदे हैं?

जवाबों:


15

संक्षिप्त उत्तर: हाँ

XNA केवल एक उपकरण है। यह सभी के लिए उपयुक्त है, लेकिन सबसे अधिक प्रोसेसर- और रेखांकन-गहन खेल। यदि आप Xbox 360 गेम के लिए XNA पर विचार कर रहे हैं, तो यहां आपको क्या याद आएगा:

  • वास्तव में तेजी से सीपीयू फ्लोटिंग पॉइंट मैथ्स करने के लिए SIMD / वेक्टर यूनिट तक पहुंच
  • मूल भाषा कोड का उपयोग करने की क्षमता जो शायद C # की तुलना में थोड़ी तेज़ होगी
  • आप स्मृति कैसे आवंटित करते हैं, इसके साथ थोड़ा सा आलसी होने की क्षमता
  • XBLIG गेम में 6 कोर में से केवल 4 तक ही पहुंच है (लेकिन हमें अभी भी सभी 3 सीपीयू मिलते हैं, और वे पूर्ण कोर भी नहीं हैं, इसलिए हम बहुत याद नहीं करते हैं) - सुनिश्चित नहीं है कि यह गैर- XBLIG XNA पर लागू होता है खेल
  • सच में अस्पष्ट चालबाजी अस्पष्ट करने के लिए पूर्ण DirectX पहुँच

अधिक हो सकता है - यह मेरे सिर के ऊपर से है।

(अटकलें: यदि आप कर रहे हैं के रूप में एक पेशेवर डेवलपर (: एक devkit है), मैं लगता है कि आप एक ही विंडोज पर पी / आह्वान के रूप में मूल कोड, साथ XNA उपयोग कर सकते हैं दोनों दुनिया के सर्वश्रेष्ठ आप Microsoft पूछने के लिए होगा।।। एक्सडीके भी देखें ।)

लब्बोलुआब यह है कि एक XNA गेम लगभग देशी गेम जितना तेज है और लगभग उतना ही सामान कर सकता है । मेरा सुझाव है कि आप इसका उपयोग तब तक करेंगे जब तक आपको एक सम्मोहक कारण न मिल जाए।

मुझे नहीं पता कि 360 के लिए किसी भी प्रकार का प्रबंधित डायरेक्टएक्स है या नहीं। शायद स्लिमडीएक्स शुरू करने के लिए एक अच्छी जगह है।


1
"XBLIG" क्या है?
Ricket

2
Xbox लाइव इंडी गेम
dotminic

केवल 3 कोर हैं, और उन सभी तक हमारी पहुंच है। आपको 2 थ्रेड तक पहुँच प्राप्त नहीं है। उन थ्रेड्स में से एक XNA के लिए है, दूसरा एक ऐसा थ्रेड है जो गेम बनाते समय किसी को एक्सेस नहीं मिलता है, जैसा कि XBOX OS के लिए है।
ओलिवोव्स्की

1
इसके अलावा, आप स्मृति आवंटन के साथ आलसी होना नहीं है। बहुत सरल खेलों को छोड़कर, आपको .NET कॉम्पैक्ट CLR पर महंगे कचरा संग्रह को रोकने के लिए सभी वस्तुओं (जिसमें एक आवंटित / मुक्त प्रकार का मॉडल - C ++ से बेहतर नहीं है) को शामिल करना है, जो एक पीढ़ीगत संग्रह दृष्टिकोण का उपयोग करता है।
ओल्होव्स्की

12

जब तक आप एक 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 में बना रहे खेल की स्थिति देख रहा हूँ:

4 सप्ताह के विकास के बाद खेल का स्क्रीनशॉट।

आपको यह समझ में आना चाहिए कि XNA लाइब्रेरी / एपीआई के साथ C # के संयोजन में कितना तेजी से विकास होता है।

उस स्क्रीनशॉट को XBOX द्वारा लगभग 65FPS में प्रस्तुत किया गया है।

यदि आप एक हॉबीस्ट गेम डेवलपर हैं, और आप कंसोल के लिए गेम बनाना चाहते हैं, तो केवल XNA + XBOX ही आपका एकमात्र वास्तविक विकल्प नहीं है, यह एक बहुत ही अद्भुत विकल्प, एक मजेदार विकास वातावरण और कई XBOX लाइव आर्केड गेम्स हैं। XNA के साथ बनाया, और ऐसा करने के लिए सैकड़ों हजारों डॉलर बनाए। ( उदाहरण के लिए लिम्बो ।)


1
XNA देव के बारे में मेरे पास स्पष्ट उत्तरों में से एक है। धन्यवाद।
कील

4

XNA एक दोधारी ब्लेड है; यह उपयोग करने के लिए अपेक्षाकृत आसान है, लेकिन बहुत एक्स्टेंसिबल और अनुकूलन योग्य है। समस्या यह है कि एक प्रबंधित भाषा पर आधारित होने और एक बहुत कॉम्पैक्ट संरचना कार्यान्वयन होने के कारण, एक जटिल खेल से कुछ प्रदर्शन को निचोड़ना बहुत दर्दनाक और निराशाजनक हो सकता है।

आप केवल अपने Xbox को C # / XNA, या C ++ / DirectX के माध्यम से परिनियोजित कर सकते हैं, लेकिन दूसरे विकल्प के लिए XBLA लाइसेंस के लिए अर्हता प्राप्त करना और देवकिट के लिए भुगतान करना आवश्यक है, जो बहुत महंगा हो सकता है (~ 10000 $)।

और याद रखें कि Xbox एक बंद प्रणाली है। किसी भी प्रत्यक्ष टीसीपी / आईपी इंटरैक्शन को भूल जाओ, आप केवल Xbox Live में मौजूद अन्य कंसोल के साथ संवाद कर सकते हैं! नेटवर्क, और आप कच्चे HTTP कनेक्शन नहीं कर सकते।

इसलिए, यदि आप एक खेल के बारे में सोच रहे हैं, तो एक्सएनए को एक कोशिश दें और यदि आप अधिक कच्ची शक्ति (और आपके पास पैसा है) की जरूरत है, तो एक देवकी के पास जाएं। यदि आप एक आवेदन के बारे में सोच रहे हैं ... बस एक और मंच के लिए लक्ष्य।


मुझे आश्चर्य है कि XNA और देवकित कितने अलग हैं ...
Spooks

XNA एक उच्च-स्तरीय, C # API है। एक देवकित एक विशेष सांत्वना है जहां आप सी ++ और डायरेक्टएक्स के साथ लिखे गए गेम को तैनात कर सकते हैं, इस प्रकार निचले स्तर तक पहुंच और समग्र प्रदर्शन बेहतर हो सकता है।
r2d2rigo

तो .. पूरी तरह से अलग
Spooks
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.