जावास्क्रिप्ट में मल्टीप्लेयर को कैसे संभालें?


12

मैं सिर्फ एक मोबाइल मल्टी-प्लेयर गेम के लिए उपयोग करने के लिए टेक में थोड़ा शोध कर रहा हूं।

यह वर्तमान में अधिक प्रयोग है, इस समय खिलाड़ियों को अन्य खिलाड़ियों के बारे में पता होना चाहिए।

यदि यह एक विशिष्ट वेब अनुप्रयोग था और कोई गेम नहीं है, तो इसके लिए हर समय HTTP अनुरोध ही होगा - लेकिन चूंकि यह एक गेम है, इसलिए प्रदर्शन और सटीकता एक समस्या है।

गेम कई फोन प्लेटफॉर्म पर लक्षित होने के कारण, ग्राहक को जावास्क्रिप्ट में या जावास्क्रिप्ट पर आधारित एक रूपरेखा में लिखा जाएगा। सर्वर तकनीक पूरी तरह से खुली है।

प्रत्येक खिलाड़ी को एक HTTP पोस्ट के बराबर बनाने और केवल एक तेज़ प्रोटोकॉल का उपयोग करने की आवश्यकता होगी। मल्टीप्लेयर वेब आधारित होने का कारण यह है कि ब्लूटूथ या अन्य स्थानीय नेटवर्किंग में मल्टीप्लेयर प्लेटफार्मों भर में बहुत अधिक विविध होंगे और समस्याएं पैदा कर सकते हैं।

तो सवाल यह है कि जावास्क्रिप्ट मल्टीप्लेयर के लिए उपयोग करने के लिए एक अच्छा प्रोटोकॉल / तकनीक क्या है? सर्वर साइड सामान पर कोई सलाह या इससे कोई फर्क नहीं पड़ता? किसी भी कारण से मुझे इस दो स्तरीय वास्तुकला को छोड़ देना चाहिए और सीधे फोन-टू-फोन कनेक्शन के साथ जाना चाहिए?

जवाबों:


15

आप एक बेहतर संचार प्रोटोकॉल चाहते हैं तो HTTP। आप शायद UDP या TCP चाहते हैं। ब्राउज़रों के पास UDP संचार करने का कोई तरीका नहीं है, इसलिए आपकी एकमात्र पसंद TCP है।

TCP के लिए आप एक WebSocket का उपयोग करना चाहते हैं , हालांकि ब्राउज़र समर्थन वेबस्केट पर अस्थिर है।

इसका मतलब है कि आपको टीसीपी का अनुकरण करने के लिए एक COMET तकनीक का उपयोग करना होगा , एक लोकप्रिय अनुकरण एक फ्लैश एप्लीकेशन में एक वेबसोकेट होगा।

सॉकेट.आईओ एक पुस्तकालय ( नोड के लिए ) है जो वेबसोकेट का समर्थन करता है और उन्हें गैर अनुपालन वेब ब्राउज़रों पर एक एप्रिप्टेट फ़ॉलबैक के साथ अनुकरण करता है (यह फ्लैश और अन्य COMET तकनीकों का उपयोग करता है)।

मल्टीप्लेयर जावास्क्रिप्ट गेम्स के लिए मैं सॉकेट.आईओ और नोड.जेएस के उपयोग की सिफारिश करूंगा


1
यहां HTML5 और WebSockets: rawkets.com के साथ किए गए एक वास्तविक समय के खेल का एक नमूना है । स्रोत कोड यहां उपलब्ध है: github.com/robhawkes/rawkets
Elisée

1
यहाँ दो और उदाहरण हैं
रेयानोस

4

प्रश्न और स्वीकृत उत्तर दोनों को 2011 में प्रकाशित किया गया था, और समय काफी बदल गया है :)

Websockets काफी प्रचलित है, लेकिन एक बेहतर तकनीक WebRTC है जो अविश्वसनीय UDP धाराओं के लिए अनुमति देता है। ये खेल के लिए बहुत बेहतर हैं।

संचार के अलावा, मल्टीप्लेयर गेम लिखने जैसे खेल राज्य सामंजस्य, क्लाइंट-साइड भविष्यवाणी, क्रमांकन और कई अन्य को दूर करने के लिए कई अन्य बाधाएं हैं।

<shameless self promotion>

मैं lance.gg के मूल डेवलपर्स में से एक हूँ , एक मल्टीप्लेयर गेम सर्वर / लाइब्रेरी जो नोड पर आधारित है। जेएस जहाँ हमने कई समस्याओं का समाधान किया है (और कई अन्य!)। हमारा लक्ष्य जावास्क्रिप्ट गेम डेवलपर्स के लिए मल्टीप्लेयर गेम डेवलपमेंट को आसान बनाना है। मैं गर्मजोशी से आपको अपने खेल को बनाने के लिए शुरुआती बिंदु के रूप में उपयोग करने के लिए आमंत्रित करता हूं।

</shameless self promotion>


हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.