क्या एक ही जगह पर खड़े दुश्मनों को रोकने का एक सरल तरीका है?


24

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

इसके आसपास एक सरल तरीका क्या है? या तो टक्कर का पता लगाने के कुछ फार्म या कुछ ai?


1
अपने आप को एक दुश्मन तक सीमित रखें। : पी
काइलोटन

जवाबों:


18

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

कुछ सरल व्यवहार के लिए "झुंड" देखें।

मूल विचार यह है कि चीजें खिलाड़ी की ओर होनी चाहिए, लेकिन एक करीबी बाधा से दूर (एक दूसरे, दीवारें, उस तरह की चीज)।


6
इसे बॉयलर भी कहा जाता है। Boids के आसपास के सरल नियमों के बारे में यहाँ पढ़ें: en.wikipedia.org/wiki/Boids इन प्रतिबंधों को लागू करने के लिए तुच्छ होना चाहिए।
नेलर

12

आप खुद को फ्लोइंग बिहेवियर पर प्रेरित कर सकते हैं , जैसे कि Boids

ये 3-4 बहुत ही सरल नियमों पर आधारित होते हैं, जो सही तरीके से लागू होते हैं, बहुत संतोषजनक और "जटिल-दिखने वाले" व्यवहार के परिणामस्वरूप होते हैं।

आपके मामले में, आप कुछ इस तरह की कोशिश कर सकते हैं:

  • पृथक्करण (शत्रुओं के बीच न्यूनतम रेडी)
  • सामंजस्य (इसलिए वे समूहों में यात्रा करते हैं)
  • संरेखण (इसलिए वे उसी दिशा में आगे बढ़ते हैं)
  • लक्षित (उन्हें खिलाड़ी की ओर बढ़ना चाहिए)

यह लगभग जेसन के जवाब की एक शब्दशः प्रतिलिपि है। मैं कसम खाता हूं कि मैंने पोस्ट करने से पहले इसे नहीं देखा।
एगारिया

4

जो आप सामान्य रूप से पूछ रहे हैं वह अभिनेताओं के बीच गतिशील परिहार है। आप वेग बाधाओं पर एक नज़र डाल सकते हैं: http://gamma.cs.unc.edu/RVO/


3

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


पूर्ण प्रकटीकरण: मुझे यकीन है कि मुझे जीडी पर कहीं न कहीं सहयोगी प्रसार लिंक मिला था, लेकिन मैं अपने जीवन के लिए उस पद को नहीं खोज सकता जो अब इसे संदर्भित करता है। काफी ढूंढा था। =)
लिएंडर

यह सुपर कमाल है लेकिन मुझे जरूरत से ज्यादा जटिलता है। वैसे भी व्हाइटपेपर पढ़ेंगे लेकिन सरल समाधान को लागू करने में कामयाब रहे।
इयान

2

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


2

क्रेग रेनॉल्ड की वेबसाइट पर स्टीयरिंग और प्लॉकिंग व्यवहार के लिए कुछ संदर्भ है । वे लागू करने के लिए अपेक्षाकृत सरल हैं, लेकिन कुछ प्यारे आकस्मिक व्यवहार पैदा कर सकते हैं।


यह अनिवार्य रूप से अन्य 2 के समान ही उत्तर है, लेकिन लिंक के लिए +1 - यह वेबसाइट वास्तव में अच्छा संदर्भ है।
एएसएचली

1

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

यहाँ एक छोटा सा खेल है, जिसे मैंने कई साल पहले बनाया था जो इस विधि को प्रदर्शित करता है: http://deleter.phatcode.net/index.php?page=projects&p=4


1

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

उदाहरण के लिए, एक डेमो के लिए, जिसे मैंने यूनिटी में बनाया था, मैंने इसकी कमांड का उपयोग किया था। randomide.insideUnitSphere प्लॉक पफबॉल करने के लिए


+1 मैं मानता हूँ, इस रणनीति का एक और उदाहरण (ओवरलैपिंग नहीं की शायद थोड़ा बेहतर गारंटी के साथ) पाया जा सकता है यहां: RTS खेल में "को व्यवस्थित करें" इकाइयों
MichaelHouse

0

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

नवमेशजेंट की त्रिज्या

GameDevAnswer को धन्यवाद

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