अपनी वर्तमान परियोजना के लिए मैंने एक घटक / इकाई-आधारित प्रणाली को लागू किया , जो मूल रूप से अधिकांश सर्वोत्तम-अभ्यास का पालन करता है, बल्कि इस अपरिभाषित क्षेत्र में है ।
इसलिए मुझे (थोड़ी विस्तारित) इकाइयाँ मिलीं , जो मूल रूप से एक int
आईडी हैं, एक मानव-पठनीय नाम, std::map
घटकों की और एक long
"प्रकार सूचक" जिसका उपयोग यह दिखाने के लिए किया जाता है कि कौन से घटक मौजूद हैं (मेरे पास enum
सभी घटकों के लिए दो की शक्ति है प्रकार और जब भी किसी घटक को इकाई में जोड़ा जाता है, तो मैं स्वचालित रूप से बिटवाइज़ ऑपरेशनों के माध्यम से उस समय को बदल देता हूं, इस उत्तर की तुलना करता हूं )।
फिर घटक होते हैं , बल्कि सरल भी होते हैं: int
आईडी, enum
घटक प्रकार के रूप में, माता-पिता इकाई सूचक और std::map
सभी गुणों में से एक यह घटक रखता है।
अंत में कुछ सिस्टम / प्रबंधक जो वास्तविक तर्क प्रसंस्करण को संभालते हैं। वे पहले जांचते हैं कि वर्तमान में संसाधित एंटिटी में एक मिलान long
"टाइप इंडिकेटर" है = उस सिस्टम के लिए सभी आवश्यक घटक मौजूद हैं। इसके बाद जरूरत पड़ने पर कुछ संपत्तियों को एक्सेस करता है और या तो संबंधित घटक में कुछ फ़ंक्शन को सीधे कॉल करता है या कुछ संदेश भेजता है (एक संदेश डिस्पैचर के माध्यम से)।
निचला-रेखा: यहां तक, डेटा-संचालित दृष्टिकोण के साथ संयुक्त रूप से एक मानक मानक-संचालित घटक / इकाई-आधारित प्रणाली (तुलना, घटकों में हार्ड-कोडित डेटा चर नहीं है, लेकिन इसके बजाय एक जेनेरिक मानचित्र, कुछ (के रूप में) घटक हैं / घटकों के अभिलेखों को बाद में अतिरिक्त डेटा जोड़ने के विकल्प के साथ फाइलों से पढ़ा जाएगा, जो कि वास्तविक घटक कोड का हिस्सा नहीं है।
अब मैं उस परियोजना में व्यवहार पेड़ ( ऐगमेव बीटीएसके पर आधारित ) को भी पेश करना चाहूंगा , लेकिन मुझे यकीन नहीं है कि क्या और कैसे उन्हें पहले से मौजूद घटकों से जोड़ा जाना चाहिए या उन डिजाइनों को सामान्य रूप से कैसे एकीकृत किया जाए।
कई संबंधित विचार / बिंदु / प्रश्न दिमाग में आते हैं:
मेरी बीटी को फाइलों से (फिर से) पढ़ा जाएगा। वर्तमान में मेरे पास यह देखने का एक कठिन समय है कि मैं
BT Action
उस पेड़ के बीच संबंध कैसे बनाऊंगा और मेरे आवेदन में वास्तविक कोडिंग है। क्या मुझे बीटी फ़ाइलों में उपयोग किए जाने वाले एक्शन नामों और वास्तविक लॉजिक कार्यान्वयन के लिए फ़ंक्शन पॉइंटर के बीच किसी प्रकार का नक्शा बनाना चाहिए? इसे हल करने के लिए सामान्य दृष्टिकोण क्या है?मुझे लगता है कि मुझे अपने सभी विभिन्न
Entity
प्रकारों के लिए बीटीएस बनाना होगा (इसलिए प्रत्येक गेम-लॉजिक / एआई-प्रासंगिक घटकों के संयोजन के लिए जैसा कि मेरे कई बार लंबे "प्रकार संकेतक" द्वारा इंगित किया गया है)। इसके परिणामस्वरूपBT Action
घटकों में कार्यान्वयन को लागू करने का कोई मतलब नहीं है, क्योंकि ज्यादातर संभावना है कि कई घटक प्रति क्रिया में शामिल होंगे, क्या ऐसा होता है?तो क्या
BT Action
तर्क को एक / कई अलग-अलग प्रणालियों में बैठना चाहिए (जिनके तरीकों से विचार # 1 अंक तक का नक्शा)? सिस्टम तब मेरेlong
"टाइप इंडिकेटर" की जांच करेगा कि क्याEntity
बीटी की वर्तमान में जाँच की गई है और जिसे एक निश्चित कार्रवाई को निष्पादित करने के लिए कहा गया था (सिस्टम में विधि) वास्तव में ऐसा करने की अनुमति है (= आवश्यक घटक हैं)। लेकिन तब, यदि नहीं (क्योंकि उदाहरण के लिए बीटी निर्माता ने एक विशिष्ट स्थिति की अनदेखी की, जहां एक आवश्यक घटक रनटाइम में एंटिटी से जुड़ा नहीं हो सकता है), तो कुछ भी नहीं होगा।
प्रशन:
- क्या उस तरह के एकीकरण के लिए सिद्ध अवधारणाएं हैं?
- ऊपर मेरे 3 बिंदुओं पर आपका क्या लेना है?
- सामान्य रूप से मेरे घटक / इकाई-आधारित डिज़ाइन के बारे में भी, कोई अन्य बातें जो मन में आती हैं?