आपको अपना गेम इंजन कब रोल करना चाहिए? [बन्द है]


20

मैं अब 5 साल के लिए एक सॉफ्टवेयर डेवलपर हूं, और मैं iOS गेम के विकास में शामिल होना चाहता हूं। मैंने लगभग 2 वर्षों के लिए आईओएस एसडीके के साथ खेला है, कोकोहेड्स की बैठकों में भाग लेते हैं, और मुझे लगता है कि मेरा उद्देश्य-सी, कोको और यहां तक ​​कि सी और सी ++ पर भी अच्छी पकड़ है।

मुझे एक गेम आइडिया है, और पता है कि मैं Box2D का उपयोग करूंगा, लेकिन मैं सोच रहा हूं कि मुझे cocos2D का उपयोग करना चाहिए या नहीं। मुख्य कारण हैं:

  1. मैं चीजें करना चाहता हूं, ग्राफिक्स वार, जो कि cocos2d में उपलब्ध नहीं हैं।
  2. यदि मैं अपना गेम इंजन रोल करता हूं, तो मेरे पास अधिक नियंत्रण होगा।

बेशक, पहले से मौजूद गेम इंजन का उपयोग करने का मुख्य कारण यह समय है जो इसे बचाता है, और यह कठिन सामान को आसान बनाता है; लेकिन किसी ऐसे व्यक्ति के लिए जिसके पास खुद को रोल करने के लिए तकनीकी चॉप है, क्या इसका कोई मतलब है?


7
यदि आप "C / C ++" कहते हैं, तो इसकी बहुत संभावना है कि आपके पास उनमें से कम से कम एक पर अच्छी पकड़ नहीं है, और शायद दोनों।
डेडएमजी

10
मैं समझता हूं कि कुछ लोग दोनों को भ्रमित करते हैं और मुझे संभवतः C / C ++ / Objective-C को यह बताने के लिए कहना चाहिए कि मैं उन मुख्य भाषाओं को समझता हूं जिनका उपयोग आप iOS प्लेटफॉर्म पर प्रोग्राम करने के लिए कर सकते हैं। मुझे यह कहने का मन नहीं हुआ कि C / C ++ का स्वतः यह अर्थ होगा कि मैं दोनों को एक के रूप में भ्रमित करता हूं।
जॉय ग्रीन

मुझे यह सवाल पसंद है क्योंकि यह सामान्य से एक स्वागत योग्य परिवर्तन करता है "मैं अपना इंजन कैसे बना सकता हूं?" प्रशन। आप के लिए +1, सर।
रे डे

1
@DeadMG मैं कुछ कहता हूं "C / C ++" और दोनों की एक उत्कृष्ट समझ है।
सियारान

मैं कहता हूँ कि यह भी था कि यह किया
bobobobo

जवाबों:


38

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

जब तक आप जानते हैं कि आपको अपना रोल करने की आवश्यकता नहीं है, तब तक आपको अपनी तकनीक को रोल नहीं करना चाहिए । यह स्पष्ट लग सकता है, लेकिन यह वास्तव में एकमात्र सही उत्तर है। अधिकांश फैसलों के साथ, ट्रेडऑफ़ हैं। केवल आप अपनी विशेष स्थिति के लिए लागत / लाभ विश्लेषण का निर्धारण कर सकते हैं।

आपको निम्नलिखित बातों की समझ होनी चाहिए (यह सूची शायद ही सभी समावेशी है)।

  • क्या मिडलवेयर पहले से मौजूद है जिसे आप इस्तेमाल कर सकते हैं ("इंजन" या अन्यथा)
  • क्या है कि मिडलवेयर टेबल पर लाता है, बुद्धिमान।
  • मिडलवेयर कितना परिपक्व / सिद्ध होता है, खासकर अगर आप मल्टीप्लायर समर्थन की परवाह करते हैं
  • मिडलवेयर किस प्रकार के उपकरण प्रदान करता है, या विकास को गति देने में मदद नहीं करता है (अपने स्वयं के तकनीक के साथ छूट उपकरण नहीं)
  • मिडलवेयर की क्या सीमाएँ हैं (एक सरल उदाहरण के रूप में, एकता 3.x ने iOS पर डायनेमिक लाइट से वास्तविक समय छाया नहीं किया)
  • आपके विशेष गेम में क्या विशिष्ट विशेषताएं हैं
  • आपकी समय सीमा क्या है, और मिडलवेयर आपको कितना मिलेगा, मिडलवेयर की लागत कितनी है, इस बिंदु तक पहुंचने के लिए आपको कितना समय देना होगा।
  • मिडलवेयर कितना एक्स्टेंसिबल है (उदाहरण के लिए, आप आईओएस पर आईओएस पर छाया समस्या के बारे में ब्लॉब शैडो का उपयोग करके प्राप्त कर सकते हैं। या शायद प्रोजेक्शन शैडो।)

(ध्यान दें कि मैंने विशेष रूप से वहाँ "अधिक नियंत्रण" नहीं रखा था। यह एक लोडेड वाक्यांश है जो "मुझे कोड पसंद नहीं है जो मैं नहीं लिखता" से लेकर "मुझे देखने, समझने और समझने में सक्षम होने की आवश्यकता है" इस विशेष प्रभाव को प्राप्त करने के लिए भौतिकी इंजन के सभी चर को ट्विक करें। "पहला वास्तव में एक वैध विचार नहीं है, लेकिन दूसरा है।)

निजी तौर पर, मुझे लगता है कि कम बजट के खेल के लिए अपनी तकनीक को रोल करना शायद ही कभी प्रयास के लायक हो। इन दिनों आपको सस्ते इंजन मिलने वाली बिजली की मात्रा हास्यास्पद है। आप उस बिंदु पर नहीं हैं जहां आप एक मल्टीमिलियन डॉलर ट्रिपल ए इंजन लाइसेंस पर निर्णय ले रहे हैं या नहीं। आप ऐसा करने में सक्षम नहीं होंगे जो कहते हैं, एकता $ 3k के लिए आपको प्रदान करती है। या Cocos2d की लागत जो भी हो (यह मुफ़्त नहीं है?)।

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


7
माना। Tldr के रूप में: यदि आपको सवाल पूछना है, तो आप मौजूदा इंजन के साथ जाने से बहुत बेहतर हैं।
क्रिस सबागियो

बोल्ड में आपका ध्यान मेरे अनुभव को दर्शाता है।
इंजीनियर

1
समुदाय भी महत्वपूर्ण है। एक मजबूत समुदाय के साथ कुछ, जैसे कि XNA, विशेष समस्याओं को हल करता है जो बहुत आसान है क्योंकि किसी ने इसे पहले किया है या आपको संकेत दे सकता है।
ashes999

14

आप अपना इंजन रोल मत करो। रोल आप खुद खेल। यदि आप एक ही समय में एक इंजन लिखने के लिए होते हैं, तो आपके लिए अच्छा है, यदि आप हमेशा नहीं कर सकते हैं जो कुछ हिस्सों को आप इसे और अधिक "इंजन" बनाने के लिए पुन: उपयोग करना चाह सकते हैं।

लोग अक्सर अनुमान लगाते हैं कि किसी खेल के "इंजन" भाग को लिखने में क्या लगता है। यदि आप केवल वही करते हैं, जिसकी आपको आवश्यकता है, तो उसे लंबा समय नहीं लगेगा कठिन हिस्सा यह है कि आप अपनी समस्या को हल करने के लिए केवल लिखने के बुनियादी ढाँचे को न लें और केवल वही लिखें जो आपको अवश्य करना चाहिए।

मैं एक मौजूदा इंजन का उपयोग करेगा जब:

  • मेरे पास एक तंग समय सीमा है
  • मेरे पास एक ज्ञात निश्चित सुविधा सेट है ताकि मैं उसके लिए एक इंजन चुन सकूं

3

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

यदि Cocos2D या कुछ अन्य ग्राफिक्स परत अब आपकी आवश्यकताओं को पूरा करती हैं, तो इसका उपयोग करें। यदि विकास के दौरान आपकी आवश्यकताएं बदल जाती हैं, तो आप रेंडरिंग बैक एंड को आसानी से स्वैप कर सकते हैं - यदि आपको वास्तव में विश्वास है कि आपके पास खुद का इंजन बनाने के लिए अनुभव और वाचालता है, तो आपके पास निश्चित रूप से ऐसा होना चाहिए जो आपके गेम को तैयार कर सके जैसे कि स्वैपिंग रेंडरिंग बैक एंड एक अपेक्षाकृत तुच्छ ऑपरेशन है।

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


यदि उसका लक्ष्य सीखना है, तो यह समय की बर्बादी नहीं है।
सियारान

3

यह बहुत सरल है। आपका प्राथमिक लक्ष्य क्या है: सीखना या बाजार के लिए समय?

पुस्तकालय का उपयोग करने से बचें यदि आपका प्राथमिक लक्ष्य उन अवधारणाओं को लागू करने के अनुभव से सीखना है जो पुस्तकालय द्वारा हल किए जाते हैं। जब भी मैं एक खेल (अंशकालिक) विकसित करता हूं, तो मेरा लक्ष्य विशुद्ध रूप से सीखना है। मुझे परवाह नहीं है कि कितना समय लगता है, यही कारण है कि मैं यह सब खरोंच से कर रहा हूं! अब, आप तय करते हैं।


0

जब आप जानते हैं कि आपको इसकी आवश्यकता है तो आपको अपना गेम इंजन रोल करना चाहिए ।

इसलिए, उदाहरण के लिए, आपके पास एकता पर खर्च करने के लिए पैसे नहीं हैं। या, आप इसके बजाय नए हार्डवेयर पर खर्च करेंगे। या, आपके लिए उपलब्ध नि: शुल्क इंजन के साथ प्रदर्शन के मुद्दे हैं, या आपको निम्न स्तर पर अधिक नियंत्रण रखने की आवश्यकता है।

यदि आप सॉफ्टवेयर लिखने के लिए सॉफ्टवेयर लिखना पसंद करते हैं, तो आप गेम इंजन लिखना पसंद करेंगे। शुरुआती गेम प्रोग्रामर्स का एक आम ट्रैपिंग है , जो किसी प्रकार की स्थायी परियोजना के रूप में इंजन लिखते हुए पकड़ा जाता है। मैं ईमानदारी से मानता हूं कि इन सभी ओपन सोर्स गेम इंजनों के बारे में कैसे आया - गेम प्रोग्रामर जो वास्तव में नहीं थे

फिर उस स्थिति में, अपना खुद का इंजन लिखें।

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