XNA को गेम इंजन क्यों नहीं माना जाता है?


13

मैं सोच रहा था कि XNA क्या गायब है, एक गेम इंजन के रूप में माना जाता है। यह उन सभी चीजों को करता है जो एक गेम इंजन को करना चाहिए (भौतिकी भाग को छोड़कर); यह गेम इंजन पर विकिपीडिया लेख में परिभाषित हर पहलू के लिए भी समर्थन करता है ।

XNA को गेम इंजन क्यों नहीं माना जाता है?


19
@ मेरो को इससे कोई मतलब नहीं है।
कम्युनिस्ट बतख

2
क्या बात है? यदि यह वह कार्य करता है जिसकी आपको आवश्यकता है, तो इसका उपयोग करें। यदि नहीं, तो नहीं। कौन परवाह करता है कि लोग इसे कैसे कहते हैं? यह वैसे भी सिर्फ एक लेबल है, ज्यादातर विपणन बंदरों से उपयोग किया जाता है;)
माईक सेमर

यह सिर्फ टिप्पणी है क्योंकि कम्युनिस्ट डक ने इस सवाल
Ali1S232

4
@ माईक सेमर यह एक लेबल नहीं है। एक इंजन और एक फ्रेमवर्क दो अलग और अलग चीजें हैं, और XNA बाद वाला है। यह समझना और समझना उपयोगी है कि XNA एक इंजन नहीं है, अन्यथा आप बहुत भ्रमित हो सकते हैं जब आपको पता चलता है कि आपको वास्तव में XNA में इंजन बनाने की आवश्यकता हो सकती है, या यह कि कोई प्लग-इन-बिट्स-और- वास्तविक इंजन की तरह खेलने की क्षमता।
डोपेलग्रेनर

3
@ माईक यह इस बात का हिस्सा है कि हम कैसे काम करते हैं। मैं कहता हूं कि ड्राइवर , आप जानते हैं कि यह क्या है और क्या नहीं है, यह क्या करता है और आप इसका उपयोग कैसे कर सकते हैं। जब मैं ढांचा कहता हूं तो कुछ ऐसा ही होना चाहिए - लेकिन केवल अगर आप पहचानते हैं कि ढांचा क्या है, और यह क्या नहीं है (एक इंजन)। उन व्यावहारिक निहितार्थों को ध्यान में रखते हुए, मैं आपको मुख्य रूप से यह कहते हुए आपत्ति करता हूं कि "कौन परवाह करता है कि लोग इसे कैसे कहते हैं? यह वैसे भी एक लेबल है"
डोपेलग्रेनेर

जवाबों:


28

Microsoft XNA Microsoft द्वारा प्रदान किए गए प्रबंधित रनटाइम वातावरण के साथ उपकरणों का एक सेट है जो कंप्यूटर गेम के विकास और प्रबंधन की सुविधा प्रदान करता है। XNA खेल डेवलपर्स को "दोहराए जाने वाले बॉयलरप्लेट कोड" लिखने से मुक्त करने और खेल उत्पादन के विभिन्न पहलुओं को एक प्रणाली में लाने का प्रयास करता है।

यह एक रूपरेखा के रूप में डिज़ाइन किया गया है - वास्तव में, XNA Microsoft XNA फ्रेमवर्क है - इसलिए तकनीकी रूप से यह नाम से इंजन नहीं है।

कोई 'इंजन' नहीं है - यदि आप नोटिस करते हैं, तो आप अपने मुख्य वर्ग को XNA.Framework.Game से प्राप्त करते हैं और ड्रॉ को ओवरराइड करना पड़ता है और फ़ंक्शंस को अपडेट करना पड़ता है। कोई केंद्रीय रेंडरिंग सिस्टम, या इनपुट सिस्टम या ऑडियो सिस्टम बॉक्स से बाहर तैयार नहीं है। स्प्राइटबैच और वर्टेक्स क्लासेस है, कीबोर्डस्टैट है, और कुछ ऑडियो क्लासेस हैं..लेकिन वे निम्न स्तर के ड्राइंग कोड पर केवल अमूर्त हैं।

संपादित करें: उपयोगिता के लिए, अगर इंजन, फ्रेमवर्क, लाइब्रेरी या टूलसेट के रूप में लेबल किया जाता है, तो कुछ क्यों होता है?

कुछ चीजों को स्पष्ट करने के लिए: मैं XNA में एक इंजन विकसित कर रहा हूं। जाहिर है मैं ऐसा नहीं कर सकता कि अवास्तविक जैसी कुछ में, जैसे कि जोनाथन ने उल्लेख किया है। हालांकि, कुछ चीजें हैं जो मुझे लगता है कि महत्वपूर्ण हैं कि XNA के पास कुछ भी नहीं है:

प्लग-एन-प्ले: मैं कुछ प्रकार के टेम्पलेट बनाने में सक्षम होना चाहता हूं - यह एचपी, यह जाल, यह एनीमेशन और बूम है! मेरे खेल में एनपीसी है।

छिपे हुए निम्न स्तर - XNA पहले से ही ऐसा करता है, लेकिन मैं GameServiceProviders के साथ इधर-उधर नहीं होना चाहता। मैं सिर्फ सामान को एक साथ जोड़ना चाहता हूं।

इंजन से अलग किया गया गेम - एक 'गेम' वर्ग हो सकता है, लेकिन मैं अपने तर्क और अपने कोड को आधार प्रणाली से अलग करना चाहता हूं। मैं if(player.hasitem(Item.SECRET_SWORD_OF_SECRETNESS)अपने ग्राफिक्स रेंडरर पर बफ़र्स को अपडेट करने के लिए मिश्रित नहीं चाहता ।


मैं स्वीकार करता हूं कि आपको ड्रॉ और सेटिंग्स को अपडेट करने से बचना होगा, लेकिन इसका मतलब यह नहीं है कि इसमें कोई रेंडरिंग इंजन नहीं है, बिंदु यह है कि आप ड्रॉ करने के लिए हर चीज को तैयार करते हैं, और वे न केवल सार ड्रॉ कॉल हैं, बस इसका नमूना देख रहे हैं इसका 2d GameEngine से कम कुछ भी नहीं है (मैंने 3D सामान की आसानी से जांच नहीं की है), और जहाँ तक मुझे याद है कि इसमें इनपुट नियंत्रक हैं, और मेरा मतलब है कि यह सिर्फ ढाँचा है क्योंकि Microsoft ने इसे नाम दिया है या इसका कोई तार्किक कारण है ?
अली

1
@ गजेट: एक पल के लिए विचार करें कि XNA में इंजन बनाने के तरीके के बारे में चर्चा की गई है, लेकिन अवास्तविक इंजन या क्रायंगाइन के लिए नहीं। मुझे लगता है कि एक गेम इंजन की एक सामान्य विशेषता यह है कि आप बस बिट्स में प्लग कर सकते हैं और कुछ जाएगा ( टीवी ट्रोप्स एस्कॉर्ट्स इंजन इस संबंध में काफी डेटा-संचालित हो सकते हैं )। इसके विपरीत, XNA आपको मूल रूप से काम के हर औंस को करने के लिए छोड़ देता है - आपको केवल उपकरणों के साथ इंटरफ़ेस करने के लिए मिडलवेयर बनाने की आवश्यकता नहीं है।
डोपेलग्रेनर

1
इसके अलावा, मुझे विश्वास नहीं हुआ कि मुझे अभी तक गेम इंजन की स्पष्ट परिभाषा मिल गई है, लेकिन मुझे क्या पता है कि गेम इंजन हैं , और एक्सएनए बस ऐसा नहीं करते हैं जो वे करते हैं (सिवाय मिडलवेयर और कुछ प्रदान करने के अलावा) बहुत सरल निम्न-स्तरीय घटक)।
डोपेलग्रेनर

@ जोनाथन हॉब्स: अब मैं देख सकता हूं कि आप किस बारे में बात कर रहे हैं, लेकिन मैंने फिर से GameBryo (NetImmerse) की कोशिश की है और यह एक गेमइंजीन माना जाता है, लेकिन जब तक लाइटस्पेड नहीं था तब तक XNA की तुलना में इसकी कम विशेषताएं थीं, यह सिर्फ एक मिडलवेयर था, इसलिए मुझे लगता है कि हम इस सवाल का शीर्षक बदल सकते हैंwhat makes an sdk to be called a GameEngine?
Ali1S232

1
लेकिन आप एक मौजूदा इंजन का उपयोग कर एक फ्रेम के रूप में इंजन का विकास कर सकते हैं यदि आप वास्तव में बालिग होना चाहते हैं। बहुत से लोगों ने 3 टेक लिया फिर एक इंजन बनाया जो अधिक उपयोगी था। तब फिर से आप "इंजन" के बिना भी एक खेल बना सकते हैं यदि आप वास्तव में चाहते थे। Xna को फ्रेमवर्क कहना अधिक सही है, लेकिन मुझे "इंजन" से भेद करने के बारे में नहीं पता है, क्योंकि यह "फ्रेमवर्क" के रूप में दृढ़ता से परिभाषित नहीं है।
तेतराड

5

एक रूपरेखा एक विशिष्ट प्रकार के अनुप्रयोग के लिए निर्मित न्यूनतम वास्तुकला प्रदान करती है। यह वास्तुकला के घोषित लक्ष्यों से परे कार्यान्वयन विवरण के बारे में मान्यताओं को कम करता है। हालांकि एक क्रॉस-प्लेटफ़ॉर्म गेम डेवलपमेंट फ्रेमवर्क "सभी कंप्यूटर गेम के लिए सामान्य (लगभग) सामान्य है, प्लेटफॉर्म की परवाह किए बिना" प्रदान करने का लक्ष्य हो सकता है, और केवल ऐसे अमूर्त कारकों को लागू कर सकता है जैसे समय और इकाई प्रबंधन, एक्सएनए फ्रेमवर्क (संक्षेप में) XNA CLR पर निष्पादन के लिए लिखे गए (लगभग) सभी कंप्यूटर गेम के लिए क्या सामान्य है, यह प्रदान करने का लक्ष्य है। यह देखते हुए कि यह फ़ोकस इतना संकीर्ण है, वे इंपुनिटी के साथ इंजन की विशेषताओं को शामिल करने में सक्षम हैं। वे इसे "फ्रेमवर्क" के शीर्षक के तहत बंडल करते हैं, क्योंकि यह कार्यान्वयन की एक निश्चित स्वतंत्रता को इंगित करता है जिसे आप गेम डेवलपर के रूप में आनंद लेंगे।

मोटे तौर पर, उपयोगी नींव प्रदान करते समय एक रूपरेखा यथासंभव अप्रतिबंधित होनी चाहिए। दूसरी ओर, एक इंजन आमतौर पर विशिष्ट विशेषताओं की ओर अधिक केंद्रित होता है, और इसका उपयोग करते हुए, आप स्वीकार करते हैं कि कुछ सीमाएँ हैं जिन्हें आप से जोड़ दिया जाएगा।


2

मैंने कभी भी 'गेम इंजन' का उपयोग नहीं किया है, लेकिन मेरी समझ एक विशेष प्रकार के गेम के विकास के लिए पूर्व-परिभाषित कंकाल खेल-संरचना के साथ बंडल किए गए टूल के पूर्व-निर्धारित सेट के रूप में अधिक है। और निश्चित रूप से एक विशिष्ट प्रकार के खेल के विकास के लिए संरचना एक खेल इंजन में मुख्य परिभाषित कारक है, यह निश्चित रूप से प्रतीत होता है कि उपरोक्त विकिपीडिया लेख क्या है। मेरे लिए XNA फ्रेमवर्क AJAX की तरह थर्ड-पार्टी लाइब्रेरी सेट के समान अधिक है, जिसमें यह मौजूदा नंगी-बंधी प्रोग्रामिंग भाषा में पूर्व-निर्मित दिनचर्या जोड़ता है। यह आपके द्वारा प्रोग्रामर के रूप में प्रोग्रामर के रूप में आप पर कोई प्रतिबंध या दिशानिर्देश नहीं डाल सकता है। मेरे दिमाग में जो किसी भी तरह से इंजन के समान नहीं है। फिर मैं एक व्यवसाय सॉफ्टवेयर / वेब केंद्रित पृष्ठभूमि से आता हूं,

मैंने XNA का उपयोग करते हुए एक गेम आइडिया के लिए फ्रेमवर्क बनाया है और यह निश्चित रूप से ऐसा लगता है कि मैं C # के ऊपर सिर्फ एक अन्य लाइब्रेरी का उपयोग कर रहा हूं। मैं विंडोज़ और संभवतः Xbox के लिए दो या तीन गेम का उत्पादन करने के लिए टेस्ट प्रोग्राम में हैक की गई प्रक्रियाओं का उपयोग करने जा रहा हूं।

इसलिए, जैसा कि मैंने कहा, मेरे दिमाग में यह एक 'गेम्स इंजन' बनने की समझ से बहुत दूर है, इसलिए जब मैं इस पद पर आया तो मुझे इस बात का कोई अंदाजा नहीं था कि कोई उस तुलना को क्यों करेगा। क्या मै गलत हु?

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