आरटीएस गेम में पाथफाइंडिंग कैसे काम करती है?


42

[स्टैकओवरफ़्लो से क्रॉसपोस्टेड]

विक्टर 3 या एज ऑफ एम्पायर्स जैसे गेम में, एआई प्रतिद्वंद्वी जिस तरह से नक्शे के बारे में आगे बढ़ सकता है वह लगभग असीम लगता है। नक्शे विशाल हैं और अन्य खिलाड़ियों की स्थिति लगातार बदल रही है।

इन कार्यों जैसे खेलों में AI पथ-खोज कैसे होती है? मानक ग्राफ़-खोज विधियाँ (जैसे DFS, BFS या A *) इस तरह के सेटअप में असंभव लगती हैं।


2
इस ग्राफ में A * काम क्यों नहीं करेगा?
user712092

संबंधित ब्लॉग: ai-blog.net/archives/000152.html
टेनफॉर

1
@tenfour, लिंक अब टूट गया है।
मॉन्ट्रियल

जवाबों:


29

ज्यादातर मामलों में, नेविगेशन जाल पर ए * का उपयोग करना (आमतौर पर "नौमेश" के रूप में जाना जाता है) पैथफाइंडिंग समाधान वाणिज्यिक आरटीएस का उपयोग होता है। नवमेश कैसे काम करते हैं, इसका विस्तृत विवरण है कि वे वेपॉइंट सिस्टम की तुलना में बेहतर समाधान क्यों हैं, और कार्यान्वयन संसाधनों के लिंक, यहां दिए गए हैं

यदि आप विशेष गेम मोड (प्वाइंट / नोड कैप्चर) या गश्त, कवर आदि लेने वाली इकाइयों को विकसित करने की योजना बना रहे हैं, तो आप शायद एआई व्यवहार ( पाथफाइंडिंग ) को नियंत्रित करने के लिए अपने नवमेश के ऊपर एक वेपॉइंट परत लागू करना चाहेंगे ।


17

सुप्रीम कमांडर में उपयोग किए गए फ़्लोफ़ील्ड एल्गोरिथ्म की जांच करें । यह अधिकांश आरटीएस पाथफाइंडिंग सिस्टम की तुलना में बहुत बेहतर काम करता है (कुछ उदाहरणों के लिए 0:50 पर छोड़ दें।)


4
यह एक बहुत अच्छा डेमो है, लेकिन मुझे इसके कार्यान्वयन के बारे में कुछ भी नहीं बताता है
मेटा 14

4
उन्होंने एक वाक्य में उल्लेख किया - यह यूडब्ल्यू के भीड़ प्रवाह अनुसंधान पर आधारित है, जिसे आप grail.cs.washington.edu/projects/crowd-flows पर देख सकते हैं ।

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

2
@ क्रैगन: आपको वास्तव में प्लेन ए * से पहले केवल दो इकाइयों की आवश्यकता होती है (विशेष रूप से वेपाइंटेड) जिसके कारण वे एक-दूसरे से टकराते हैं, और आपको इसके चारों ओर काम करने के लिए किसी प्रकार की प्रणाली की आवश्यकता होती है।

5
वीडियो के आधार पर, Starcraft 2 का पाथफाइंडिंग इस तरह दिखता है। SC2 प्रवाह क्षेत्र का उपयोग करता है?
क्रिस बुई

7

कई पुराने खेल A * का उपयोग करते हैं। मूल Starcraft ए * का इस्तेमाल किया; जिसके कारण टकराव से निपटने में कुछ समस्याओं का सामना करना पड़ा। बड़े समूहों के द्रव नियंत्रण को बनाए रखने के लिए स्वमिंग / प्लॉकिंग व्यवहार का उपयोग करते हुए, स्टारक्राफ्ट 2 के हैंडल बहुत अच्छी तरह से टकराते हैं। यह gamedev आलेख चर्चा करता है कि यह कैसे प्राप्त किया जा सकता है।


2

मैं उसके दूसरे उत्तर पर पहले से ही सहमत हूं, लेकिन यह भी, वाह / Warcraft3 को वास्तविक 2 डी दुनिया के रूप में सोचने की कोशिश करें। वे कहते हैं कि टाइलबेड से अलग, इसकी सिर्फ टाइलें।

आप यह भी सोच सकते हैं कि एक जीपीएस सबसे अच्छा रास्ता कैसे खोजता है? लिंक्ड मैप्स के माध्यम से पाथफाइंडिंग के लिए अल्गॉर्टिमन्स का भार है।

मुझे लगता है कि पहले "क्वेक बॉट्स" स्क्रिप्ट में से कुछ भी आपकी मदद कर सकते हैं, क्योंकि उन्हें "अज्ञात क्षेत्रों" में काम करने के लिए विकसित किया गया था क्योंकि हम अपने स्वयं के स्तर को खरोंच से डिजाइन कर सकते थे।

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

खेल के प्रकार और परिदृश्य / परिदृश्य के आधार पर, विभिन्न प्री-स्कैन रणनीति उपयोगी हो सकती हैं। कुछ खेलों में बहुत कम ऑब्स्ट्रेकल्स होते हैं और ये "स्ट्रेइट लाइन" मूवमेंट + कुछ "मैं कैसे प्राप्त करूं" वस्तुओं के लिए हो सकता है।

आशा है कि यह थोड़ा समझ में आता है और शायद आपने कुछ विचार दिए हैं।


1

अधिकांश गेम मैप पर पथ खोजने के लिए कुछ प्रकार की खोज एल्गोरिदम या ए * का उपयोग करते हैं। प्रदर्शन कारणों से स्पष्ट रूप से AI को कुछ पहलुओं में बदल दिया गया है।

आप इसे Starcraft 2 में देखेंगे जहां Zerglings स्पष्ट रूप से अच्छी तरह से रास्ता नहीं बनाते हैं, यह Zerglings के लिए ऐसा करने के लिए CPU दुःस्वप्न होगा। वे बस ए से बी तक पहुंचने के लिए सबसे अच्छा करते हैं और सबसे अच्छा रास्ता खोजने का प्रयास भी नहीं करते हैं। वे संभव के रूप में करीब मिल जाएगा तो चोक या रैंप पर गर्दन की बोतल।


1

नक्शा एक ग्रिड है। ग्रिड एक ग्राफ है। A * ग्राफ पर काम करता है, यह एक ग्राफ है जो एल्गोरिथ्म को खोज रहा है। A * को ग्राफ के कुछ नोड्स की खोज करनी चाहिए।

जैसा कि उल्लेख किया गया है कि वे नेविगेशन जाल का उपयोग कर सकते हैं। लेकिन ए * (या ऐसा ही कुछ) वैसे भी उस जाल के ऊपर होगा, क्योंकि इस जाल के बहुभुज सिर्फ एक ग्राफ के नोड होते हैं; A * फिर एक बहुभुज से दूसरे बहुभुज तक के मार्ग की खोज करेगा।

Warcraft या व्यावसायिक खेलों के बारे में निश्चित नहीं है, लेकिन वहाँ भी तकनीक है जिसे सहयोगात्मक प्रसार कहा जाता है और यह बहुत सरल है; यह आमतौर पर ग्रिड पर किया जाता है। पोटेंशियल फील्ड्स नामक तकनीक भी है , जो पिछले एक के समान है यदि नहीं तो।

आप भी कोशिश कर सकते हैं:

  • क्या इनमें से कुछ गेम में सोर्स कोड उपलब्ध है
  • इन खेलों के कुछ क्लोन उपलब्ध स्रोत हैं या नहीं
  • क्या SDK या संपादक कुछ संकेत नहीं करते हैं
  • इन खेलों को बनाने वाली कंपनियों के नियोक्ताओं से पूछें, उनमें से कुछ साझा करने के लिए तैयार हो सकते हैं

0

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

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

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


मम मुझे आश्चर्य है कि मैंने जो कहा उसमें क्या गलत था ... क्या टिप्पणी करना मुश्किल था?
अकीरासॉ

BTW, मैं इस बात पर प्रकाश डालना चाहूंगा कि A * heuristic approach का उपयोग करता है। -2 के लिए धन्यवाद।
अकिरोस

आपका उत्तर "Ditch A * और उसके ilk पर है और अपना खुद का रोल"। यह एक उचित जवाब की शुरुआत हो सकती है लेकिन आप सुझाव के अलावा बहुत कम जानकारी प्रदान करते हैं। ऐसा लगता है कि डाउन वोटिंग का कारण यह है कि आप यह स्पष्ट नहीं करते हैं कि आपके समाधान को लागू करना कितना मुश्किल होगा। मुझे संदेह नहीं है कि असीमित समय दिया गया एक सुपर जीनियस किसी दिए गए आरटीएस के लिए एक पाथिंग एल्गोरिदम को कोड / ट्यून कर सकता है जो एक नवमेश पर A * से बेहतर होगा। लेकिन "प्रतिभाशाली" और "असीमित" बहुत मुश्किल से आते हैं।
deft_code

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