में ऑनलाइन गेम में एकाधिक-उपयोगकर्ता डेटा को समन्वयित करने के लिए डिज़ाइन पैटर्न सुझाव मैं node.js सीखने के लिए एक प्रोजेक्ट पर काम कर रहा हूं, और रीयल-टाइम में उपयोगकर्ता डेटा को समन्वयित करने के तरीके के बारे में कुछ सुझाव ढूंढ रहा था ।रीयल-टाइम
कहें कि आपके पास 2 डी आयताकार मानचित्र (लगभग 600x400) है, जिसमें उस मानचित्र पर एक्स, वाई स्थितियों पर कब्जा करने वाले कई खिलाड़ी हैं। प्रत्येक उपयोगकर्ता तीर कुंजी के साथ चारों ओर नेविगेट कर सकता है और कुछ बुनियादी तरीकों से दूसरों के साथ बातचीत कर सकता है। यह देखते हुए कि यह HTTP पर खेला जाएगा, सबसे आसान, स्नैपएस्ट अनुभव देने के लिए उपयोगकर्ता डेटा को संभालने और समन्वयित करने के मामले में सबसे अच्छा डिज़ाइन पैटर्न क्या होगा?
मैं कई विकल्प के बारे में सोच सकते हैं, लेकिन कुछ और अधिक विचार/स्पष्टीकरण की सराहना करेंगे:
क्लाइंट सर्वर से स्थितीय डेटा भेजता है, सर्वर सभी ग्राहकों के लिए सभी पदों वितरित करता है, स्क्रीन परिणाम के साथ प्रदान की गई है। दोहराएँ। नकारात्मकता यह होगी कि क्लाइंट साइड डेटा राउंड-ट्रिप के समय तक लगी हुई है, लेकिन उलझन यह है कि वे सभी उपयोगकर्ताओं के साथ समन्वयित होते हैं।
क्लाइंट प्रस्तुत करता है जहां यह सोचता है कि यह लगातार होता है, सर्वर पर स्थितित्मक डेटा भेजता है, सर्वर सभी ग्राहकों को सभी पदों को वितरित करता है, और उसके बाद क्लाइंट डेटा से स्क्रीन प्रतिपादन सर्वर डेटा के साथ ठीक किया जाता है। ऊपर एक स्नैपियर प्रतिक्रिया है, नकारात्मक पक्ष सिंक का मामूली नुकसान है।
दोनों का मिश्रण, लेकिन (x, y) समन्वय का उपयोग करने के बजाय हम [पिछले x/y और समय, वर्तमान x/y और समय के एक वेक्टर का उपयोग करते हैं, समय अंतराल पर x/y का सुझाव दिया ] जिसका उपयोग तब प्रोजेक्टाइल पथों को आकर्षित करने के लिए किया जा सकता है जो लगातार बदलते हैं। ऐसा लगता है कि इसे लागू करना मुश्किल होगा।
कोई बात नहीं?
संचार के लिए socket.io का उपयोग करें – Alfred