हैक और स्लैश गेम में चरित्र आंदोलन के लिए एक अच्छी तकनीक की तलाश है


51

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


मेरी वर्तमान तकनीक:

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


टॉर्चलाइट स्क्रीनशॉट:यहाँ छवि विवरण दर्ज करें

---अपडेट करें---

मैं जानना चाहता हूं कि इन स्थितियों से कैसे निपटा जाए:

स्थिति 1, मेरे पास मेरे रास्ते पर गतिशील / स्थिर बाधाएं हैं

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

स्थिति 2, दुश्मनों के खिलाड़ी के लिए एक ही रास्ता है (हमारे साथ लड़ने के लिए कतार में हो) यहाँ छवि विवरण दर्ज करें


10
चित्र और स्क्रीनशॉट (और एक अच्छा सवाल) के लिए +1। हमेशा उपयोगी।
कम्युनिस्ट डक

यह एक भयानक प्रश्न (+1) है जिसके लिए मुझे उम्मीद है कि इस चुनौती से निपटने के विभिन्न तरीकों के बारे में बहुत चर्चा और सुझाव होंगे (मार्गों, एआई आदि को बदलने के लिए यादृच्छिक प्रभाव)।
Randolf Richardson

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

मैं अभी भी उत्तर की तलाश कर रहा हूं, मैं नौसेना जाल पर ऑब्स्टालिस (गतिशील / स्थिर) से कैसे निपट सकता हूं? , मैं
Recast

जवाबों:


24

एक नेविगेशन डेटा संरचना के साथ संयोजन में स्टीयरिंग व्यवहार

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

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

दूसरा तरीका जो आप नियोजित कर सकते हैं वह है पाथ स्मूथिंग लेकिन ध्यान रखें कि यह काफी कम्प्यूटेशनल रूप से महंगा है।

उम्मीद है की वो मदद करदे।

संपादित करें:

अपने बाधा से बचने के मुद्दों के साथ मदद करने के लिए, बाधा निवारण से कुछ प्रकार का उपयोग करें ।


उत्तर के लिए Thx, क्या आप जानते हैं कि मैं नेविगेशन जाल कैसे उत्पन्न कर सकता हूं? या इसे बनाने का कोई और तरीका है? मेरा नक्शा, फर्श (quads / त्रिकोण) के सहज टुकड़ों के साथ बनाया गया है।
पोट्ट्रेक

1
नेविगेशन जाल बनाने के लिए आप हमेशा Recast ( code.google.com/p/recastnavigation ) का उपयोग कर सकते हैं । आपको बस इसे एक "त्रिकोण सूप" (बहुभुजों का एक गुच्छा) देने की आवश्यकता है और यह आपके लिए उत्पन्न करेगा।
रे डे

क्या मैं केवल यही एक मुठभेड़ हूं, लेकिन लिंक: ai-blog.net/archives/000152.html मर चुका है। वास्तव में मैं
बजे

3

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

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

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


2

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

यहाँ संक्षिप्त व्यवहार का एक उदाहरण है: http://www.red3d.com/cwr/boids/

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


लेकिन, सीढ़ियों के साथ उदाहरण के लिए क्या? दुश्मन मुझ पर भी हमला कर सकते हैं, इसे एक और नौसेना जाल बना सकते हैं?
पॉटरेक

यह नौसेना जाल का हिस्सा होना चाहिए, अपने स्वयं के उत्तल आकार का होना चाहिए।
तेतराड

1
वैकल्पिक रूप से आप अपने पॉइंट टू पॉइंट पाथिंग का उपयोग जारी रख सकते हैं, और जब आप "पास" प्राप्त करते हैं, तो भौतिकी-आधारित स्टीयरिंग व्यवहार पर वापस गिर सकते हैं।
तेतराड

मैं नेविगेशन जाल पर गतिशील बाधाओं से कैसे निपट सकता हूं?
पोट्टरेक

1
यहाँ पर एक ब्लॉग पोस्ट है कि कैसे रिकैस्ट इसे संभालने पर काम कर रहा है: digestingduck.blogspot.com/2011/03/…
तेतरीद

1

वहाँ rrt नाम का एक एल्गोरिथ्म है जो realworld pathfinding समस्या के लिए उपयोग किया जाता है। आपके नायक (या शत्रु) जिस सतह पर चल सकते हैं वह एक इनपुट के साथ-साथ यह है कि वस्तुएं चल सकती हैं, और कुछ अनुकूलन एल्गोरिथ्म का उपयोग करके यह आपके गंतव्य के लिए एक रास्ता खोजता है। जितना मुझे पता है कि यह एल्गोरिथ्म रॉबॉकअप लीग में बहुत उपयोग किया जाता है। यह तेज है, सबसे छोटा रास्ता ढूंढता है और टक्कर और तेज मोड़ से बचता है। आप इस पावरपॉइंट शो का उपयोग कर सकते हैं कि यह कैसे मार्ग उत्पन्न करता है।


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

0

पाथफाइंडिंग मार्गों को और अधिक "यथार्थवादी" बनाने के लिए, मैं आपको सुझाव देता हूं कि प्राकृतिक-दिखने वाले ए * गेम के बारे में लेख देखें।

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