उदाहरण लेने के लिए सबसे अच्छा डिज़ाइन किया गया ओपन सोर्स गेम इंजन क्या है? [बन्द है]


15

संभावित डुप्लिकेट:
मुझे गेम कोड के अच्छे (सुव्यवस्थित) उदाहरण कहां मिल सकते हैं?

मैंने कई सी ++ गेम्स को कोड किया है और अब मैं अपना गेम इंजन और संपादक बना रहा हूं।

मुझे डिजाइन के बारे में कुछ संदेह हैं और मैं अनुसरण करने के लिए महान उदाहरणों को ढूंढना चाहता हूं।

आपकी राय में सबसे अच्छा डिजाइन क्या है?

ऑब्जेक्ट ओरिएंटेड होना चाहिए। प्रोग्रामिंग भाषा कोई फर्क नहीं पड़ता, लेकिन मैं इस क्रम में पसंद करता हूं: सी ++, सी #, जावा या इसी तरह का एक अन्य।

संपादित करें: अधिक स्पष्ट करने के लिए, मैं खेल-विशिष्ट कोड पर दिलचस्पी नहीं रखता हूं। मैं सामान्य प्रयोजन के खेल इंजन चाहता हूं।

EDITED: इस लेख में बताया गया है कि गेम इंजन क्या है: विकिपीडिया में गेम इंजन और यहाँ ज्ञात गेम इंजनों की एक सूची है: विकिपीडिया पर गेम इंजनों की सूची


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

2
और भी अधिक स्पष्ट करने के लिए, मुझे गेम-विशिष्ट कोड में कोई दिलचस्पी नहीं है। मैं सामान्य प्रयोजन के खेल इंजन चाहता हूं।
दानी

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

1
कयामत 3 में एक "एफपीएस विशिष्ट इंजन" है, लेकिन इसमें सभी भागों में एक सामान्य इंजन की आवश्यकता है - जैसा कि आप कहते हैं, संसाधन प्रबंधन और स्क्रिप्टिंग, 3 डी प्रतिपादन, भौतिकी, और इसी तरह। यह एक सामान्य इंजन है और अधिक है , किसी तरह कम नहीं है।

2
@Joe Wreschnig मैं इस विषय पर @ दानी से सहमत हूँ। यद्यपि सभी खेल इंजन के किसी न किसी रूप से संचालित होते हैं, "एक-एक" इंजन के लिए उपयोग किए जाने वाले वास्तुशिल्प पैटर्न और कई शीर्षकों पर काम करने के लिए डिज़ाइन किया गया इंजन काफी भिन्न होते हैं, भले ही उनके पास स्क्रिप्टिंग, संसाधन प्रबंधन, 3 डी प्रतिपादन, आदि हों। आदि घटक। इसके अतिरिक्त, एक ही स्टूडियो द्वारा विकसित इंजन पर बनाए गए गेम के लिए कोड को देखना शायद सबसे बुद्धिमानी का विकल्प नहीं है, क्योंकि यह आपको इस बात का सही संकेत नहीं देगा कि इंजन 3 जी पार्टी के माहौल में कितना लचीला और आसान है।
अरी पैट्रिक

जवाबों:


6

मुझे लगता है कि गेम इंजन के निर्माण के बारे में जाने का सबसे अच्छा तरीका यह है कि आप पहले से ही अच्छी तरह से जानते हैं और उन सुविधाओं को जोड़ें जो थकाऊ या दोहराव वाली हैं।

उदाहरण के लिए, मैं पायथन / pygame के साथ बहुत कुछ करता हूं (जो एक एसडीएल रैपर है) मैं सिस्टम का काफी आनंद लेता हूं, लेकिन तीन चीजें थीं जो मुझे परेशान करती थीं:

  • एनीमेशन लूप का निर्माण थकाऊ है, और वे सभी बहुत अधिक समान हैं।
  • मूल स्प्राइट ऑब्जेक्ट बहुत सीमित है। मैं दिशा और गति, विभिन्न स्क्रीन एज स्थितियों, कई छवियों और कई टक्कर योजनाओं को संभालने की क्षमता के साथ एक बेहतर स्प्राइट चाहता था।
  • Pygame में कोई UI सुविधाएँ नहीं हैं। मैं सरल लेबल, बटन और एक नंबर चयनकर्ता चाहता था जिसे मैं
    आसानी से अपने गेम में जोड़ सकूं ।

इन विशेषताओं के आसपास ऑब्जेक्ट-ओरिएंटेड रैपर बनाना अपेक्षाकृत आसान था। अध्याय 10 और गेम इंजन प्रलेखन यहाँ उपलब्ध देखें : http://aharrisbooks.net/pythonGame/

(यह एक किताब के हिस्से के रूप में लिखा गया था, लेकिन आप गेम इंजन में आपका स्वागत है, भले ही आप किताब न चाहें।)

अध्याय 10 मूल 2 डी गेम इंजन के निर्माण के लिए प्रेरणा और तकनीक की व्याख्या करता है। आप अपने निर्माण के रूप में इसका आनंद ले सकते हैं। वास्तविक भाषा इतनी महत्वपूर्ण नहीं है (बेशक आपको OOP का समर्थन करने के लिए एक OOP भाषा की आवश्यकता होगी।) यदि आप पहले से ही C ++ के साथ SDL का उपयोग कर रहे हैं, तो आप मेरे इंजन को C ++ / SDL से जोड़कर शुरू कर सकते हैं।


8

आदरणीय क्वेक (आईडी तकनीक) इंजन डिजाइन समय की कसौटी पर खरा उतरा है और शायद अब तक का सबसे सफल गेम इंजन डिजाइन है। 90 के दशक के उत्तरार्ध से रेंडरर के अलावा सब कुछ काफी हद तक अपरिवर्तित रहा है और अभी भी ETQW जैसे आधुनिक खेलों में उपयोग किया जाता है।

इस इंजन के चार पुनरावृत्तियों के लिए पूर्ण स्रोत कोड (3 के माध्यम से क्वेक 1, प्लस वुल्फ ईटी) जीपीएल के तहत उपलब्ध है। संभवतः सौ से अधिक सक्रिय रूप से विकसित समुदाय समर्थित क्वेक-आधारित गेम इंजन हैं जो उन्हें आधुनिक युग में प्रासंगिक बनाए हुए हैं। विशेष रूप से देखने लायक है इसके शानदार रेंडरर और ioQuake3 के लिए एक्सरेएल है जो आधुनिक हार्डवेयर के लिए अनुकूलित क्वेक 3 के वफादार रखरखाव के लिए है। इसके अलावा, इंजन के अधिक-हाल के "आधिकारिक" आईडी संस्करणों के लिए, गेम लॉजिक (संपूर्ण इंजन नहीं) भी उपलब्ध है।

यहां तक ​​कि अगर आप इस गेम इंजन का उपयोग नहीं करते हैं, तो यह अपने सुविचारित क्लाइंट-सर्वर सेपरेशन आर्किटेक्चर और निम्न स्तर के विवरणों से गेम लॉजिक को अलग करने के लिए अध्ययन के योग्य है।


1
मैं पूर्व Doom3 आईडी तकनीक वस्तु उन्मुख नहीं कहूंगा, हालांकि।
टेट्राद

3
नहीं, वस्तु-उन्मुख नहीं है, लेकिन जैसा कि मैंने कहा, यह अध्ययन के योग्य है। मेरा मतलब है c'mon, सिर्फ इसलिए कि यह प्रक्रियात्मक है इसका मतलब यह नहीं है कि अगर आप इसे देखेंगे तो यह आपको आंख का कैंसर देगा! ;)
मैक्स ई।

6

Ogre3D रेंडरिंग लाइब्रेरी इंजन कोड के काफी करीब है और मैंने सुना है सभी खातों से बहुत अच्छी तरह से डिज़ाइन किया गया है और बहुत ही ऊ है।

http://www.ogre3d.org/


+1 महान इंजन। धन्यवाद तेतरद! मैं पहले से ही इसे जानता हूं, लेकिन मैंने इसका कभी भी इस्तेमाल नहीं किया और न ही इसका सोर्स कोड देखा। क्या आप जानते हैं कि इसने AI (यानी पाथ फाइंडिंग, आदि) को एकीकृत किया है
दानी

3
मुझे लगता है कि यह सब सिर्फ संबंधित प्रतिपादन है।
तेतराड

2
Ogre एक ग्राफिक्स रेंडरिंग लाइब्रेरी है। ऑब्जेक्ट ओरिएंटेड ग्राफिक्स रेंडरिंग इंजन।
जोनाथन स्टर्नबर्ग

0

गेम इंजन के बारे में बात करते समय, मुझे लगता है कि आप किसी भी चीज के बारे में सोच रहे हैं जो रेंडर इंजन, साउंड इंजन, फिजिक्स इंजन, इनपुट इंजन आदि नहीं है।

तो आप गेम आर्किटेक्चर, AI, या डिज़ाइन पैटर्न / सिस्टम आदि के बारे में सोच रहे होंगे, जिसका उपयोग किसी सॉफ्टवेयर को प्रबंधित करने के लिए डेटा और अन्य घटकों को व्यवस्थित करने के लिए किया जाता है, जिससे किसी प्रकार का दृश्य / थैला / भ्रम पैदा होता है, जिससे नियमों का प्रबंधन करने योग्य सेट तैयार होता है। एक वास्तविक "वीडियो गेम" बनाने के लिए ट्वीक करें।

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

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


0

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

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