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