सी ++ खेल के विकास के लिए क्रॉस-प्लेटफॉर्म 3 डी इंजन का उपयोग करना आसान है? [बन्द है]


73

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


16
हालांकि यह बंद हो सकता था, यह सवाल मेरे लिए बहुत मददगार था।
कालेब जारेस

4
ditto, बहुत अच्छा धागा, पता नहीं क्यों stackexchange इस तरह के सवालों को पसंद नहीं करता है।
स्टीवेह

2
वे मुझे बंद किए गए सवालों को पसंद करते हैं
फ्रैंक क्रॉन्स्टन


जवाबों:


48

माई ओपिनियन (केवल ओपन सोर्स 3 डी इंजन के लिए):

  • Irrlicht :
    • लाइट 3 डी इंजन
    • बिना निर्भरता के स्वच्छ C ++ और कोई STL।
    • बहुत अच्छी तरह से प्रलेखित नहीं है लेकिन अच्छे ट्यूटोरियल हैं।
    • बहुत छोटा इसलिए आप इसे आसानी से कस्टमाइज़ कर सकते हैं।
    • कोई भी OpenGL 3.X ड्राइवर, डायरेक्ट X 10.X या 11.X आधिकारिक SDK में उपलब्ध नहीं है।
    • मोबाइल विकास के लिए बहुत अच्छा;
    • अच्छा समुदाय
    • कुछ एक्सटेंशन उपलब्ध हैं
  • Ogre3D :
    • बड़ा 3 डी इंजन
    • यह आधुनिक C ++ जैसे STL, अपवाद और RTTI का उपयोग करता है
    • अच्छा प्रलेखन (प्रकाशित पुस्तकें हैं)।
    • कई रेंडरर्स (ओपनजीएल, डायरेक्टएक्स और ओपनजीएल ईएस ...)।
    • Ogre3D CEGUI या बुलेट एकीकरण, ट्री नोड्स के रूप में कई एक्सटेंशन हैं ...
    • लेकिन Ogre3D को विस्तारित करने के लिए और अधिक कठिन है यदि आप कुछ विशेष चाहते हैं
    • बड़ा समुदाय
    • कई एक्सटेंशन
  • क्रिस्टल अंतरिक्ष : एक पुरानी डिजाइन और उपयोग करने में मुश्किल। कुछ दिनों के बाद, मैंने इस इंजन का उपयोग करना बंद कर दिया।
  • Horde3D
    • छोटा इंजन
    • आधुनिक डिज़ाइन
    • प्रकाश समुदाय
    • कोई एक्सटेंशन नहीं
  • Blendelf
    • कुछ निर्भरता के साथ छोटा इंजन
    • डीओएफ या एचडीआर के रूप में आधुनिक प्रभावों के साथ आधुनिक डिजाइन ...
    • ओपेन ही
    • प्रकाश समुदाय
    • भौतिकी के लिए बुलेट एकीकरण
    • आप इस इंजन 3 डी को पायलट करने के लिए लुआ का उपयोग करते हैं

टी एल; डॉ:

  • एक डेस्कटॉप गेम (या भविष्य के व्यावसायिक गेम) के लिए: Ogre3D
  • पहले गेम के लिए: Irrlicht
  • मोबाइल विकास के लिए: irrlicht (Ogre3D बहुत बड़ा है)
  • सेक्सी प्रभाव के लिए: ब्लेंड्फ़

सच कहूं तो मैं मोबाइल विकास के लिए इरक्लिक्ट की सिफारिश नहीं करूंगा। यह बहुत अधिक मेमोरी-आवंटन करता है और छोटे-से-कस्टम कस्टम-आवंटन कार्यान्वयन प्रदान करता है। स्टार्टअप पर किए गए लगभग 60 000 आवंटन के कारण स्टार्टअप-टाइम एक बड़ा मुद्दा है।
सिमोन

मैं एंड्रॉइड और आईओएस पर इरिक्लिप्ट का उपयोग करता हूं और स्टार्टअप समय एक बड़ा मुद्दा नहीं है ... बनावट लोडिंग आवंटन से अधिक लंबा है ...
एलिस

@Simon क्या आप समझा सकते हैं कि आप "कस्टम मेमोरी-आवंटन कार्यान्वयन" के साथ क्या कर रहे हैं? वह क्या है, और आप इसे क्यों चाहते हैं?
Tem_user_name

2
@Aerovistae मेमोरी आवंटन के लिए ऑपरेटिंग सिस्टम पर कॉल की आवश्यकता होती है, यह बहुत महंगा ऑपरेशन है। गेम इंजन बनाते समय आप अपने खुद के मेमोरी मैनेजमेंट करना चाहते हैं, आप एक बार मेमोरी का एक बड़ा हिस्सा आवंटित करेंगे और फिर आप उस मेमोरी को प्रोग्राम में स्वयं वितरित करेंगे। इस तरह आप केवल पॉइंटर्स को इधर-उधर घुमा रहे हैं और हर बार जब आप अतिरिक्त मेमोरी चाहते हैं तो कर्नेल को कॉल नहीं कर रहे हैं। यह काफी उन्नत विषय है और विशेष रूप से उन्नत सूचक अंकगणित की आवश्यकता होती है, खासकर यदि आप किसी प्रकार के विरोधी विखंडन तंत्र चाहते हैं।
द्रेता

3
इसलिए जब साइमन कहता है कि वह इसकी सिफारिश नहीं करेगा क्योंकि यह कस्टम मेमोरी-आवंटन कार्यान्वयन की पेशकश नहीं करता है, तो वास्तव में यह एक शुरुआती या यहां तक ​​कि अधिकांश मध्यवर्ती डेवलपर्स पर लागू नहीं होता है?
अस्थायी_सर_नाम

21

स्पष्ट प्रारंभिक सुझाव Ogre3D है


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

1
लेकिन Ogre3D एक इंजन नहीं है। यह एक 3 डी प्रतिपादन पुस्तकालय है। आपको या तो एक इंजन का चयन करना होगा जो कि ओग्रे पर बनाया गया हो या अपना खुद का बना हो।
अग्नि

4
मुझे Ogre3d के साथ व्यापक अनुभव है; यह बहुत स्थिर और अच्छी तरह से लिखा गया है, और सांसारिक कार्यों (दृश्य खींचना, मेष लोडिंग, बिलबोर्ड / कण) की देखभाल करने का एक बड़ा काम करता है। आग सही है कि यह गेम इंजन नहीं है; लेकिन ओग्रे को एक बनाने के लिए अन्य पुस्तकालयों के साथ शामिल किया जा सकता है (और अक्सर होता है)। यह "व्यक्तिगत त्रिकोणों को आरेखित करने और अपने स्वयं के 3 डी ऑब्जेक्ट लोडर को लिखने" के ऊपर एक शानदार कदम है, लेकिन यह सिर्फ एक प्रतिपादन पुस्तकालय है। यदि आप चाहते हैं कि यह एक सक्रिय और सहायक समुदाय के साथ एक महान पुस्तकालय है।
कारंतजा

3
@ फायर ऑग्रे: ऑब्जेक्ट ओरिएंटेड ग्राफिक्स रेंडरिंग इंजन। यह एक इंजन है। इसके सभी जगह एकल गाने हैं। निश्चित रूप से एक इंजन।
Ricket

3
@ टिकट हाँ, एक ग्राफिक्स इंजन है, लेकिन एक गेम इंजन नहीं है जो वह है जो शायद वह सबसे अधिक मतलब है क्योंकि यह जोरदार ओगोज़ डॉक्स में जोर दिया गया है। इसके अलावा सिंगलटन (एंटी) पैटर्न का निश्चित रूप से इसके इंजन या नहीं होने से कोई लेना-देना नहीं है।
राउल

7

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

  • यह काफी हल्का है, और यह आपके ऊपर एक ढांचा नहीं डालता है: आप जितना चाहें उतना कम या जितना उपयोग कर सकते हैं, और एसडीएल, एसएफएमएल, wxWidgets, qt के माध्यम से इसका उपयोग कर सकते हैं ...
  • यह एक महान सीखने का अनुभव है: जैसा कि आप पुस्तकालय सीखते हैं, आप अंतर्निहित ओपनजीएल और जिस तरह से इसे डिज़ाइन किया गया है, उसके बारे में अधिक से अधिक समझते हैं
  • उपयोग करने के लिए बहुत ज्यादा तैयार: इसमें मुख्य धारा 3 डी प्रारूपों के लिए लोडर हैं
  • मिलनसार

नमूनों की व्यापक सूची पर एक नजर है ।


4

खेल इंजन के संदर्भ में:

  • Torque3D : सुविधाओं के बहुत सारे, लेकिन कुछ के साथ काम करना मुश्किल कोड पर विचार करेंगे।
  • C4 इंजन : सस्ता, उत्कृष्ट लेखक समर्थन करता है, लेकिन उपकरण थोड़ा काम का उपयोग कर सकते हैं।
  • DIY: पुस्तकालयों के एक सेट का चयन करें और उन्हें अपने खेल के साथ गोंद करें।

चूंकि Ogre3D का सुझाव दिया गया था, इसलिए एक हल्के वजन वाला वैकल्पिक Horde3D भी मौजूद है ।

पेशेवरों:

  • डिजाइन ध्वनि है और संभवतः भारी प्रतिपादन के लिए Ogre3D की बेहतर व्याख्या करेगा (यदि यह पहले से नहीं है)
  • C API, पायथन जैसी भाषाओं के लिए सरल और आसान बनाए रखने के लिए बाइंडिंग बनाता है (आंतरिक कोड C ++ है)

विपक्ष:

  • कम से कम OpenGL 2.0 समर्थन की आवश्यकता है
  • छोटा समुदाय
  • अस्थिर कोड आधार (प्रमुख वास्तु परिवर्तन अभी भी हो रहे हैं)

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

4

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

मुझे लगता है कि इसके साथ शुरुआत करना बहुत अच्छा होगा!


4

मुझे पता है कि आपने सी ++ के लिए कहा था, लेकिन पांडा 3 डी भी सी ++ के साथ काम करता है, भले ही यह पहले पायथन के साथ काम करने के लिए लक्षित हो। यह एक गेम इंजन है, लेकिन जो भी ...


2

स्पष्ट विकल्प, यदि Ogre3D आपके लिए बहुत निम्न स्तर है, तो NeoAxis होगा: http://www.neoaxisg.com/

यह ओग्रे द्वारा संचालित है, लेकिन एक पूर्ण गेम डेवलपमेंट प्लेटफॉर्म है।

यह .NET को लक्षित कर रहा है ताकि आप C #, प्रबंधित C ++, VB का उपयोग कर सकें।

तो उसके लिए जाओ। :)

Ogre3D iPhone और Android जैसे कई मोबाइल उपकरणों पर चलने में सक्षम है। तो यह बहुत बड़ा नहीं है।

प्रदर्शन के लिए गलती का आकार न लें।

मुझे यकीन नहीं है कि अगर इरलीचैट के पास आधिकारिक iPhone समर्थन है, लेकिन Ogre3D करता है।


यदि यह .NET पर है तो क्या आप भाषाओं की सूची में IronPython नहीं जोड़ सकते हैं? पायथन एक शानदार स्क्रिप्टिंग भाषा है।
जेरेड अपडेटाइक जूल

2
नेट? कि पार मंच बाहर शासन नहीं करता है?
davr

.Net नहीं करता है, लेकिन Neo-Axis C ++ / CLI का उपयोग करता है।
jsimmons

मैंने आज नियोक्सिस के प्रमुख डेवलपर से बात की, और वे इस सितंबर में मैक ओएस एक्स समर्थन की घोषणा कर रहे हैं। :)
जैकोमो


1

अब तक के अच्छे जवाब, लेकिन मैं मुरब्बा जोड़ूंगा । यह मोबाइल बहुत अच्छा करता है। बड़े स्टूडियो के एक समूह ने इसके साथ कंसोल गेम जारी किया है, इसलिए इसे क्रेडेंशियल मिल गया है। यहां तक ​​कि इसके शीर्ष पर निर्मित एक एकता जैसा संपादक शिवा 3 डी भी है , जो क्रॉस-प्लेटफॉर्म के लिए भी अनुमति देता है।

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