मैं socket.io का उपयोग करके अपना पहला ऑनलाइन गेम बना रहा हूं, और मैं इसे agar.io या diep.io की तरह एक वास्तविक समय मल्टीप्लेयर गेम बनाना चाहूंगा।
लेकिन मैं यह पता लगाने की कोशिश कर रहा हूं कि सभी कंप्यूटरों को एक ही गति से कैसे काम किया जाए।
मेरे पास मॉडल के लिए तीन विचार हैं, लेकिन उनमें से कोई भी सही नहीं लगता है, और मैं सोच रहा हूं कि सामान्य वीडियोगेम कैसे करते हैं। (आप मेरे विचारों को पढ़ना छोड़ सकते हैं; वे आपको केवल उन समस्याओं को देखने का एक तरीका देते हैं जो मुझे हो रही हैं।)
सर्वर ग्राहकों को अपने आप चलने देता है और सर्वर को अपडेट पास करता है, जो बाद में उन्हें बाकी क्लाइंट के लिए प्रसारित करता है। यह समस्या है कि कुछ कंप्यूटर दूसरों की तुलना में तेजी से चलते हैं, जिससे वे तेजी से अपडेट होते हैं और तेजी से स्क्रीन के पार चले जाते हैं।
अपडेट करने के लिए सर्वर को क्लाइंट्स को बताएं। मैं तब तक इंतजार कर सकता हूं जब तक कि अंतिम ग्राहक प्रतिक्रिया नहीं देता (एक व्यक्ति के पास एक धीमी गति से कंप्यूटर होने पर एक भयानक विचार), तब तक इंतजार करें जब तक कि पहले ग्राहक जवाब न दे (फिर से, प्रत्येक फ्रेम से पहले संचार की प्रतीक्षा कर रहा हो), या बस उन्हें जितनी जल्दी हो सके भेजें (जो नंबर 1 के रूप में एक ही मुद्दे में चलाने के लिए लगता है)।
गेम की शुरुआत में, सर्वर ने क्लाइंट्स को बताया कि कितनी जल्दी अपडेट करना है। इसका मतलब यह होगा कि ग्राहक उस समय अवधि के बीच आंदोलन को प्रतिबंधित करने के लिए जिम्मेदार होगा। उदाहरण के लिए, यदि कोई उस समय अवधि के भीतर दो बार किसी बटन को दबाने में कामयाब होता है, तो यह केवल एक बटन प्रेस घटना को भेजेगा। यह समस्या है कि कुछ कार्यों को अनदेखा किया जाएगा (जैसे कि डबल बटन प्रेस), और यह कि बातचीत क्लाइंट की घड़ी पर निर्भर करेगी, जो सर्वर की घड़ी से मेल नहीं खा सकती है। तब सर्वर को प्रत्येक क्लाइंट का ट्रैक रखना होगा और यह सुनिश्चित करना होगा कि उनके अपडेट सही समय पर सबमिट किए जा रहे हैं।
मैंने कुछ शोध किया है , लेकिन मैंने जो लेख पढ़ा है, वह विशेष रूप से पता नहीं लगता कि क्या करना है अगर एक ग्राहक अन्य ग्राहकों की तुलना में तेजी से अपडेट भेजता है।
मेरे विशेष मामले में, मैं ऐसे लोगों के साथ काम कर रहा हूं जिनकी कीबोर्ड की गति अधिक है (उनका कंप्यूटर अन्य कंप्यूटरों की तुलना में अधिक कीबोर्ड अपडेट भेजेगा)।
प्रोग्रामर आमतौर पर इससे कैसे निपटते हैं?