गतिमान लक्ष्य की ओर ले जाने के लिए मानक समाधान क्या है?


28

मैं खेल की तरह 2 डी आरटीएस पर काम कर रहा हूं, बुनियादी ए * बिंदु ए से बिंदु बी तक एक इकाई को स्थानांतरित करने के लिए पूरी तरह से काम करता है।

लेकिन अब मुझे निरंतर पथ-खोज की समस्या का सामना करना पड़ रहा है, जैसे कि ए मूविंग ऑब्जेक्ट बी, प्रत्येक फ्रेम पर ए * कॉल करें जब ऑब्जेक्ट बी की स्थिति बदली हुई लगती है तो अक्षम हो जाती है।

तो इस समस्या का मानक तरीका क्या है?


1
कोई मानक विधि नहीं है।
काइलोटन

3
कोई एकल मानक विधि नहीं है, लेकिन समस्या को हल करने के लिए सामान्य तरीकों के बारे में बहुत अधिक साहित्य है।

जवाबों:


17

जो मुझे पता है, उससे आप डी * एल्गोरिथ्म पर एक नज़र डाल सकते हैं जो "डायनामिक ए *" के लिए खड़ा है। इस एल्गोरिथ्म का उपयोग गतिशील वातावरण के लिए पैथफाइंडिंग की गणना करने के लिए किया जाता है, यहां एक गतिशील लक्ष्य के साथ।

यहाँ टार्गेट पाथ फाइंडिंग के लिए डी * का उपयोग करते हुए एक पेपर दिया गया है: मूविंग टारगेट डी * लाइट


10

एक विकल्प यह है कि हर कुछ फ्रेम के बाद एक नया रास्ता बनाया जाए। यदि आपने इसे एक या दो बार 60 सेकंड के बजाय एक सेकंड में किया है, तो उपयोगकर्ता को तब तक नोटिस करने की संभावना नहीं है जब तक कि वे दोनों बहुत तेज़ गति से चलने वाले ऑब्जेक्ट न हों


8

आप "डॉग कर्व" दृष्टिकोण का उपयोग कर सकते हैं जो कुत्तों को जाहिरा तौर पर किसी का शिकार करते समय उपयोग करता है। वे गणना करते हैं कि प्रभाव बिंदु "भविष्य में" कहां होगा और सीधे उस स्थिति में सेट होगा।

एक सरल सन्निकट तरीका लाइनों के साथ कुछ हो सकता है:

ए = एनपीसी

लक्ष्य = लक्ष्य

T = B: s स्थिति में आने का समय (B: s प्रारंभिक स्थिति)

परिकलित करें कि B 'T' समय में है (यदि B समान गति / कोण पर जारी है) और इसके बजाय वहां जाएं।

यह सही तरीका नहीं है क्योंकि दूरी बदलती है लेकिन एक सही समाधान बनाने की तुलना में बहुत सरल है और केवल 'बी' के लिए प्रयास करने की तुलना में बहुत बेहतर है।


3
कुत्तों के बारे में पता नहीं था। मैंने आज कुछ सीखा है!
स्टीवेयड्रोज़

3

Kylotan से सहमत हूं कि एक मानक तरीका नहीं है ।

एक तरीका जो मैंने देखा है वह यह था कि लक्ष्य को उसी दिशा में आगे बढ़ाते हुए मान लिया जाए और लक्ष्य पथ को बदल दिया जाए क्योंकि आप अपने पथ खोज एल्गोरिथ्म से गुजरते हैं। इसका मतलब यह है कि आपको अपने ए * नोड्स (लागत के विपरीत समय और लागत) में दो मैट्रिक्स रखने होंगे।

उससे बेहतर करना बहुत मुश्किल है। जब तक आपको वास्तव में लक्ष्य के अटूट मार्ग के बारे में ज्ञान नहीं होता है, आप काफी कठिन एआई की भूमि में जा रहे हैं क्योंकि आपके पास एआई का दूसरा अनुमान लगाना होगा या लक्ष्य व्यवहार का अनुकरण करना होगा ताकि यह अनुमान लगाया जा सके कि वे कहां होंगे और उस दिशा में आगे बढ़ेंगे। इस तरह का एआई गेम थ्योरी से एक वास्तविक समय का एबी-गेम है, ऐसा क्षेत्र जो किसी भी 3 डी गेम एआई टूलकिट में मानक नहीं है ।


2

डायनेमिक पाथ फाइंडिंग करने का एक तरीका है, इकाई की भविष्यवाणी करना जहां लक्ष्य जा रहा है और वहां जाना है।

इसे करने का एक तरीका टेलर श्रृंखला का उपयोग करना है।

मैं समय के साथ टारगेट के पथ को फंक्शन S (t) कहूँगा जहाँ S पोजीशन है और T वर्तमान समय है और पथ का सन्निकटन A (f) है और f भविष्य में एक तारीख है। ।

तब सबसे सरल और सबसे बेवकूफ सन्निकटन A (f) = 0 है।

अगला सबसे सरल ए (एफ) = एस (टी) है जहां टी वर्तमान समय है और एफ भविष्य है। यह लक्ष्य की भविष्यवाणी कर रहा है बस जगह में रुक जाता है।

तीसरा सबसे सरल ए (एफ) = एस '(टी) * एफ + एस (टी) है जहां एस' समय के संबंध में एस का व्युत्पन्न है। यह अनुमान लगा रहा है कि लक्ष्य निरंतर गति पर जारी है जिसमें कोई त्वरण नहीं है।

चौथा सरलतम A (f) = S '' (t) * f ^ 2/2 + S '(t) * f + S (t) है। यह अनुमान लगा रहा है कि लक्ष्य एक गिरती गेंद की तरह लगातार गति से बढ़ रहा है।

मैं जानता हूं कि यह समय के बदलाव के संदर्भ में हो सकता है जो कि किसी खेल के लिए अधिक सुविधाजनक है। अब S कुछ भी हो सकता है। यह एक X निर्देशांक हो सकता है, यह Y समन्वय हो सकता है, यह वस्तुओं के बीच की दूरी हो सकती है, यह एक कोण हो सकता है। इसके अलावा किसी वस्तु के भविष्य के मार्ग की भविष्यवाणी करने के संभावित बेहतर तरीके हैं ताकि मैं थोड़ा सा देख सकूँ।


1

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

हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.