मैं एक घटक-आधारित गेम ऑब्जेक्ट सिस्टम बना रहा हूं । कुछ सुझाव:
GameObjectबस की एक सूची हैComponents।- हैं
GameSubsystems। उदाहरण के लिए, प्रतिपादन, भौतिकी आदि। प्रत्येकGameSubsystemमें कुछ के संकेत होते हैंComponents।GameSubsystemएक बहुत शक्तिशाली और लचीला अमूर्त है: यह खेल की दुनिया के किसी भी स्लाइस (या पहलू) का प्रतिनिधित्व करता है।
(जब बनाया और रचा जाता है) Componentsमें पंजीकरण की एक तंत्र में आवश्यकता है । कर रहे हैं 4 दृष्टिकोण :GameSubsystemsGameObject
- 1: जिम्मेदारी पैटर्न की श्रृंखला । हर
Componentको हर अर्पित हैGameSubsystem।GameSubsystemनिर्णय लेना है किComponentsकिसको पंजीकृत करना है (और उन्हें कैसे व्यवस्थित करना है)। उदाहरण के लिए, GameSubsystemRender रेंडर करने योग्य घटकों को पंजीकृत कर सकता है।
समर्थक। Componentsजानते हैं कि उनका उपयोग कैसे किया जाता है। कम युग्मन। A. हम नया जोड़ सकते हैं GameSubsystem। उदाहरण के लिए, चलिए GameSubsystemTield को जोड़ते हैं जो सभी ComponentTitle को पंजीकृत करता है और गारंटी देता है कि प्रत्येक शीर्षक अद्वितीय है और शीर्षक द्वारा ऑब्जेक्ट्स को क्वेरिंग करने के लिए इंटरफ़ेस प्रदान करता है। बेशक, ComponentTitle को इस मामले में फिर से लिखना या विरासत में नहीं मिलना चाहिए। B. हम मौजूदा का पुनर्गठन कर सकते हैं GameSubsystems। उदाहरण के लिए, GameSubsystemAudio, GameSubsystemRender, GameSubsystemParticleEmmiter को GameSubsystemSpatial में विलय किया जा सकता है (सभी ऑडियो, एममिटेर Componentsको एक ही श्रेणी में प्रस्तुत करने और अभिभावक-सापेक्ष परिवर्तनों का उपयोग करने के लिए)।
चोर। हर-हर चेक। बहुत अपर्याप्त है।
चोर। Subsystemsके बारे में पता है Components।
- 2: प्रत्येक विशिष्ट प्रकार की
SubsystemखोजComponentsकरता है।
समर्थक। में बेहतर प्रदर्शन Approach 1।
चोर। Subsystemsअभी भी जानते हैं Components।
- 3:
Componentखुद को रजिस्टर करता हैGameSubsystem(s)। हम संकलन-समय पर जानते हैं कि GameSubsystemRenderer है, तो चलिए ComponentImageRender को GameSubsystemRenderer :: रजिस्टर (ComponentRenderBase *) जैसा कुछ कहेंगे।
समर्थक। प्रदर्शन। में कोई अनावश्यक जाँच नहीं Approach 1।
चोर। Componentsबुरी तरह से साथ युग्मित हैं GameSubsystems।
- 4: मध्यस्थ पैटर्न।
GameState(जिसमें सम्मिलित हैGameSubsystems) registerComponent (घटक *) को लागू कर सकता है।
समर्थक। Componentsऔर GameSubystemsएक दूसरे के बारे में कुछ नहीं जानते।
चोर। C ++ में यह बदसूरत और धीमी टाइपिड-स्विच की तरह दिखेगा।
प्रश्न:
कौन सा दृष्टिकोण बेहतर है और ज्यादातर घटक-आधारित डिज़ाइन में उपयोग किया जाता है? अभ्यास क्या कहता है? के कार्यान्वयन के बारे में कोई सुझाव Approach 4?
धन्यवाद।
Componentsमें GameObjectsमेरे सवाल के दायरे से बाहर है। घटक-आधारित दृष्टिकोण के बारे में लेख पढ़ें या यदि आप इसमें रुचि रखते हैं तो इस साइट पर अपना प्रश्न पूछें। आप जो सोचते हैं, GameSubsystemवह पूरी तरह से गलत है।