2 डी पाथफाइंडिंग - सुगम पथ खोजना


10

मैं एक सरल पाथफाइंडिंग को लागू करने की कोशिश कर रहा था, लेकिन परिणाम मुझे प्राप्त करने के उद्देश्य से कम संतोषजनक है। बात यह है कि Starcraft 2 जैसे खेलों में सभी दिशाओं में इकाइयाँ हैं, जबकि मेरे मामले में इकाइयाँ केवल 8 दिशाओं (Warcraft 1 शैली) में चलती हैं क्योंकि ये 8 दिशाएँ अगले उपलब्ध नोड्स के लिए निर्देशित होती हैं (वे एक टाइल से अगली पड़ोसी टाइल पर जाती हैं) । Starcraft 2 में परिणाम प्राप्त करने के लिए मुझे क्या करना चाहिए? टाइल के आकार को सिकोड़ें?

http://i.stack.imgur.com/lr19c.jpg

तस्वीर पर आप रॉक टाइलों की एक क्षैतिज रेखा को बाधाएं, और हरे रंग की टाइलों के रूप में चिह्नित पथ देख सकते हैं। लाल रेखा वह पथ है जिसे मैं प्राप्त करना चाहता हूं।


मैं जंप पॉइंट सर्च का बहुत बड़ा प्रशंसक हूं, हालांकि मुझे इसे लागू करने का समय नहीं मिला है। लेकिन प्रलेखन दिलचस्प था और एक अच्छा प्रदर्शन किया है।

2
क्या आप सुनिश्चित हैं कि आपका वांछित मार्ग है? इसका उपयोग करने वाली इकाइयाँ आंशिक रूप से दीवारों से होकर गुजरेंगी। मैंने इसे एक और उदाहरण में और अधिक दृश्यमान बनाया: i.imgur.com/eh4ZR.png और यहाँ आप वास्तव में क्या हासिल करना चाहते हैं: i.imgur.com/vFQg4.png
मार्कस वॉन ब्रॉडी

आप सही हैं। मेरा रास्ता त्रुटिपूर्ण था, लेकिन यह एक दृष्टांत उद्देश्य के लिए अधिक था। ध्यान देने के लिए बेहतर तरीके को इंगित करने के लिए धन्यवाद।
कूई नेम एनजी

आप जो चाहते हैं उसे पाने के लिए आपको एक टाइल के भीतर आंशिक निर्देशांक रखने होंगे। इसके बिना कोई भी संभव रास्ता काम नहीं करेगा - अंशों को ले जाना लेकिन उन्हें प्रदर्शित नहीं करना आपकी इकाई को सीधे / तिरछे / सीधे / तिरछे ले जाएगा।
लोरेन Pechtel

@LorenPechtel आप गलत हैं, आप एक खोजने के बाद पथ को सुचारू कर सकते हैं। यह काफी आसान है क्योंकि आप इकाई के आयामों के आधार पर दो लाइनें बनाते हैं, और जाँचते हैं कि क्या वे टाइल 0 और टाइलएन के बीच टाइलों के साथ अंतर करते हैं, जहां टाइल 1-टाइल (एन -1) ऐसी टाइलें हैं जिन्हें आप रास्ते से हटाना चाहते हैं।
मार्कस वॉन ब्रॉडी

जवाबों:


8

एक अच्छे पाथफाइंडिंग एल्गोरिथ्म के लिए, A * का उपयोग करना संभवतः एक अच्छा विचार होगा, हालांकि, एक सरल गेम के लिए, परिष्कृत, कुशल, और न ही प्रभावी पथ खोज की आवश्यकता नहीं है, बस वर्णों की दिशा का पता लगाकर लक्ष्य की ओर बढ़ते हैं लक्ष्य पर्याप्त होना चाहिए।

आप कर सकते हैं उत्पन्न 'दृश्यता ग्राफ' (क्या अन्य बिंदु प्रत्येक बिंदु से दिखाई दे रहे हैं) कोने से और फिर ग्राफ पर A * प्रदर्शन करते हैं। यह काम करता है क्योंकि सबसे छोटा रास्ता हमेशा दृश्यता ग्राफ पर रहेगा।

टाइल के आकार को सिकोड़ने से आपको मदद मिल सकती है।

साधन

आगे की पढाई

संपादित करें: मुझे @ MarkusvonBroady की टिप्पणी पसंद है।

"यह वास्तव में पथ चौरसाई के बारे में है, नहीं मिल रहा है। चित्र पर पाया गया पथ ठीक दिखता है।"

साधन

@MarkusvonBroady से

मैंने एक खोज की है, अनुसरण खोजें (वे आपकी सहायता कर सकते हैं)


1
महान लिंक, मेरी ओर से +1
lhk

2
@MarkusvonBroady, -1 के लिए धन्यवाद। मैंने आपसे सीखा है। मुझे बिंदु नहीं चाहिए, बल्कि मैं सही सीखने और साझा करने के लिए तैयार हूं। मेरा मानना ​​है कि चर्चा करने से हम सही खोज सकते हैं। :)
एमडी महबूबुर रहमान 14

@MarkusvonBroady, क्या आप कृपया मार्ग चौरसाई एल्गोरिथ्म के कई संसाधन साझा करेंगे?
एमडी महबूबुर्रहमान

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

मैं ए * का उपयोग कर रहा था और मुझे लगता है कि मुझे इष्टतम रास्ता मिल गया था।
कोवि नाम K एनजी

0

कच्चे रास्ते के एक छोर से शुरू, कहते हैं path[0], आप हटा सकते हैं path[1]अगर सेगमेंट के बिंदुओं को जोड़कर बनता है path[0]और path[2]किसी भी दीवार को नहीं काटता है। अंतिम खंड तक एक सरल मार्ग प्रदान करेगा।

यह न केवल पथ को सुचारू करेगा, बल्कि कुछ बेकार बिंदुओं को भी हटा देगा, जैसे अग्नि उदाहरण, एक सीधी रेखा के 3 लगातार खंड।

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