2d टाइल वाले खेल में एक इकाई के लिए संभावित चालें खोजना


10

मैं इसके लिए एक विशिष्ट खोज शब्द के साथ आने वाले मुद्दों पर चल रहा हूं, लेकिन एक 2 डी टर्न-आधारित रणनीति गेम (यानी एफएफ: रणनीति, अग्नि प्रतीक, अग्रिम युद्ध) में संभावित चालों को खोजने के बारे में कैसे जाना जाएगा।

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

मैं इस समय इलाके (या यहां तक ​​कि टक्कर) के बारे में बहुत सोच नहीं रहा हूं। मैं सोच रहा हूं कि मैं क्या एल्गोरिथ्म का उपयोग कर सकता हूं कि एक्स इकाई 5 टाइलों को स्थानांतरित कर सकती है और इससे 2 गुना अधिक टाइलों पर हमला कर सकती है।

मुझे पता है कि मैं दो बिंदुओं के बीच की दूरी का पता लगाने के लिए दिज्क्स्त्र जैसे कुछ का उपयोग कर सकता हूं। एक संभावित कार्यान्वयन खिलाड़ियों के स्थान पर शुरू हो रहा है और तब तक वहाँ से शाखाओं में बँट रहा है जब तक कि दिक्जस्त्र द्वारा लौटी दूरी चाल गिनती से अधिक नहीं है।

बस अगर कोई मुझे सही दिशा में इंगित कर सकता है (यानी एल्गोरिदम, तकनीक, लेख, आदि का नाम)।


मैं सोच रहा हूं कि इसे खोज शब्द के लिए पथ खोज कहा जाता है? यदि आप पाथ फाइंडिंग का उपयोग करते हैं, तो आपके पास जो आवश्यक हो उसे संभालने के लिए काउंटर हो सकते हैं
एक्सिकल

यह अनिवार्य रूप से पथ खोज (आंदोलन की लागत के लिए मेटा डेटा की गणना) का हिस्सा है। आप केवल उन स्थानों को निर्धारित करते हैं जो सीमा के भीतर हैं, लेकिन जरूरी नहीं कि आप वह मार्ग भी निर्धारित करें जो आप भी लेंगे।
मारियो

1
यह वास्तविक समय (आरटीएस) नहीं है यदि यह एफ-ला एफएक्टैक्टिक्स आधारित है। : पी
अलैरिक

2d में, आप टैक्सीका / मैनहट्टन गणना का उपयोग कर सकते हैं en.wikipedia.org/wiki/Taxicab_geometry
गेरबेन जैकब्स

जवाबों:


5

मुझे लगता है कि एक बँधा हुआ दिज्क्स्त्र ठीक वही है जो आप उपयोग करना चाहते हैं। जिस तरह से दिक्जस्त्र दो बिंदुओं के बीच की दूरी को पाता है वह मूल नोड से प्रत्येक नोड की दूरी को मैप करता है, और फिर इस दूरी के नक्शे से सबसे छोटा रास्ता चुनता है। आप वस्तुतः एक ही काम करना चाहते हैं, सिवाय इसके कि आप किसी विशेष बिंदु के लिए पथ के बजाय दूरी नोड ग्राफ को आउटपुट के रूप में बनाते हैं।

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

वियोला।

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


मुझे लगता है कि इस मामले में डीजकस्ट्रा ओवरकिल है। ओपी को सभी संभावित आंदोलन स्थलों के लिए एक पथ की आवश्यकता नहीं है, बस एक हां / नहीं का जवाब है कि क्या कोई एजेंट वहां पहुंच सकता है। उपयोगकर्ता द्वारा किसी एक को चुनने के बाद वह बाद में पथ की गणना कर सकता है।
माइकल क्रिस्टोफिक

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

1
मारियो के जवाब को देखने पर, वह वास्तव में डिक्स्ट्रा के एल्गोरिथ्म का वर्णन करता है, सिवाय इसके कि वह दूरी को नापसंद करता है, और यह उल्लेख नहीं करता है कि यह डिक्जस्ट्रा है।
TASagent

1
यह नहीं कहेंगे कि यह दिज्क्स्त्र है, क्योंकि आप वास्तव में सबसे छोटे मार्ग की तलाश नहीं कर रहे हैं और न ही आप किसी विशिष्ट बिंदु तक पहुंचने की कोशिश कर रहे हैं। यह अनिवार्य रूप से दिज्क्स्ट्रा के एल्गोरिथ्म का पहला हिस्सा है, हालांकि यह सच है। दिज्क्स्ट्रा का उपयोग करते हुए आपके शब्दों के साथ समस्या, भ्रामक हो सकती है और मुझे लगता है कि यह भी माइकल उलझन में है। उन्होंने शायद सोचा कि आपने प्रत्येक क्षेत्र / प्रकोष्ठ के लिए एक बार दिज्क्स्त्र का उपयोग करने का सुझाव दिया है।
मारियो

1
इस दृष्टिकोण का उपयोग करके समाप्त करना क्योंकि यह अच्छी तरह से काम करता है और बाधाओं को संभालने के लिए विस्तार करना बहुत आसान है।
एनआरएएफ

12

सबसे सरल (और शायद सबसे भोली) दृष्टिकोण मैं अभी सोच सकता हूं:

  • अपने चरित्र पर शुरू करें और आसपास के सभी क्षेत्रों को चिह्नित करें steps - 1
  • दोहराएं भर में नव चिह्नित क्षेत्रों और एक बार फिर से के रूप में उनके आसपास के क्षेत्रों को चिह्नित steps - 1जहां stepsजब तक नए क्षेत्र एक पहले से ही अधिक संख्या में है, वर्तमान क्षेत्र के कदम संख्या होगी।
  • जब तक आप चरणों से बाहर नहीं निकलते हैं, तब तक अंतिम चरण दोहराएं।

1
इस एल्गोरिथ्म का एक नाम है: फ्लड फिल
माइकल क्रिस्टोफिक

6
@ मिचेलक्रिस्टोफ़िक: मैं इसे चौड़ाई की पहली खोज कहूंगा । बाढ़ भराव दूरियों का ट्रैक नहीं रखता है।
ब्लूराजा - डैनी पफ्लुगुफ्ट

2

मुझे लगता है कि आप जिस चीज की तलाश कर रहे हैं वह मैनहट्टन दूरी हो सकती है । कोई बाधा नहीं मानते हुए, आप कह सकते हैं कि एक वर्ग बस में उपलब्ध है:

| Tox-fromX | + = toY-fromY | <maxMoveDistance

यदि आप बाद में बाधाएं डालने जा रहे हैं तो यह एल्गोरिथ्म सही दिशा नहीं हो सकता है; इसे अनुकूलित करने का एक संभावित तरीका बाधाओं को 'छाया' और निकटतम बिंदु से पुनर्मूल्यांकन करना शामिल हो सकता है।

EDIT (क्योंकि मेरे पास अभी थोड़ा और समय है):

'छाया' से मेरा तात्पर्य कुछ इस तरह है, यदि 0 एक प्राप्य वर्ग है, C वर्ण है, और X एक बाधा है:

 012345678
0    0
1   00
2  000X
3 000C000
4  00000
5   000
6    0
 012345678

चूंकि (5, 2) एक बाधा है, आप यह मानकर शुरू करते हैं कि आप x> = 5 और y <= 2 के साथ कुछ भी प्राप्त नहीं कर सकते। फिर आप दूसरे वर्ग से पुनर्गणना कर सकते हैं; यदि आप (5, 1) में जाना चाहते हैं, तो आप मैनहट्टन की दूरी (4, 1) से गणना कर सकते हैं और यह देख सकते हैं कि चरित्र से (4, 1) की दूरी खिलाड़ी की गति से कम है।

यह एक काफी तुच्छ उदाहरण है, लेकिन यदि आपके पास कई बाधाएं और / या थोड़ी लंबी आंदोलन सीमा है, तो यह जटिलता को संभालने में सक्षम होना चाहिए।

क्या यह वास्तव में बाढ़-भरने से बेहतर होगा, या तो प्रोग्रामिंग जटिलता या निष्पादन दक्षता में, मेरे पास कोई सुराग नहीं है। बस समस्या को हल करने का एक और दिलचस्प तरीका लग रहा था।


छाया डालने से क्या मतलब है?
एनआरएएफ

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