क्या ढाल की अपनी इकाई होनी चाहिए जो खिलाड़ी के स्थान को ट्रैक करती है? क्षति फ़िल्टरिंग को लागू करना कठिन हो सकता है। यह थोड़े संलग्न घटकों और संस्थाओं के बीच की रेखाओं को भी धुंधला करता है।
संपादित करें: मुझे लगता है कि एक अलग इकाई के लिए पर्याप्त "स्वायत्त व्यवहार" नहीं है। इस विशिष्ट मामले में, एक ढाल लक्ष्य का अनुसरण करता है, लक्ष्य के लिए काम करता है और लक्ष्य को रेखांकित नहीं करता है। जबकि मैं इस बात से सहमत हूं कि "शील्ड ऑब्जेक्ट" की अवधारणा में कुछ भी गलत नहीं है, इस मामले में हम व्यवहार के साथ काम कर रहे हैं, जो एक घटक में ठीक बैठता है। लेकिन मैं विशुद्ध रूप से तार्किक संस्थाओं का भी समर्थक हूं (जैसा कि पूर्ण विकसित इकाई प्रणालियों के विपरीत है जिसमें आप ट्रांसफ़ॉर्म और रेंडर घटक पा सकते हैं)।
क्या ढाल एक ऐसा घटक होना चाहिए जिसमें अन्य घटक हों? मैंने कभी इस तरह का कुछ भी नहीं देखा या सुना है, लेकिन शायद यह आम है और मैं अभी पर्याप्त गहरी नहीं हूं।
इसे एक अलग परिप्रेक्ष्य में देखें; एक घटक जोड़ने से अन्य घटकों को भी जोड़ा जाता है, और हटाने पर, अतिरिक्त घटक भी चले जाते हैं।
क्या ढाल को केवल एक घटक होना चाहिए जो खिलाड़ी में जुड़ जाए? संभवतः दूसरों को प्रबंधित करने के लिए एक अतिरिक्त घटक के साथ, जैसे कि वे सभी एक समूह के रूप में निकाले जा सकते हैं। (गलती से नुकसान कम करने वाले घटक को पीछे छोड़ दें, अब यह मजेदार होगा)।
यह एक समाधान हो सकता है, यह पुन: उपयोग को बढ़ावा देगा, हालांकि यह अधिक त्रुटि प्रवण भी है (उदाहरण के लिए, आपके द्वारा उल्लिखित समस्या के लिए)। यह बुरा नहीं है। आपको परीक्षण और त्रुटि के साथ नए वर्तनी संयोजन मिल सकते हैं :)
कुछ और है जो अधिक घटक अनुभव वाले किसी व्यक्ति के लिए स्पष्ट है?
मैं थोड़ा विस्तार करने जा रहा हूं।
मेरा मानना है कि आपने देखा कि कैसे कुछ घटकों को प्राथमिकता दी जानी चाहिए, जब वे एक इकाई में जोड़े गए हों (यह आपके अन्य प्रश्न का भी उत्तर देगा)।
मैं यह भी मानने जा रहा हूं कि हम संदेश-आधारित संचार का उपयोग कर रहे हैं (चर्चा के लिए, यह इस समय एक विधि कॉल पर एक अमूर्त है)।
जब भी एक ढाल घटक "स्थापित" होता है, तो ढाल घटक संदेश संचालकों को एक विशिष्ट (उच्च) आदेश के साथ जंजीर किया जाता है।
Handler Stage Handler Level Handler Priority
In Pre System High
Out Invariant High
Post AboveNormal
Normal
BelowNormal
Low
System Low
In - incoming messages
Out - outgoing messages
Index = ((int)Level | (int)Priority)
"आँकड़े" घटक इन / इनवेरिएंट / नॉर्मल इंडेक्स में एक "क्षति" संदेश हैंडलर स्थापित करता है। हर बार एक "क्षति" संदेश प्राप्त होता है, इसकी "मूल्य" राशि से एचपी को कम करें।
उचित मानक व्यवहार (कुछ प्राकृतिक क्षति प्रतिरोध और / या नस्लीय लक्षणों में डाल दिया, जो भी हो)।
शील्ड घटक इन / प्री / हाई इंडेक्स पर "क्षति" संदेश हैंडलर स्थापित करता है।
Every time a "damage" message is received, deplete the shield energy and substract
the shield energy from the damage value, so that the damage down the message
handler pipeline is reduced.
damage -> stats
stats
stats.hp -= damage.value
damage -> shield -> stats
shield
if(shield.energy) {
remove_me();
return;
}
damage.value -= shield.energyquantum
shield.energy -= shield.energyquantum;
stats
stats.hp -= damage.value
आप देख सकते हैं कि यह बहुत लचीला है, यद्यपि इसके लिए घटक बातचीत को डिज़ाइन करते समय सावधानीपूर्वक नियोजन की आवश्यकता होगी, जैसा कि आप यह निर्धारित करने जा रहे हैं कि संदेश के किस भाग में पाइपलाइन घटक संदेश घटना संचालकों को संभाल रहे हैं।
समझ में आता है? मुझे बताएं कि क्या मैं और अधिक विवरण जोड़ सकता हूं।
संपादित करें: कई घटक उदाहरणों (दो कवच घटकों) के बारे में। आप या तो केवल एक इकाई उदाहरण (यह प्रति-घटक स्थिति को मारता है) में कुल इंस्टेंस काउंट का ट्रैक रख सकते हैं, और केवल संदेश ईवेंट हैंडलर जोड़ते रह सकते हैं, या सुनिश्चित कर सकते हैं कि आपके घटक कंटेनर अग्रिम में डुप्लिकेट घटक प्रकारों के लिए अनुमति दें।