मैं एक घटक-आधारित गेम ऑब्जेक्ट सिस्टम बना रहा हूं । कुछ सुझाव:
GameObject
बस की एक सूची हैComponents
।- हैं
GameSubsystems
। उदाहरण के लिए, प्रतिपादन, भौतिकी आदि। प्रत्येकGameSubsystem
में कुछ के संकेत होते हैंComponents
।GameSubsystem
एक बहुत शक्तिशाली और लचीला अमूर्त है: यह खेल की दुनिया के किसी भी स्लाइस (या पहलू) का प्रतिनिधित्व करता है।
(जब बनाया और रचा जाता है) Components
में पंजीकरण की एक तंत्र में आवश्यकता है । कर रहे हैं 4 दृष्टिकोण :GameSubsystems
GameObject
- 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
वह पूरी तरह से गलत है।