में सर्वर और क्लाइंट के बीच विलंबता कैसे प्राप्त करूं मैं एक गेम इंजन के लिए सी # सर्वर एप्लिकेशन पर काम कर रहा हूं जिसे मैं एक्शनस्क्रिप्ट 3 में लिख रहा हूं। मैं धोखाधड़ी को रोकने और सुनिश्चित करने के लिए एक आधिकारिक सर्वर मॉडल का उपयोग कर रहा हूं निष्पक्ष खेल। अब तक, सब कुछ अच्छी तरह से काम करता है:मैं सी #
जब ग्राहक आगे बढ़ना शुरू करता है, तो यह सर्वर को बताता है और स्थानीय रूप से प्रतिपादन शुरू करता है; सर्वर, तब, हर किसी को बताता है कि क्लाइंट एक्स ने विवरण के साथ आगे बढ़ना शुरू कर दिया है ताकि वे प्रतिपादन भी शुरू कर सकें। जब ग्राहक आगे बढ़ना बंद कर देता है, तो यह सर्वर को बताता है, जो क्लाइंट चलने के समय के आधार पर गणना करता है और क्लाइंट टिक विलंब प्रस्तुत करता है और सभी को जवाब देता है, ताकि वे सही मानों के साथ अपडेट कर सकें।
बात यह है कि जब मैं सर्वर की गणना पर डिफ़ॉल्ट 20ms टिक विलंब का उपयोग करता हूं, जब क्लाइंट एक लंबी दूरी के लिए चलता है, तो यह बंद होने पर एक उल्लेखनीय झुकाव होता है। अगर मैं 22 एमएमएस में थोड़ी देर में देरी करता हूं, तो मेरे स्थानीय नेटवर्क पर सब कुछ बहुत आसानी से चलता है, लेकिन अन्य स्थानों में झुकाव अभी भी वहां है। थोड़ा प्रयोग करने के बाद, मैंने देखा कि अतिरिक्त देरी की आवश्यकता क्लाइंट और सर्वर के बीच विलंबता से काफी जुड़ी हुई है। मैंने इसे एक फार्मूला तक भी उबाला जो काफी अच्छी तरह से काम करेगा: देरी = 20 + (विलंबता/10)।
तो, मैं एक निश्चित ग्राहक और सर्वर (मैं एसिंक्रोनस सॉकेट का उपयोग कर रहा हूं) के बीच विलंबता प्राप्त करने के लिए कैसे कार्य करूंगा। सर्वर प्रयास धीरे-धीरे चलाने के लिए CPU प्रयास बहुत अधिक नहीं हो सकता है। साथ ही, क्या यह वास्तव में सबसे अच्छा तरीका है, या ऐसा करने के लिए एक और अधिक कुशल/आसान तरीका है?
+1। –