Microsoft XNA Microsoft द्वारा प्रदान किए गए प्रबंधित रनटाइम वातावरण के साथ उपकरणों का एक सेट है जो कंप्यूटर गेम के विकास और प्रबंधन की सुविधा प्रदान करता है। XNA खेल डेवलपर्स को "दोहराए जाने वाले बॉयलरप्लेट कोड" लिखने से मुक्त करने और खेल उत्पादन के विभिन्न पहलुओं को एक प्रणाली में लाने का प्रयास करता है।
यह एक रूपरेखा के रूप में डिज़ाइन किया गया है - वास्तव में, XNA Microsoft XNA फ्रेमवर्क है - इसलिए तकनीकी रूप से यह नाम से इंजन नहीं है।
कोई 'इंजन' नहीं है - यदि आप नोटिस करते हैं, तो आप अपने मुख्य वर्ग को XNA.Framework.Game से प्राप्त करते हैं और ड्रॉ को ओवरराइड करना पड़ता है और फ़ंक्शंस को अपडेट करना पड़ता है। कोई केंद्रीय रेंडरिंग सिस्टम, या इनपुट सिस्टम या ऑडियो सिस्टम बॉक्स से बाहर तैयार नहीं है। स्प्राइटबैच और वर्टेक्स क्लासेस है, कीबोर्डस्टैट है, और कुछ ऑडियो क्लासेस हैं..लेकिन वे निम्न स्तर के ड्राइंग कोड पर केवल अमूर्त हैं।
संपादित करें: उपयोगिता के लिए, अगर इंजन, फ्रेमवर्क, लाइब्रेरी या टूलसेट के रूप में लेबल किया जाता है, तो कुछ क्यों होता है?
कुछ चीजों को स्पष्ट करने के लिए: मैं XNA में एक इंजन विकसित कर रहा हूं। जाहिर है मैं ऐसा नहीं कर सकता कि अवास्तविक जैसी कुछ में, जैसे कि जोनाथन ने उल्लेख किया है। हालांकि, कुछ चीजें हैं जो मुझे लगता है कि महत्वपूर्ण हैं कि XNA के पास कुछ भी नहीं है:
प्लग-एन-प्ले: मैं कुछ प्रकार के टेम्पलेट बनाने में सक्षम होना चाहता हूं - यह एचपी, यह जाल, यह एनीमेशन और बूम है! मेरे खेल में एनपीसी है।
छिपे हुए निम्न स्तर - XNA पहले से ही ऐसा करता है, लेकिन मैं GameServiceProviders के साथ इधर-उधर नहीं होना चाहता। मैं सिर्फ सामान को एक साथ जोड़ना चाहता हूं।
इंजन से अलग किया गया गेम - एक 'गेम' वर्ग हो सकता है, लेकिन मैं अपने तर्क और अपने कोड को आधार प्रणाली से अलग करना चाहता हूं। मैं if(player.hasitem(Item.SECRET_SWORD_OF_SECRETNESS)
अपने ग्राफिक्स रेंडरर पर बफ़र्स को अपडेट करने के लिए मिश्रित नहीं चाहता ।