मेरे पास एक सर्वर/क्लाइंट आर्किटेक्चर लागू है, जहां सभी राज्य परिवर्तन फ़ंक्शन पर भेजे जाते हैं, मान्य और जुड़े सभी क्लाइंट को प्रसारित किया जाता है। यह बेहतर काम करता है, लेकिन सिस्टम अब तक के क्लाइंट इंस्टेंस के बीच सिंक्रनाइज़ेशन को बनाए रखता नहीं है।मल्टीप्लेयर गेम सिंक्रनाइज़ेशन
अगर वहाँ सर्वर और एक विशेष ग्राहक के बीच एक 5 सेकंड अंतराल हुआ तो वह राज्य परिवर्तन 5 सेकंड ग्राहकों इस प्रकार सिंक्रनाइज़ेशन से बाहर खेल राज्य के साथ उसे छोड़ने के बाकी के बाद प्राप्त होगा। मैं ग्राहकों के बीच एक सिंक्रनाइज़ेशन सिस्टम को लागू करने के विभिन्न तरीकों की तलाश कर रहा हूं लेकिन अब तक बहुत कुछ नहीं मिला है।
मुझे लगता है कि है कि मैं एक काम कर प्रणाली अपने आप को यह करने के लिए समय की एक गंभीर राशि समर्पित बिना आविष्कार कर सकते हैं प्रोग्रामिंग नेटवर्क के लिए नए हैं, और इसलिए भोली नहीं हूँ। हालांकि, मेरे विचारों को कुछ प्रकार की समय प्रणाली रखना है, इसलिए प्रत्येक राज्य परिवर्तन खेल में एक विशिष्ट टाइमस्टैम्प से जुड़ा होगा। इस तरह जब एक ग्राहक को राज्य परिवर्तन प्राप्त हुआ, तो यह पता चलेगा कि खेल की अवधि किस अवधि में हुई थी, और बदले में अंतराल के साथ सहसंबंध करने में सक्षम हो जाएगा। इस विधि के साथ समस्या यह है कि उन n सेकेंड में यह गेम क्लाइंट पक्ष पर जारी रहेगा, और इस प्रकार ग्राहक को राज्य परिवर्तन के लिए अद्यतन करने के लिए समय पर रोलबैक करना होगा जो निश्चित रूप से गन्दा हो जाएगा।
तो मैं कागजात चर्चा के लिए देख रहा हूँ विषयों या एल्गोरिदम कि यह हल करती है। शायद मल्टीप्लेयर सिस्टम कैसे काम करता है, इस बारे में मेरा पूरा डिज़ाइन त्रुटिपूर्ण है, इस अर्थ में कि क्लाइंट का गेम इंस्टेंस तब तक अद्यतन नहीं होना चाहिए जब तक कि सर्वर से धारणा प्राप्त नहीं होती है? अभी क्लाइंट अपने गेम लूप में खुद को अपडेट करते हुए मानते हैं कि किसी भी राज्य में बदलाव नहीं हुआ है।
दिलचस्प सवाल। – Ian
मेरा मानना है कि आपको स्वीकृत उत्तर पर पुनर्विचार करना चाहिए। हेवनर्ड ने आज इस्तेमाल होने वाले मृत गणना या किसी भी अन्य अंतराल तकनीक के बारे में कुछ भी नहीं कहा। ऐसा नहीं है कि खेल सिर्फ घोषित करें "लापरवाही खिलाड़ियों को अपनी हालत स्वीकार करनी चाहिए"; वे गेम को और अधिक बजाने योग्य बनाने के लिए अंतराल को छिपाने का प्रयास करते हैं। आखिरकार, अगर मैंने एक ऐसा गेम खेला जहां लोग हर जगह कूद रहे थे और मैं मुश्किल से खेल नहीं पाया था, तो मैं उस खेल को बहुत जल्दी छोड़ दूंगा। – Ricket