2010-04-28 13 views
8

क्या node.js के साथ वास्तविक समय गेम बनाना संभव है जिसके लिए ट्विच रिफ्लेक्स की आवश्यकता होती है। विलंबता कितनी अधिक है? यह वास्तव में कितना कम जा सकता है?node.js रीयल-टाइम गेम

उत्तर

6

HTTP सर्वर आमतौर पर विलंबता पर थ्रूपुट/बैंडविड्थ के लिए अनुकूलित किए जाते हैं। node.js अपवाद होने की संभावना नहीं है, और प्रोटोकॉल की संरचना के कारण HTTP कम विलंबता के लिए आंतरिक रूप से खराब है।

One informal benchmark node.js का उपयोग करके इसका समर्थन करता है, जो सैकड़ों मिलीसेकंड की लेटेंसी दिखाता है। तुलनात्मक रूप से अधिकतर ट्विच गेम 30 या 40ms से अधिक की लेटेंसी का समर्थन करते हैं, आदर्श रूप से कम।

इसलिए यदि आप HTTP ड्रॉप नहीं कर सकते हैं तो मैं टच पहलू को छोड़ने की अनुशंसा करता हूं।

+12

कहा जाता है, मुझे नहीं लगता कि HTTP के साथ क्या करना है। मल्टी-प्लेयर गेम में खिलाड़ियों के बीच कम विलंबता अपडेट के लिए, लोग आम तौर पर यूडीपी या टीसीपी का उपयोग करते हैं, जिनमें से दोनों node.js कर सकते हैं। – JasonWoof

+4

आप बिल्कुल सही हैं। हालांकि, जब मैंने यह जवाब पोस्ट किया था, तो कुछ लोग वेब सर्वर के रूप में छोड़कर कुछ भी के लिए node.js का उपयोग करने के बारे में बात कर रहे थे और यूडीपी समर्थन अभी भी 2 महीने दूर था। – Kylotan

+4

आह :) यह मेरे लिए आश्चर्यजनक है कि कैसे node.js विकसित किया जा रहा है। – JasonWoof

14

किसी भी अन्य भाषा/ढांचे के साथ आप node.js में रीयल-टाइम गेम बनाना संभव है।

यहां समस्या यह होगी कि आप किस प्रकार का सर्वर और क्लाइंट उपयोग करेंगे।
http server इस तरह के गेम के लिए सुविधा का उपयोग करना एक बुरा विचार होगा और बहुत मुश्किल होगा, लेकिन आप किसी भी अन्य भाषा में TCP server (अब नेट सर्वर कहा जाता है) का उपयोग कर सकते हैं।

क्लाइंट कुछ प्लेटफॉर्म पर होगा जहां आप फ्लैश, जावा एप्लेट या डेस्कटॉप सॉफ़्टवेयर जैसे सॉकेट का उपयोग कर सकते हैं।

कृपया ध्यान दें कि एक टीसीपी सॉकेट सर्वर का उपयोग करने के साथ आपको एक टच खेल के लिए विलंबता में समस्या हो सकती है, लेकिन यह इस प्रश्न से संबंधित क्षेत्र से बाहर है और games and networking के बारे में अधिक जानकारी है।

पुनश्च: आप उपयोग वेब सॉकेट क्योंकि वे सैद्धांतिक रूप से TCP सॉकेट की तरह काम करना चाहिए सकता है, लेकिन वहाँ अभी तक वर्तमान आधुनिक ब्राउज़रों में उनके लिए एक अच्छा समर्थन नहीं है।


संपादित:

ऐसा लगता है मैं अपने आप को सही ढंग से समझाया नहीं है, तो आप एक ब्राउज़र सुलभ खेल कर सकते हैं जैसे कि आपने कहा, तुम सिर्फ एक प्रोटोकॉल है कि आप करने की अनुमति देता का उपयोग करने की आवश्यकता है वास्तविक समय में तुरंत डेटा भेज दें।

आप किसी भी तीसरे पक्ष प्लगइन्स एक ही रास्ता के बिना एक "शुद्ध" ब्राउज़र खेल चाहते हैं, जैसे कि मैंने पहले कहा, जावास्क्रिप्ट उपयोग कर रहा है WebSockets जो अच्छी तरह से प्रमुख ब्राउज़रों द्वारा अभी तक समर्थित नहीं है । (आप एक फ्लैश पुल इस्तेमाल कर सकते हैं और अभी भी जावास्क्रिप्ट में अपने खेल है।)

एक तीसरी पार्टी प्लगइन आप फ्लैश और जावा (एकता और इतने पर जैसे कई कम ज्ञात प्लगइन्स के अलावा) है का उपयोग करना। दोनों में टीसीपी सॉकेट (यूडीपी के बारे में निश्चित नहीं है) और node.js नेट सर्वर से कनेक्ट करने के लिए बनाया जा सकता है (कुछ सुरक्षा सीमाओं के साथ)। अधिकतर लोग फ्लैश के साथ जाने के लिए कहेंगे क्योंकि एक बड़ा समर्थन है लेकिन ऐप्पल इसे पसंद नहीं करता है इसलिए आईफोन/आईपैड/आईपॉड टच या अन्य विविध मोबाइल उपकरणों पर फ्लैश नहीं है (जो इसके बजाए जावा का समर्थन करता है)।

तो हाँ ... इसके साथ शुभकामनाएँ।

संपादित करें 2: ब्राउज़रों में

WebSocket समर्थन अब बहुत सभ्य तो मैं वास्तविक समय खेल के लिए यह सुझाव है कि आप एक ग्राहक के रूप में ब्राउज़र का उपयोग करना चाहते हैं है।

+8

एक गेम के लिए टीसीपी का उपयोग करना बहुत बुद्धिमान नहीं है, यूडीपी जाने का रास्ता है। –

+8

मैं पूरी तरह से असहमत हूं। गेम के लिए यूडीपी का उपयोग करना बहुत बुद्धिमान नहीं है, टीसीपी जाने का रास्ता है। – Ricket

+0

किसी भी तरह से, इन प्लेटफार्मों पर यूडीपी भी कम समर्थित है। (मुझे याद नहीं है कि फ्लैश इसका समर्थन करता है, मुझे लगता है कि जावा एप्पल करते हैं।) –

4

यह संभव है, लेकिन यह इस बात पर निर्भर करता है कि सर्वर और क्लाइंट के बीच कितना डेटा प्रसारित किया जाना चाहिए और कितनी तेज़ (विलंबता की बात)। उदाहरण के लिए, Sousaball by Creationix पर एक नज़र डालें।

इसके अलावा, यदि आप websockets का उपयोग करने की योजना बना रहे हैं, तो सीखने के द्वारा Socket.IO लाइब्रेरी पर एक नज़र डालें। यह उपलब्ध होने पर websockets का उपयोग करता है और अन्य मामलों में धूमकेतु पर वापस आ जाता है।

संबंधित मुद्दे