2010-03-18 11 views
6

5 साल से अधिक समय मैं डायरेक्टसाउंड और डायरेक्ट 3 डी के साथ खेल रहा था और मुझे यह वास्तव में रोमांचक पाया गया, हालांकि सी ++ के साथ कुछ अच्छे परिणाम प्राप्त करने में काफी समय लगा। मैं तब एक कॉलेज छात्र था। अब मेरे पास सी # और PHP में ज्यादातर उद्यम विकास अनुभव है, और मैं इसे रहने के लिए करता हूं। हमारे देश में गंभीर खेल विकास के साथ पैसे कमाने का कोई मौका नहीं है। हर दिन मुझे लगता है कि मुझे कुछ याद आती है। तो मैंने मज़ा के लिए प्रोग्रामिंग करने के लिए हर दिन एक घंटे या तो खर्च करने का फैसला किया।नेटवर्क किए गए विश्व सिमुलेशन/एआई सैंडबॉक्स के लिए 3 डी गेम इंजन

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

समय के साथ मैं इसे विभिन्न एआई एल्गोरिदम के साथ प्रयोग करने के लिए कुछ विस्तारणीय स्क्रिप्ट योग्य सैंडबॉक्स की तरह बनाने की उम्मीद करता हूं। लेकिन मैं एक पूर्ण विकसित MMORPG पैदा करने का इरादा नहीं कर रहा हूँ: डी

मैं कई संभावित चीजें मैं (स्वतंत्र और खुला स्रोत) की आवश्यकता होगी के लिए देखा है और अब मैं एक विकल्प बनाने के लिए है:

  • ओजीआरई 3 डी + एननेट (या राकनेट)। पुराना अच्छा सी ++। लेकिन क्या यह मुझे इतना धीमा नहीं करेगा कि अब मैं मजा नहीं करूँगा?

  • क्रिस्टलस्पेस। औपचारिक रूप से एक गेम इंजन नहीं बल्कि उसके बहुत करीब है। सी ++ फिर से।

  • MOgre (.NET के लिए OGRE3D wrapper) + lidgren (नेटवर्किंग लाइब्रेरी जो पहले से ही कुछ गेमिंग प्रोजेक्ट्स में उपयोग की जाती है)। अच्छा - मुझे सी # पसंद है, यह तेजी से प्रोग्रामिंग के लिए अच्छा है और स्क्रिप्टिंग के लिए भी इस्तेमाल किया जा सकता है।

  • XNA सिर्फ एक ढांचे, नहीं एक इंजन है, तो वास्तव में, शक है मैं भी XNA खेल स्टूडियो :(

  • Panda3D पर गौर करना चाहिए लगता है -। सकारात्मक प्रतिक्रिया के साथ पूर्ण खेल इंजन के लिए विचार मैं वास्तव में की तरह एक पैकेज में सभी टूलसेट, शुरुआती-अनुकूल इंजन के रूप में इसकी अच्छी समीक्षा है ... यदि आप पाइथन जानते हैं। सी ++ पक्ष पर, पांडा 3 डी में लगभग मौजूद दस्तावेज़ नहीं हैं। मेरे पास पाइथन के साथ 0 अनुभव है, लेकिन मैंने सुना है सीखना आसान है। और अगर यह मजेदार और चुनौतीपूर्ण होगा तो मुझे लगता है कि मुझे एक और प्रोग्रामिंग भाषा में अनुभव से फायदा होगा।

आप इनमें से कौन सा सुझाव देंगे, न कि उन्नत सुविधाओं या अच्छे मंच समर्थन के कारण, बल्कि अधिकतर मज़ेदार, आसान वर्कफ़्लो और विस्तारशीलता के लिए, और इसलिए मैं उन सभी घटकों को बना और एकीकृत कर सकता हूं - डेटाबेस के साथ सर्वर, एआई बॉट्स और एक 3 डी क्लाइंट आवेदन?

उत्तर

1

यदि आपको अजगर पसंद है, तो ओग्रे के लिए बाइंडिंग हैं। python-ogre देखें। मैंने इसे थोड़ा सा उपयोग किया है और यह उपयोग करने के लिए पर्याप्त स्थिर लग रहा था। हालांकि आप कभी-कभी बग का सामना करेंगे क्योंकि उपयोगकर्ता आधार इतना बड़ा नहीं है।

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

वैसे भी इंजन पूरा होने के बाद, यह स्क्रिप्टिंग के बारे में बहुत कुछ है। और यदि आप चाहते थे तो आप इसे उच्च स्तर की भाषा में कर सकते हैं।

3

मैंने केवल एक्सएनए का उपयोग किया है, इसलिए मैं वास्तव में आपको दूसरों से अच्छी तुलना नहीं दे सकता। मैं कहूंगा कि जबकि एक्सएनए सिर्फ एक ढांचा है, TorqueX 3D एक इंजन है। जब आप एक्सएनए ($ 100/वर्ष) के लिए विकसित होने के लिए साइन अप करते हैं तो आपको टॉर्क्यू 2 डी और 3 डी इंजन बाइनरी तक पहुंच प्राप्त होती है।

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

सी # के साथ आपका अनुभव स्पष्ट रूप से बहुत आसान होगा। आपको विंडोज़ विकास पर चिपकना होगा, क्योंकि आपको Xbox 360 पर नेटवर्क स्टैक (या डेटाबेस) तक पहुंच नहीं होगी।

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

मुझे लगता है कि यह किसी भी समय इसे देखने और दूसरों की तुलना करने के लिए आपके समय के लायक होगा। मेरा मानना ​​है कि आप एक्सएनए के लिए साइन अप किए बिना भी एक मुफ्त (30 दिन) परीक्षण डाउनलोड कर सकते हैं यदि आप इसके साथ खेलना चाहते हैं। सौभाग्य!

2

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

InnoDB का उपयोग कर आप टेबल कुछ कर सकता है की तरह मेरे एसक्यूएल शायद बंद है

लेकिन इस विचार देता है:

create table `vertex` (
    `id` bigint(15) not null auto_increment, 
    `when` timestamp default now() not null, 
    `x` number not null, 
    `y` number not null, 
    `z` number not null, 
    `cR` number default 0.0 not null, 
    `cG` number default 0.0 not null, 
    `cB` number default 0.0 not null, 
    `cA` number default 1.0 not null, 
    `u` number default 0.5 not null, 
    `v` number default 0.5 not null 
) primary key (id) ENGINE=InnoDB; 

create table triangles (
    `p1` bigint(15) not null references (vertex.id) on delete restrict on update cascade, 
    `p2` bigint(15) not null references (vertex.id) on delete restrict on update cascade, 
    `p3` bigint(15) not null references (vertex.id) on delete restrict on update cascade, 
    `when` timestamp default now() not null 
) primary key (p1,p2,p3) ENGINE=InnoDB; 

आईडी शिखर आईडी जब टाइमस्टैम्प अद्यतन पैच बनाने के लिए एक्स, वाई, जेड है की अनुमति दे रहे है 3 डी वर्टेक्स प्वाइंट सीआर, सीजी, सीबी, सीए आरजीबीए वर्टेक्स रंग यू है, वी वर्टेक्स बनावट समन्वय पी 1, पी 2, पी 3 कशेरुक तालिका में कशेरुकाओं को संदर्भित करता है ताकि त्रिभुजों को उन विदेशी कुंजी संदर्भों के अनुसार इंगित किया जा सके .. InnoDB हमें अपरिभाषित वर्टेक्स (यानी: स्थिरता) संबंधित मुद्दों को रोकने देता है ताकि इसका उपयोग भी हो सके। यदि आपकी स्थिति में हटाए गए वर्टेक्स के साथ सभी त्रिकोणों को हटाने के लिए स्वीकार्य है, तो 'प्रतिबंधित' को 'कैस्केड' में बदलें (प्रतिबंधित इसे एक त्रिकोण के साथ वर्टेक्स को हटाने में त्रुटि बनाता है)

बॉट जाल एल्गोरिदम के लिए, मूल रूप से आप बॉट्स के लिए एक एलओडी कूल को कार्यान्वित नहीं कर रहे हैं। कई इंजन पहले से ही आपके लिए ऐसा करने में सक्षम हैं। उदाहरण के लिए सभी बॉट की स्किनिंग/एनीमेशन मेष को बच्चों को पांडा 3 डी में बॉट के बाहरी ऑब्जेक्ट में बनाया जा सकता है और यदि बॉट की बाहरी वस्तु को दृश्यमान दायरे से बाहर कर दिया जाता है तो किसी भी बच्चे का संदर्भ नहीं दिया जाता है।

+0

धन्यवाद, वास्तव में उपयोगी विचार। – JustAMartin

संबंधित मुद्दे