नेटवर्क स्मूथिंग को लागू करना


13

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

जैसा कि अपेक्षित था, 60fps के खेल के बाद से आंदोलन बहुत ही तड़का हुआ है, केवल 10 बार एक सेकंड में अपडेट की जा रही है। इस आंदोलन को सुचारू करने का सबसे अच्छा तरीका क्या है? सबसे स्पष्ट तरीका अंतिम दो पैकेटों के बीच अंतर करना होगा, ताकि एक नया पैकेट प्राप्त करते ही प्रक्षेप खत्म हो जाए। लेकिन यह सभी खिलाड़ियों के लिए तत्काल 100ms देरी जोड़ता है।

दूसरा तरीका यह होगा कि अगले पैकेट के आने से पहले खिलाड़ी भविष्यवाणी करने के लिए पिछले कुछ पैकेटों से निकले वेग और त्वरण का उपयोग करे, लेकिन अगर भविष्यवाणी गलत है, तो खिलाड़ी जैसे ही कूदता है, एक नया पैकेट प्राप्त हो जाता है ।

क्या कोई जानता है कि एएए शीर्षक इस समस्या को कैसे हल करते हैं?

जवाबों:


9

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

यह अक्सर पूछे जाने वाला प्रश्न है और कई विहित लिंक हैं जो आपको संभवतः gamedev.stackexchange.com पर कहीं और मिलेंगे यदि आप खोज करते हैं, और उनमें निम्नलिखित शामिल हैं:

प्रत्येक प्रोग्रामर को गेम नेटवर्किंग के बारे में जानने की आवश्यकता है (यह अगले दो लिंक में सामान को सारांशित करता है)

स्रोत मल्टीप्लेयर नेटवर्किंग

अवास्तविक नेटवर्किंग वास्तुकला

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