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;
यदि आप प्रोग्राम करना चाहते हैं, तो प्रोग्रामर बनना सीखें ।
इंजन का उपयोग करने से बचें , लेकिन मूर्ख मत बनो और अविश्वसनीय रूप से उपयोगी पुस्तकालयों की उपेक्षा करें।
यदि आप गेम डिज़ाइनर बनना चाहते हैं , तो WYSIWYG इंजन आज़माएं और उन खेलों को पंप करें!
यदि आप गेम प्रोग्रामर बनना चाहते हैं , तो बैसाखी जैसे इंजन से बचें।
मेरे लिए , उच्च स्तर के खेल इंजन का उपयोग करके प्रोग्रामर बनने की मेरी क्षमता को अपंग बना दिया। जिस क्षण मैंने निम्न स्तर के पुस्तकालयों का उपयोग करना शुरू कर दिया या किसी भी पुस्तकालय का उपयोग नहीं किया, मैंने बहुत कुछ सीखना शुरू कर दिया, मैं जल्दी से कुल नौसिखिया से किसी ऐसे व्यक्ति के पास गया जो अब बिना किसी संदर्भ, ट्यूटोरियल या पुस्तक के मेरे बिना वीडियो गेम बना सकता है। बस मेरा कंपाइलर और ढेर सारी इंजीनियरिंग और प्रैक्टिस।
कम स्तर की लाइब्रेरियों से कम समय में मैंने जो सीखने की मात्रा प्राप्त की, वह उस समय की तुलना में बहुत अधिक थी, जो मैंने उच्च स्तर के इंजनों के साथ बहुत कम समय में प्राप्त की थी। **