क्या खेल के विकास को शुरू करने के लिए कुछ इंजन का उपयोग करना चतुर है? [बन्द है]


14

मैंने बाद में XNA के साथ गेम विकसित करने के लिए C # प्रोग्रामिंग शुरू की। मैंने C # के लिए एक अच्छी गेम डेवलपमेंट बुक पढ़ी। चूंकि मैं पहले से ही अन्य भाषाओं को जानता था, इसलिए मैं जल्दी से C # फीचर्स और सिंटेक्स कोड सीख सकता था। मैंने तब XNA में कदम रखा। चूँकि मैं जिस पुस्तक को पढ़ रहा था वह थोड़ी पुरानी थी, मैंने उसे एक तरफ रख दिया, और इंटरनेट पर XNA के बारे में गेम डेवलपमेंट ट्यूटोरियल देखना शुरू कर दिया। मैं 2 डी ग्राफिक्स का उपयोग करके उनमें से अधिकांश को पूरा और समझ सकता हूं। मैंने एनिमेटेड स्प्राइट्स बनाए, मेरे पात्रों को किसी भी दिशा में स्थानांतरित किया, मेरी पृष्ठभूमि को मेरे पात्रों के आंदोलन के साथ स्क्रॉल किया, और इसी तरह। सब कुछ "कच्चे" XNA के साथ किया गया था।

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

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


1
मेरे दिमाग में यही बात थी ... मैं 4 साल से XNA का इस्तेमाल कर रहा हूं। मैंने एक MMORPG बनाना शुरू कर दिया ... देखो मुझे कहाँ मिला, कहाँ नहीं। हमेशा की तरह, छोटी शुरुआत करें, अपनी पसंद की चीज़ों का उपयोग करें जब तक कि आपके पास बड़ी योजनाएँ न हों, और बस बहुत कुछ करने से पहले ही कुछ कर लें।
माइकल कोलमैन

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

1
मैं केवल लोगों को अपनी परियोजना को बहुत बड़ा नहीं मानने के लिए प्रोत्साहित करने के लिए इसका उल्लेख करता हूं, लेकिन इसके बजाय केवल व्यावहारिकता की वास्तविकता को समझने के लिए। यदि कोई समझता है कि किसी परियोजना को पूरा करने में सपने से अधिक समय लगता है, तो वे "नहीं जहां" से अधिक जाएंगे। मैं हमेशा लोगों को उनके सपने को साकार करने के लिए प्रोत्साहित करना चाहता हूं, और इससे समझौता नहीं करना चाहता। केवल इसे व्यावहारिक बनाएं ताकि इसे पूरा किया जा सके, कोई फर्क नहीं पड़ता। समय में, कुछ भी संभव है।

जवाबों:


11

यह इस बात पर निर्भर करता है कि आप क्या सीखना चाहते हैं। यदि आप "बस एक गेम बनाना चाहते हैं" तो आप एक इंजन के साथ अच्छे हो सकते हैं। मैं व्यक्तिगत रूप से इसकी सिफारिश नहीं करता हूं।

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

और इसके लिए जाओ! 3 डी ग्राफिक्स प्रोग्रामिंग सबसे अच्छी चीज है जो आप जीने के लिए कर सकते हैं। यह एक पैकेज में कठिन, मजेदार और रचनात्मक है।


3
XNA के बजाय मोनोअम की जाँच करने लायक हो सकता है । Microsoft ने XNA को विकसित करना बंद कर दिया है और इसमें विंडोज 8 मेट्रो यूआई समर्थन का अभाव है। कुछ पोस्ट के अनुसार मैंने Reddit पर पढ़ा उनके प्रतिनिधि वास्तव में मोनोगेम की सिफारिश कर रहे हैं। और परिणामस्वरूप आपको क्रॉस प्लेटफॉर्म (लिनक्स, ओएसएक्स, एंड्रॉइड, आईओएस) मिलते हैं।
डेविड सी। बिशप

17

मौजूदा इंजन का उपयोग करने में कुछ भी गलत नहीं है, यह सब आपके लक्ष्यों के लिए आता है।

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

अगर आप गेम प्रोग्रामर बनना चाहते हैं, तो आपको निचले स्तर पर चीजों को समझने की जरूरत है। XNA जैसी रूपरेखा एक अच्छी शुरुआत है। आप चीजों को प्राप्त करने और चलाने के लिए ढांचे पर भरोसा कर सकते हैं और फिर अपने खुद के कोड के साथ फ्रेमवर्क के कुछ हिस्सों को बदलना शुरू कर सकते हैं क्योंकि आप सीखते हैं कि अपने गेम के प्रत्येक घटक का निर्माण कैसे करें।


1
मुझे पसंद है तुम्हारा मेरा जवाब से ज्यादा है। आपके लिए +1।
नोटबंदी

6
यह विशेष रूप से उपयोगी है यदि आप कहते हैं कि आप एक गेम प्रोग्रामर बनना चाहते हैं, एक इंजन के साथ शुरू करने के लिए, और फिर जब आप अपना स्वयं का अध्ययन करते हैं कि एक जिसे आप एक अच्छा उदाहरण के रूप में इस्तेमाल करते हैं (यह मानते हुए कि आपको इसका उपयोग करने में मज़ा आया) अन्य संसाधनों के साथ विपरीत करने के लिए आप पाते हैं इंजन वास्तुकला पर।
michael.bartnett

लेकिन फिर भी आपको कंप्यूटर ग्राफिक्स बेसिक्स में ठोस रॉक होना चाहिए, भले ही आप इंजन का उपयोग कर रहे हों।
नोटबंदी

1

AN AMATEUR से सलाह

// ज़ीरो से लेकर एमेच्योर तक वर्षों की पढ़ाई


मैं निश्चित रूप से उच्च स्तर के इंजन जैसे एकता या टॉर्क 2 डी एमआईटी से दूर रहूंगा। वे छोटे प्रोटोटाइप के लिए महान हैं, लेकिन मैं अपने वीडियो गेम को विकसित करने के लिए उन्हें कभी गंभीरता से नहीं लूंगा। यही कारण है कि मैं? जब तक यह एक साधारण साइडस्कॉलर या आर्केड रीमेक से ज्यादा कुछ नहीं था तब तक क्या है?

अधिकांश गेम इंजन, लाइब्रेरी या फ्रेमवर्क, कार्यों के सरलतम से अधिक कुछ नहीं करते हैं, उन सभी कार्यों और सुविधाओं के साथ बहुत सारे फूला हुआ कोड हैं जिनका आप कभी उपयोग नहीं करेंगे।


जब मैं वर्षों पहले खेल के विकास में नया था, मैंने शीर्ष पर शुरुआत की। बहुत उच्च स्तरीय इंजन। आरपीजी मेकर की तरह बहुत अधिक नहीं, लेकिन निश्चित रूप से वहाँ एकता और टोक़ की तरह उच्च। फिर मैं XNA और C # पर कम हो गया, क्योंकि इसमें बहुत सारे संसाधन और ट्यूटोरियल थे। मेरी प्राथमिक परियोजना को प्रदर्शन की आवश्यकता थी, या शायद मैं अपने सॉफ्टवेयर में अविश्वसनीय प्रदर्शन चाहने के बारे में सिर्फ जुनूनी-बाध्यकारी हूं, भले ही यह एक बड़ी परियोजना न हो। एक्सएनए ने बस इसे नहीं काटा, और मुझे इंजन के साथ बहुत सारी समस्याएं थीं जिन्हें मैंने पढ़ा था उन्हें ठीक करने के लिए सिरदर्द की आवश्यकता थी। जब आप C ++ में अपने स्वयं के इंजन को रोल करेंगे, तो आप XNA / C # जैसे कुछ "उच्च स्तर" का उपयोग करने का क्या मतलब है जब आप एक ही काम कर रहे हैं (XNA बग्स और समस्याओं को ठीक कर रहे हैं)?

सीखने के काफी समय के बाद, मैंने अंततः इस बारे में सीखा कि गेम इंजन कैसे डिजाइन किए जाते हैं और खुद इंजन के कोड को देखने लगते हैं। अधिकांश पेशेवरों को क्या कहना है और खेल इंजनों के आलोचकों की शिकायतों को पढ़कर मुझे एहसास हुआ, 'क्यों एक इंजन का उपयोग भी करते हैं? "

मेरे C ++ पर ब्रश करने और वास्तव में उस भाषा में उपयोग किए जाने वाले कुछ दर्शनों में शामिल होने से मुझे बहुत मदद मिली। हालाँकि, मैंने इतना समय सीखने में बिताया था कि मैं सिर्फ एक खेल बनाना शुरू करना चाहता था।

इसलिए मैंने बहुत प्रशंसा के साथ कुछ समाप्त किया, सी ++ था, और बहुत कम स्तर: एसडीएल। दुर्भाग्य से, यह एक सिरदर्द था। यह इतना निम्न स्तर है, मैं इस पुस्तकालय का उपयोग करने का कोई कारण नहीं देखता। मैं केवल OpenGL सीखता हूँ और इसे स्वयं स्क्रैच से करता हूँ। ईमानदारी से, यह ज्यादातर तथ्य था कि मुझे अपने कोड को लागू करने की आवश्यकता थी क्योंकि कुछ करने के लिए मूल रूप में एक छवि को फ्लिप करें (और दूसरे का कार्यान्वयन इस वजह से काम नहीं कर रहा था कि मैंने स्प्राइट कैसे संभाला) जिसने मुझे एसडीएल को स्थायी रूप से कचरा करने के लिए छोड़ दिया। यदि आप एक सॉफ्टवेयर रेंडरर चाहते हैं तो यह बहुत अच्छा है, लेकिन IMO मैं इसे हार्डवेयर (ओपनजीएल) या उच्चतर (एसएफएमएल) के साथ कम करने के लिए कचरा करूंगा।

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


IMO, एक गेम इंजन सिर्फ मूर्खतापूर्ण है। विशेषज्ञ और शुरुआती प्रोग्रामर दोनों के लिए निम्न स्तर की लाइब्रेरी बहुत बेहतर विकल्प हैं।

यह भी ध्यान दें, मैंने प्रोग्रामिंग अवधारणाओं के बारे में अधिक सीखा है और जब मैंने कभी उच्च स्तर के WYSIWYG गेम इंजन के साथ सीखा है, तो निचले स्तर पर चीजों को संभालने के लिए मजबूर होने पर अपने सॉफ़्टवेयर विकास कौशल को तेज किया है।

XNA पर एकता ने आपको क्या कुछ दिया है? दृश्य संपादन और एक बैसाखी। Newbies अंततः सीखेंगे कि आपको अभी भी पूरे खेल को बहुत ही अच्छे तरीके से कोड करना होगा जैसे कि यदि आप नंगे सी ++ रखते थे, और दृश्य संपादक कुछ ऐसा करने के लिए अक्षम हैं जिसे आप खुद बना सकते हैं।

XNA जैसी कोई चीज आपको एसएफएमएल या ओपेनग्ल और अन्य उपयोगी पुस्तकालयों के अपने स्वयं के कार्यान्वयन पर क्या देती है? IMO, निरपेक्ष कुछ भी अच्छा नहीं है। इससे भी बदतर प्रदर्शन, सी # के बजाय सी + +, नौसिखिया ट्यूटोरियल का एक बहुतायत लेकिन काफी कम व्यावसायिकता, और कुछ सिरदर्द सेवर है कि आईएमओ एक बार के लिए एक बैसाखी है जो आपको बस सी ++ के साथ सीखना चाहिए। मुझे शुरू में C ++ से भयभीत किया गया था और C # को पसंद किया था, ज्यादातर मूर्खों की राय सुनने और कहने की अफवाहों के कारण जो मुझे शुरू में C ++ के साथ एक ही परेशानी थी: मैं सिर्फ एक अच्छा पर्याप्त प्रोग्रामर चाहता था। मुझे एहसास हुआ कि मुझे सी ++ के साथ होने वाली परेशानियों को दूर करने के लिए और अधिक बुनियादी बातों को सीखने और अपनी कमजोरियों को तेज करने की जरूरत थी, जिसे सी # "आसान बना दिया।" क्या मुझे कभी C # में कुछ चीजों की सरलता याद आती है? भी नहीं! मुझे पता है कि इसे सी ++ में बिना किसी परेशानी के कैसे करना है।


यदि निम्न स्तर की लाइब्रेरी या सीखने का DirectX / OpenGL आपको भयभीत करता है, तो बस तब तक प्रतीक्षा करें जब तक कि आप एक पूर्ण वीडियो गेम बनाने की जटिलता में नहीं पड़ना शुरू कर दें।

खेल इंजनों पर मेरे दर्शन को दो उदाहरणों में अभिव्यक्त किया जा सकता है, जो अलग-अलग परिस्थितियों को छोड़कर, इंजन की अतिरेक और व्यर्थता को समझाते हैं।

निम्न स्तर के पुस्तकालयों से भयभीत होने वाले न्यूबीज़ के पास एक जब्ती होगी, जब उन्हें पता चलता है कि यूनिटी जैसे उच्च स्तरीय इंजन के साथ भी, (ग्राफिक्स रेंडरिंग, ऑडियो प्लेइंग, कंटेंट लोडिंग; असली बेसिक सामान के अलावा) यह एक गेम बनाने के लिए लगभग समान होगा। शुरुवात से। जटिलता एक खेल में इंजीनियरिंग है, एपीआई को समझने या प्रदर्शन के लिए प्रस्तुत करने के लिए कक्षाएं विकसित नहीं कर रहा है।

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

इसलिए इंजन न्यूबॉकों के लिए बेकार हैं, क्योंकि न्यूबॉब्स उनके साथ कुछ भी नहीं कर सकते क्योंकि उनके पास इंजीनियरिंग कौशल की कमी है। इसी तरह, इंजन दिग्गजों के लिए बेकार हैं, क्योंकि उनके पास पहले से ही एक इंजन के बिना ऐसा करने के लिए इंजीनियरिंग कौशल है, और खेल इंजन एपीआई दोनों सीखने के सिरदर्द से गुजरने के बजाय अपने स्वयं के अधिक कुशल, विशिष्ट 'इंजन' को रोल कर सकते हैं, कार्य, और प्रदर्शन quirks। उन इंजनों के साथ काम करने के बड़े पैमाने पर दुःस्वप्न का उल्लेख करने के लिए जो आप कभी-कभी छू नहीं सकते हैं क्योंकि वे खुले स्रोत नहीं हैं (या यहां तक ​​कि अगर वे हैं, तो दूसरे के कोड को पढ़ना कई बार एक बुरा सपना हो सकता है)।

हेक, यहां तक ​​कि कुछ "निम्न स्तर" "खेल चौखटे" एक खिड़की बनाने, प्रदर्शन को प्रस्तुत करने और ऑडियो चलाने के लिए कुछ वर्गों से ज्यादा कुछ नहीं हैं। यह कुछ ऐसा है जो एक पेशेवर एसडीएल / एसएफएमएल जैसे अन्य पुस्तकालयों का उपयोग करके खुद को खरोंच से कर सकता है या ओपनजीएल / डायरेक्टएक्स / ओपनएएल के अपने स्वयं के कार्यान्वयन के समय के एक अंश में कर सकता है जो वास्तव में एक पूर्ण वीडियो गेम को पूरा करता है।


TLDR;

  1. यदि आप प्रोग्राम करना चाहते हैं, तो प्रोग्रामर बनना सीखें

  2. इंजन का उपयोग करने से बचें , लेकिन मूर्ख मत बनो और अविश्वसनीय रूप से उपयोगी पुस्तकालयों की उपेक्षा करें।

  3. यदि आप गेम डिज़ाइनर बनना चाहते हैं , तो WYSIWYG इंजन आज़माएं और उन खेलों को पंप करें!

  4. यदि आप गेम प्रोग्रामर बनना चाहते हैं , तो बैसाखी जैसे इंजन से बचें।

  5. मेरे लिए , उच्च स्तर के खेल इंजन का उपयोग करके प्रोग्रामर बनने की मेरी क्षमता को अपंग बना दिया। जिस क्षण मैंने निम्न स्तर के पुस्तकालयों का उपयोग करना शुरू कर दिया या किसी भी पुस्तकालय का उपयोग नहीं किया, मैंने बहुत कुछ सीखना शुरू कर दिया, मैं जल्दी से कुल नौसिखिया से किसी ऐसे व्यक्ति के पास गया जो अब बिना किसी संदर्भ, ट्यूटोरियल या पुस्तक के मेरे बिना वीडियो गेम बना सकता है। बस मेरा कंपाइलर और ढेर सारी इंजीनियरिंग और प्रैक्टिस।

कम स्तर की लाइब्रेरियों से कम समय में मैंने जो सीखने की मात्रा प्राप्त की, वह उस समय की तुलना में बहुत अधिक थी, जो मैंने उच्च स्तर के इंजनों के साथ बहुत कम समय में प्राप्त की थी। **


2
डिस्क्लेमर: यह सिर्फ मेरी कहानी है, और मेरी सीखने की शैली है। अन्य लोग अलग हो सकते हैं। मेरे लिए सीखने की प्रक्रिया के लिए बस एक अंतर था, जब मैंने गेम डेसिनर (इंजनों पर निर्भर) के बजाय गेम प्रोग्रेमर (निम्न स्तर का सामान) बनने की कोशिश की।
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.