मैं एक कंप्यूटर विज्ञान पाठ्यक्रम के लिए एक वास्तविक समय रणनीति खेल विकसित कर रहा हूं। इसका एक कठिन पहलू क्लाइंट-सर्वर नेटवर्किंग और सिंक्रोनाइज़ेशन लगता है। मैंने इस विषय ( 1500 तीरंदाजों सहित ) पर पढ़ा है , लेकिन मैंने अन्य मॉडल (उदाहरण के लिए, लैन पर) के विपरीत क्लाइंट-सर्वर दृष्टिकोण लेने का फैसला किया है।
यह वास्तविक समय रणनीति खेल कुछ समस्याओं के साथ आता है। शुक्र है कि खिलाड़ी जो भी कदम उठाता है वह नियतात्मक होता है। हालांकि, ऐसी घटनाएं हैं जो निर्धारित अंतराल पर होती हैं। उदाहरण के लिए, खेल टाइलों से बना होता है, और जब कोई खिलाड़ी टाइल लेता है, तो उस टाइल पर एक 'ऊर्जा स्तर', एक मूल्य, इसे लेने के बाद प्रत्येक सेकंड में बढ़ना चाहिए। यह एक बहुत ही त्वरित व्याख्या है जिसे मेरे उपयोग के मामले को सही ठहराना चाहिए।
अभी मैं पतले क्लाइंट कर रहा हूं, जो सिर्फ सर्वर को पैकेट भेजते हैं और प्रतिक्रिया का इंतजार करते हैं। हालांकि, कई समस्याएं हैं।
जब खिलाड़ियों के बीच गेम एंडगेम में विकसित होते हैं, तो अक्सर प्रति सेकंड 50 से अधिक घटनाएं होती हैं (निर्धारित घटनाओं के कारण, पहले समझाया गया, जमा हुआ), और सिंक्रनाइज़ेशन त्रुटियां तब दिखाई देने लगती हैं। मेरी सबसे बड़ी समस्या यह है कि ग्राहकों के बीच राज्य में एक छोटे से विचलन का अर्थ यह भी हो सकता है कि ग्राहक अलग-अलग निर्णय लें, जो स्नोबॉल को पूरी तरह से अलग खेल में लेते हैं। एक और समस्या (जो अभी उतनी महत्वपूर्ण नहीं है) यह है कि विलंबता है और एक को कुछ मिलीसेकंड इंतजार करना पड़ता है, यहां तक कि सेकंड के बाद भी वे परिणाम देखने के लिए अपना कदम रखते हैं।
मैं सोच रहा हूं कि एंड-यूज़र के लिए इस आसान, तेज़ और अधिक सुखद बनाने के लिए मैं किन रणनीतियों और एल्गोरिदम का उपयोग कर सकता हूं। यह विशेष रूप से दिलचस्प है प्रति गेम कई खिलाड़ियों के साथ, प्रति सेकंड घटनाओं की उच्च मात्रा को देखते हुए।
TL; DR प्रति सेकंड 50 घटनाओं के साथ RTS बना रहा है, मैं ग्राहकों को कैसे सिंक्रनाइज़ करूं?