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