बड़ी नेटवर्क वाली दुनिया में इकाई पथ-खोज और आंदोलन को कैसे संभालना है?


12

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

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

धन्यवाद!

जवाबों:


9

एक सरल शुरुआत के लिए आप स्टीयरिंग व्यवहार को लागू कर सकते हैं । विशेष रूप से व्यवहार की तलाश करेंयहाँ छवि विवरण दर्ज करें

पात्रों की तलाश के अलावा बाधाओं से दूर जाने के लिए परिहार का उपयोग करना चाहिए ।

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

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

एक बार दुश्मन "पर्याप्त रूप से बंद हो जाता है" आप पूरी तरह से स्टीयरिंग व्यवहार पर स्विच कर सकते हैं। चूंकि वे पथ खोजने की तुलना में कम महंगे हैं, और आपको ऐसे परिणाम मिलेंगे जो करीब सीमा पर अच्छे हैं।

स्टीयरिंग आपको अधिकतम गति और दुश्मनों के लिए अधिकतम गति को परिभाषित करने की अनुमति देगा।

स्टीयरिंग क्लाइंट पर समय-समय पर अद्यतन के साथ सर्वर से प्रबंधित किया जा सकता है ताकि यह सुनिश्चित हो सके कि वे अभी भी ट्रैक पर हैं।


क्या इसका मतलब सर्वर पर स्टीयरिंग व्यवहार का अनुकरण करना होगा या क्या मैं तार्किक रूप से पथ के साथ इकाई को 'स्नैप' कर सकता हूं? मुझे बहुत अधिक प्रिस्क्रिशन की आवश्यकता नहीं है।
वॉनहल्ट हिल्ट्स

अकेले स्टीयरिंग को नकली बनाना होगा (हालांकि यह बहुत भारी नहीं है)। हालांकि, सिमुलेशन के बिना वेपाइंट की ओर स्टीयरिंग को अपडेट किया जा सकता है। बस सुनिश्चित करें कि क्लाइंट "करंट" वेपॉइंट की सीमा के भीतर है और इसके "नेक्स्ट" के रूप में सही वेपॉइंट की ओर स्टीयरिंग है। यदि इकाई बंद थी और अचानक अपडेट हुई तो इसमें कुछ तड़क-भड़क शामिल होगी।
MichaelHouse

महान उत्तर के लिए +1। मेरे कई घंटे बचाने के लिए धन्यवाद।
Md महबूबुर रहमान

1

मैं सफलतापूर्वक क्लाइंट को यह नहीं बता सकता कि राक्षस उस स्थिति में जाना चाहता है, जो वह है / है, क्योंकि इससे इकाई को बहुत तेज़ी से आगे बढ़ना होगा, यह (संभवत: प्रक्षेप सह के लिए कुछ गणित का उपयोग करके हल किया जा सकता है) -efficent)

वास्तव में ऐसा करना सरल है। आंदोलन की दिशा वर्तमान स्थिति को घटाकर लक्ष्य की स्थिति होगी। तुम सब करने की ज़रूरत है कि आप वास्तव में चाहते हैं आंदोलन की गति के लिए नीचे वेक्टर है। हर फ्रेम को दोहराएं।

लेकिन इससे भी महत्वपूर्ण बात यह है कि यह यथार्थवादी नहीं दिखता है और दीवारों को क्लिप कर सकता है! मैं सर्वर पर पूरे आंदोलन का अनुकरण नहीं करना चाहता अगर इसे टाला जा सकता है ...

आपको सर्वर पर आंदोलन को अनुकरण करने की आवश्यकता है। आपको और कैसे पता चलेगा कि सभी खिलाड़ी समान व्यवहार देख रहे हैं?

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

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