व्यवहार के पेड़ :: ऐसे कार्य जो एक टिक से अधिक लंबे होते हैं


19

व्यवहार पेड़ पर जो मैं समझता हूं, प्रत्येक व्यवहार को एक छोटा लक्ष्य उन्मुख कार्य होना चाहिए जो कुछ पुनरावृत्तियों में किया जा सकता है।

उदाहरण के लिए, नीचे एक व्यवहार वृक्ष की एक छवि है:

यहाँ छवि विवरण दर्ज करें

अब हम मान लेते हैं कि ड्राइव टू दुश्मन व्यवहार पेड़ में कुछ पुनरावृत्तियों से अधिक है। इसलिए प्रत्येक पास ड्राइव टू शत्रु को कहा जाता है क्योंकि यह अब चालू स्थिति में है।

समस्या यह है कि यदि कोई शत्रु आस-पास है, तो मुझे एवडे शत्रु कहना है। और यह मानते हुए कि ड्राइव टू दुश्मन को हमेशा कहा जाता है मुझे कभी भी एवडे दुश्मन को बुलाने का मौका नहीं मिला ( इसे शायद दुश्मन से बचना चाहिए )।

  • क्या मुझे ट्री एच पास से कोई फर्क नहीं पड़ता कि वर्तमान में क्या कार्रवाई चल रही है?
  • क्या मैं इसके बारे में सही तरीके से जा रहा हूं?
  • इस तरह के व्यवहार से निपटने का उचित तरीका क्या है?

मूलतः Stackoverflow पर पूछा गया। सोचा था कि यह सवाल पूछने के लिए अधिक उपयुक्त जगह होगी।


1
क्या यहां दिया गया उत्तर मदद करता है? gamedev.stackexchange.com/questions/51693/...
Tetrad

यह भी मेरा सवाल है। मैं इस प्रश्न को एक टिप्पणी के रूप में पोस्ट करने जा रहा था लेकिन सोचा कि यह एक अलग प्रश्न होना चाहिए।
फ्री लांसर

जवाबों:


16

मेरे द्वारा दिए गए चित्र को मेरे पिछले उत्तर में देखें :

यहाँ छवि विवरण दर्ज करें

यदि आप कल्पना करते हैं कि नोड 1 'एवदे शत्रु' है और नोड 2 'चेस शत्रु' है, तो आप देखेंगे कि भले ही दूसरी यात्रा में (जब '2' को छोड़कर सब कुछ हरा हो और 'बी') दूसरा पुनरावृत्ति होने पर शुरू होता है), 'एवडे एनिमी' अभी भी पहले जांचा जाता है। केवल जब are एवडे शत्रु ’विफल हो जाता है, क्योंकि पास में कोई शत्रु नहीं हैं, तो En चेस शत्रु’ फिर से सक्रिय हो जाता है। जब 'चेस एनीमी' का दोबारा दौरा किया जाता है, तो यह नोटिस करता है कि यह 'चालू' स्थिति में है और सीधे 'बी' पर पहुंच जाता है।

इसका मतलब यह है कि जब भी पेड़ की जाँच की जाती है, तो यह हमेशा बाएं से दाएं की ओर जाता है। जब नोड को चलाने के रूप में चिह्नित किया जाता है, तब भी उच्च प्राथमिकता वाले नोड्स को पहले चेक किया जाता है।

मुझे यकीन नहीं है कि यदि आप अपने नोड्स को दाईं ओर से बाईं ओर संसाधित करने के लिए अर्थ रखते हैं, लेकिन यह है कि आप उन्हें व्यवस्थित करने के लिए कैसे प्रकट करते हैं (यानी खाली दुश्मन के नीचे, दुश्मन का पता लगाएं, विपरीत दिशा में ड्राइव के दाईं ओर है)। यदि आपको और स्पष्टीकरण की आवश्यकता है, तो आपको इस विषय पर चैट या अपने मौजूदा प्रश्नों में से एक में पूछना चाहिए।


2
एक और शानदार स्पष्टीकरण के लिए धन्यवाद। मुझे व्यवहार के पेड़ की पुनरावर्ती प्रकृति को समझने में कठिन समय हो रहा था। मैं आपसे पिछले प्रश्न की टिप्पणी में पूछने जा रहा था लेकिन टिप्पणियों को लंबे क्यूए में बदलना नहीं चाहता था। एक आखिरी सवाल हालांकि, यह सब अब समझ में आ रहा है। क्या रनिंग स्टेट्स को संभालने में सेलेक्टर्स और सीक्वेंस में कोई अंतर है? ऐसा लगता है कि चयनकर्ता (नोड 0) ने नोड 1 को पहले चेक किया, जबकि "नोड 2" अनुक्रम ने दूसरे एयोडेशन पर नोड ए की जांच नहीं की।
नि: शुल्क लांसर

4
अच्छा सवाल है, मुझे लगता है कि आप इसे प्राप्त कर रहे हैं। नोड 2 ने नोड ए की जांच नहीं की क्योंकि यह नोड ए पूरा हो गया था। जब नोड 2 को 'रनिंग' के रूप में चिह्नित किया जाता है, तो यह नोट करता है कि नोड बी वह नोड है जो वर्तमान में चल रहा है। आप मान सकते हैं कि यदि कोई नोड चल रहा है, तो इसका मतलब है कि पिछले नोड्स को फिर से जांचने की आवश्यकता नहीं है।
MichaelHouse

क्या आप पहले चयन के बाद "RUNNING" पर सेट होने के बाद, रूट चयनकर्ता (0) को "READY" में रीसेट कर रहे हैं?
नि: शुल्क लांसर

मेरा मानना ​​है कि केवल रनिंग नोड के अभिभावक ही रनिंग के लिए तैयार हैं। रूट को चलाने के बजाय तैयार करने की आवश्यकता है क्योंकि हमें नोड (1) को फिर से पार्स करने की आवश्यकता है।
MichaelHouse

3
वह एक विकल्प है। आप वास्तव में इसे बार-बार या जैसे चाहे वैसे अपडेट कर सकते हैं। यदि आप चाहते हैं कि हर 300 एमएस, या हर फ्रेम। या आपके पास किसी भी घटना से निपटने के लिए एक निश्चित अपडेट और ट्रिगर अपडेट हो सकता है। इस तरह की अधिकांश संरचनाओं के साथ व्यवहार पेड़, कड़ाई से परिभाषित नहीं हैं। उन्हें आपके खेल के लिए सर्वोत्तम तरीके से उपयोग किया जाना चाहिए। यदि इसका मूल्यांकन करना हर फ्रेम बहुत बेकार है, तो ऐसा न करें। आप किसी पेड़ का मूल्यांकन करने में बिताए समय की मात्रा को सीमित कर सकते हैं, और यदि आप चाहते हैं तो अगले फ्रेम पर उठा सकते हैं। बहुत सारे विकल्प हैं।
MichaelHouse
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.