एआई बनाने से एक-दूसरे के लिए अलग-अलग रास्ते बनते हैं


16

मेरे पास शीर्ष 2d गेम है जहां AI नक्शे के किनारों पर घूमता है और केंद्र की ओर चलता है।

मैं पाथफाइंडिंग करने के लिए A * और नोड मेष का उपयोग कर रहा हूं।

अभी, AI मानचित्र के किनारे पर एक बिंदु पर स्थित है और सभी उसी रास्ते को लेते हैं जो केंद्र का सबसे छोटा मार्ग है।

अब मैं चाहता हूं कि वे और अधिक आश्चर्यजनक और दिलचस्प हों और एक-दूसरे के लिए अलग-अलग रास्ते अपनाएं।

मैं ऐसा करने के लिए तुरंत दो विचारों के बारे में सोच सकता हूं, लेकिन जानना चाहता हूं कि क्या अन्य तरीके या बेहतर तरीके हैं जो लोग अक्सर उपयोग करते हैं?

  1. जब कोई शत्रु पैदा होता है और केंद्र के लिए एक मार्ग उत्पन्न करता है, तो अस्थायी रूप से उस मार्ग पर सभी नोड्स की लागत में वृद्धि होती है, फिर समय के साथ धीरे-धीरे उन्हें वापस कम कर देता है। फिर दुश्मन एआई जो बाद में स्पॉन होगा, एक व्यापक पथ लेने के लिए मजबूर हो जाएगा।

  2. उपरोक्त दृष्टिकोण एआई को आगे ले जाएगा बस एक व्यापक और व्यापक पथ ले सकता है हालांकि और अभी भी बहुत पूर्वानुमान है। इसलिए मैंने सोचा कि मैं मानचित्र के आसपास कई मध्यवर्ती लक्ष्य नोड्स भी पेश करूंगा। जब एआई स्पॉन वे बेतरतीब ढंग से मध्यवर्ती लक्ष्यों में से एक को उठाते हैं और नक्शे के केंद्र पर जाने से पहले पहले वहां पहुंचते हैं। लागत में वृद्धि के उपरोक्त दृष्टिकोण के साथ इसे जोड़कर बहुत अच्छा लग सकता है?

लोगों ने एआई को प्राप्त करने के लिए सबसे अच्छे तरीके से काम किया है जो उनके द्वारा उठाए गए रास्तों को अलग-अलग करते हैं, आश्वस्त और आश्चर्यजनक लगते हैं?

जवाबों:


7

आपका दूसरा विकल्प अधिक मौलिक दृष्टिकोण पर संकेत देता है: यह सुनिश्चित करना कि दुश्मन आपके खिलाड़ी से अलग-अलग दिशाओं में संपर्क करें। सवाल यह है कि आपके खिलाड़ी को "चारों ओर" पाने के लिए उन्हें कितनी दूर यात्रा करनी है? इस के लिए आदर्श का एक मिश्रण होगा

  • गतिशील रूप से उत्पन्न होने वाले बिंदु जो खिलाड़ी की स्थिति को बारीकी से घेरते हैं (अर्थात अनुसरण करते हैं);
  • नेवरमाइंड ने इन आसपास के बिंदुओं को बेतरतीब करने वाले रास्तों के संदर्भ में अधिक या कम डिग्री के लिए सुझाव दिया है।

इस तरह, आप यह सुनिश्चित कर सकते हैं कि एआई खिलाड़ी पर रूपांतरण करते समय यथार्थवादी पथ भिन्नता प्राप्त करने के लिए पर्याप्त रूप से लंबा चक्कर नहीं लगाएगा।

सहयोगात्मक प्रसार वह करता है जो आप एल्गोरिथ्म के भाग के रूप में करना चाहते हैं। लेकिन इसे लागू करना गैर-तुच्छ है।


सहयोगात्मक प्रसार सिर्फ कुछ भार के साथ बाढ़ से भरा है। यह लागू करने के लिए तुच्छ है, शायद ए * की तुलना में आसान है। इसके लिए बस आपकी दुनिया के एक अलग दृष्टिकोण की आवश्यकता है - एक गैर-तुच्छ वैचारिक बदलाव, शायद, लेकिन कोई कार्यान्वयन समस्या नहीं।

AI संस्थाओं के प्रबंधन के मामले में यह एक गैर-मानक दृष्टिकोण के रूप में लागू करने के लिए अभी भी गैर-तुच्छ है:
इंजीनियर

धन्यवाद निक। मुझे लगता है कि नक्शे के केंद्र में खिलाड़ी को घेरने वाले कुछ तरीके तय करना मुख्य रास्ता है। इस स्तर पर निश्चित नहीं है कि वे गतिशील रूप से उत्पन्न होंगे या मेरी विशेष स्थिति के लिए प्रत्येक स्तर के लिए कुछ हाथ क्राफ्टिंग शामिल होंगे। एक बार फिर धन्यवाद!
टेरीबी

12

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


दुश्मन मुर्गियों की तरह चलेंगे और ठीक-ठाक माहौल में, रास्ते वैसे भी अलग नहीं होंगे। यह अन्य समाधानों के लिए एक अच्छा जोड़ है, लेकिन अपने आप में एक समाधान नहीं है
कोयोट

@ कोयोट यह नव-जाल संरचना, और नोड वज़न, गति और यादृच्छिक घटक के बीच संबंधों पर बहुत कुछ निर्भर करता है। इसलिए मैंने उत्तर को एक निश्चित उत्तर के रूप में नहीं, बल्कि एक सुझाव के रूप में प्रस्तुत किया।
नहीं

दरअसल :) मैं आमतौर पर एन्ट्रापी का प्रशंसक हूं। लेकिन अंतिम परिणाम शायद ही कभी महान हो।
कोयोट

मेरा मानना ​​है कि निक विग्गिल का जवाब मेरी तुलना में बेहतर है। लेकिन किसी भी तरह यह upvotes नहीं मिल रहा है इसके हकदार हैं।
बात नहीं

यह है ... लेकिन तुम्हारा पहला और सरल है ... हम इसे वोट करने की कोशिश कर सकते हैं: पी
कोयोट

3

मैं नेवरमाइंड के उत्तर को पसंद करता हूं , हालांकि, टिप्पणियों में वर्णित सीमा को देखते हुए यह वह है जो मैं कोशिश करूंगा:

  1. केंद्र के लिए एक एकल इकाई के लिए एल्गोरिथ्म, कुल दूरी की यात्रा रिकॉर्ड करता है।
  2. प्रत्येक बाद की इकाई के लिए इसे एक ऐसी दूरी आवंटित करें जो इससे कहीं अधिक लंबी और छोटी राशि हो।
  3. प्रत्येक इकाई के लिए ए * करते समय अतिरिक्त वजन जोड़ें कि आप कितने करीब हैं और आप यात्रा करना चाहते हैं। यह शायद कुछ ऐसा होगा (distanceToGoal) + Max(0, desiredDistance - distanceTravelled))

इससे इकाइयाँ आगे जाने का प्रयास करती हैं, जो कि शायद एक अलग रास्ता है, जिसके परिणामस्वरूप संभवतः अलग रास्ते लेने होंगे।

आप इसे प्रत्येक इकाई के लिए अपने शुरुआती huerestic में भी जोड़ सकते हैं, लेकिन यादृच्छिक रेंज शायद थोड़ा बड़ा होना होगा।


2

जैसा कि निक विग्गिल ने बताया कि सबसे सरल दृष्टिकोण उद्देश्य के आसपास एक चक्र प्राप्त करना होगा।

  • बेतरतीब ढंग से इस बिंदु के करीब एक बिंदु को एक तरह से असाइन करें।
  • प्रारंभिक पथ से सर्कल में सभी पथों को समाप्त करें (या नाटकीय रूप से इन बिंदुओं के मूल्य में वृद्धि करें)
  • फिर उस तरीके से उद्देश्य के लिए रास्ता मिलता है।

महत्वपूर्ण हिस्सा मूल रास्ते के लिए सर्कल में सभी रास्तों को खत्म करना है क्योंकि आप संभवतः अपने शुरुआती रास्ते में जाने के लिए सर्कल को पार करने वाले दुश्मनों के साथ समाप्त हो जाएंगे।

उस से आप प्रारंभिक एक के करीब सर्कल में माध्यमिक वेपॉइंट जोड़कर कई मूल्यों के साथ खेलकर कोई भी संस्करण प्राप्त कर सकते हैं।


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

धन्यवाद कोयोट, हाँ, मैं शायद Nicks समाधान के साथ जाने वाला हूं और जैसा कि DampeS8N ने सुझाव दिया है कि वेपाइंट्स के रूप में ब्याज के कुछ प्रमुख स्थान। एआई की समस्या से बचने के लिए "सर्कल को पार करना" मैं बस सर्कल में नोड्स की लागत में बहुत वृद्धि करने जा रहा हूं, इसलिए ए * को इसके आस-पास के मार्ग की उम्मीद करनी चाहिए :)
टेरीबी

2

यहाँ आपकी समस्या अनिवार्य रूप से यह है कि A * लक्ष्य के लिए सबसे तेज़ मार्ग खोजने के लिए एक एल्गोरिथ्म है। यदि वह एक 'अच्छे' मार्ग के लिए आपका प्राथमिक मानदंड है, तो यह आश्चर्यजनक है कि आपके सभी कलाकार समान निर्णय लेते हैं।

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

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

मैं शायद इसे देखने का एक सरल तरीका सुझाऊँगा। जब आप पाथफाइंग कर रहे हों, तो केवल एक सर्वोत्तम पथ-मैं-मैं-पाया-अभी तक बनाए न रखें। इसके बजाय, सबसे अच्छा 5 या 10 रास्तों का एक सेट इकट्ठा करें। स्पष्ट आउटलेर्स को त्यागने के लिए एक सीमा का उपयोग करें। उदाहरण के लिए, यदि सबसे अच्छा पथ 20u को लक्ष्य तक ले जाने के लिए जाता है, तो अगला सबसे अच्छा ट्रैवर्स 21u, और उसके बाद का अगला ट्रैवर्स 50u है। सर्वश्रेष्ठ पथ से 20% बड़ा सेट करें, और इसलिए 50u पथ को त्यागें क्योंकि यह बहुत लंबा है। अब आपके पास चुनने के लिए कई रास्ते हैं, और बेतरतीब ढंग से पथों के उस सेट से चयन करके, आपके अभिनेता अलग-अलग निर्णय लेंगे।

हालाँकि आपको मानक A * खोज के साथ इस तरह की जानकारी नहीं मिलेगी, इसलिए मुझे लगता है कि आपको एल्गोरिथ्म को संशोधित करना होगा या संभव रास्तों के सेट को इकट्ठा करने के लिए कुछ और उपयोग करना होगा।


1

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

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