एक चिकनी फैशन में एक पथ का अनुसरण करना


9

मैं वर्तमान में एक स्थिर, पूर्व निर्धारित लेन के साथ 2d टॉवर रक्षा खेल बना रहा हूं जिसका दुश्मन पालन करते हैं (यानी टावर्स पथ को अवरुद्ध नहीं कर सकते हैं और पथ खोज समस्या नहीं है जिसे मैं हल करने की कोशिश कर रहा हूं)।

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

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

बेज़ियर कर्व्स: दूसरा उपाय जो मैंने माना है, वह है कि बेजियर कर्व के साथ पथ को परिभाषित करें और हर बार चरण में इकाई के वर्तमान स्थान से दूर (dt * गति) के साथ बिंदु की गणना करें। मुझे संदेह है कि इस तकनीक से उन पथों को ठीक से परिभाषित करना बहुत आसान हो जाएगा जो इकाइयों का पालन करेंगे, लेकिन मुझे नहीं पता कि इसे लागू करने के बारे में वास्तव में कैसे जाना है। कोई सुझाव?

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

यदि प्रश्न के बारे में कुछ भी स्पष्ट नहीं है, तो कृपया मुझे बताएं।

संपादित करें: इसके लायक जो भी हो, मैं किंगडम रश में दुश्मनों के आंदोलन व्यवहार को दोहराने की कोशिश कर रहा हूं ।


प्रासंगिक: Gamasutra.com/view/feature/131505/… टाइल्स के सापेक्ष इकाई घनत्व / आकार आप किस प्रकार का उपयोग कर रहे हैं?
बंदर

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

मैंने भी पाया। gamedev.stackexchange.com/questions/26543/… A * नॉन-ग्रिड मैप्स पर काम करता है। यह राज्य पर एक नोड पथ हो सकता है जो समान तरीके से घुमावदार हो जाता है।
बंदर

क्या ऐसा कुछ है जो दुश्मनों को रास्ता छोड़ने और उस पर वापस लौटने का कारण बन सकता है? मैं पूछता हूं कि आपका बेज़ियर-वक्र प्रस्ताव बताता है कि ऐसा नहीं है, जिस स्थिति में कोई कारण नहीं है कि आप पूरे पथ के बारे में मनमाना डेटा नहीं जुटा सकते हैं और "एआई" तर्क की आवश्यकता नहीं है।
केविन रीड

जवाबों:


8

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

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

रेनॉल्ड्स के पेपर का विचार यह है कि आप साधारण बलों का उपयोग कर सकते हैं जो पर्यावरण के चारों ओर जीवन-समान, कामचलाऊ नेविगेशन का उत्पादन करने के लिए गठबंधन करते हैं। आंदोलन पथ नियोजन या वैश्विक गणना पर आधारित नहीं हैं, बल्कि स्थानीय सूचनाओं, जैसे पड़ोसी बलों का उपयोग करते हैं, जो उन्हें समझने और लागू करने के लिए सरल बनाता है, लेकिन फिर भी बहुत जटिल आंदोलन पैटर्न पैदा करता है।

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

स्टीयरिंग व्यवहार का उपयोग करने का एक और लाभ यह है कि विभिन्न प्रकार की भाषाओं में कई मौजूदा ओपन सोर्स कार्यान्वयन हैं (जैसे, ओपनस्टियर )।


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


2

इस गामसूत्र लेख में समाधान वही हो सकता है जिसकी आपको तलाश है। मूल विचार यह है कि किरणों को एक वेपॉइंट पर डाला जाए जो आपके वर्तमान वेपॉइंट से दो कदम आगे है, किरण को सेल की लंबाई का एक अंश "कदम" और किरण की जाँच के प्रत्येक "स्टेपिंग" पर यह देखने के लिए कि क्या आपके खिलाड़ी की टक्कर की मात्रा किसी चीज से टकराती है? किरण की चरणबद्ध स्थिति पर। यदि किरण को वेपाइंट के सभी रास्ते मिलते हैं जो कि दो कदम आगे है, तो आप मध्यस्थ तरीके से छुटकारा पा सकते हैं। तब आप "गोल" करने के लिए सभी तरह से इसी प्रक्रिया को जारी रख सकते हैं ... इस प्रकार यदि आपका रास्ता एक सीधी रेखा से लक्ष्य तक पूरा किया जा सकता है तो लक्ष्य के लिए एक सीधी रेखा वह मार्ग है जो आपका चरित्र लेगा। यहाँ एक लेख है: http://www.gamasutra.com/view/feature/131505/toward_more_realistic_pathfinding।

यह भी बारी त्रिज्या और अधिक प्राकृतिक मोड़ व्यवहार और इस तरह के बारे में महान बातें शामिल हैं ...

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