2009-12-02 8 views
7

मैं एक छोटे से multipliplayer जो निम्नलिखित की आवश्यकता होगी निर्माण कर रहा हूँ:क्या डेटास्पेप 8 गैर-संचार गहन द्वि-दिशात्मक मल्टीप्लेयर गेम के लिए उपयुक्त होगा?

  • यह डेल्फी में लिखा होना चाहिए
  • इंटरनेट कनेक्शन (न केवल लैन) HTTP
  • समर्थन कुछ एन्क्रिप्शन से अधिक
  • काम का समर्थन करना चाहिए पैकेट (यह कस्टम हो सकता है)
  • सर्वर
  • सर्वर पर कमांड भेजने में सक्षम हो
  • से प्रतिक्रिया प्राप्त करने में सक्षम हो
  • एक सर्वर से 8 खिलाड़ियों को कनेक्ट करने के लिए
  • सर्वरों के लिए जटिल वस्तुओं (शायद JSON धारावाहिक) पारित करने के लिए सक्षम होने के लिए सक्षम हो

आपको लगता है नई डेल्फी 2010 Datasnap इस में सफलतापूर्वक इस्तेमाल किया जा सकता है क्या परिदृश्य या क्या मुझे सादे पुराने टीएसकेट के साथ जाना चाहिए?

उत्तर

10

DataSnap सभी कि आप ऊपर सूचीबद्ध किया है कर सकते हैं:

  1. DataSnap डेल्फी में लिखा है।
  2. यह किसी भी कनेक्शन, स्थानीय, नेटवर्क या रिमोट पर HTTP के माध्यम से कनेक्ट हो सकता है।
  3. यह HTTP कनेक्शन पर सुरंग करने के लिए समर्थन सहित HTTP पर काम करेगा
  4. हालांकि आप डेटा स्ट्रीम को फ़िल्टर कर सकते हैं। उत्पाद में संपीड़न फ़िल्टर शामिल है। डेनिएल टेटी ने कुछ very nice encryption filters लिखा है।
  5. आप सर्वर तरीकों
  6. आप
  7. आप आसानी से एक सर्वर
  8. आप JSON ऑब्जेक्ट पारित कर सकते हैं करने के लिए आठ लोगों को कनेक्ट कर सकते हैं सर्वर कॉलबैक के माध्यम से सर्वर से प्रतिक्रिया प्राप्त कर सकते हैं फोन करके सर्वर को आदेश भेज सकते हैं। यह क्लाइंट और सर्वर के बीच भेजा गया डिफ़ॉल्ट प्रकार है।

तो अपने प्रश्न का उत्तर देने के लिए, हाँ, मुझे लगता है कि नया डेल्फी 2010 डेटा स्नैप आपके परिदृश्य में उपयोग किया जा सकता है।

+0

सावधान रहें कि उपरोक्त "बहुत अच्छे फ़िल्टर" बिल्कुल सुरक्षित नहीं हैं - क्योंकि आपको सत्र कुंजी का आदान-प्रदान करने के लिए एक सुरक्षित तरीका चाहिए। –

3

जैसा निक ने कहा, जवाब हां है।

बॉब स्वर्ट ने एक श्वेत पत्र लिखा और अद्यतन DataSnap in Delphi 2010 पर कुछ वीडियो प्रस्तुत किए जो आपको प्रारंभ करने में मदद कर सकते हैं।

1

यदि आपका मल्टीप्लेयर गेम अधिक डेटा HTTP नहीं भेजता है और डेटासैप काम कर सकता है। यदि आपको तेजी से संचार की आवश्यकता है, तो मैं यूडीपी और कस्टम बाइनरी प्रोटोकॉल का उपयोग करूंगा। जब तक आपको किसी कंपनी फ़ायरवॉल को बाईपास नहीं करना पड़ेगा जो लगभग किसी भी प्रोटोकॉल को रोकता है लेकिन HTTP - और कंपनियां आम तौर पर अपने कामकाजी घंटों में खेलने वाले लोगों को पसंद नहीं करती हैं - फ़ायरवॉल आने वाले कनेक्शन को अवरुद्ध करता है, बाहर नहीं जा रहा है। क्लाइंट को कनेक्ट करने की अनुमति देने के लिए बस सर्वर को खुले बंदरगाहों की आवश्यकता होती है। और मैं JSON से भी बचूंगा - अगर आपको इंटरऑपरेबिलिटी की आवश्यकता नहीं है तो बाइनरी सीरियलाइजेशन बहुत तेज है।

+0

आपका मतलब है कि एंटरप्राइज़ नेटवर्क में पोर्ट 80 का उपयोग करना फ़ायरवॉल संचार को अवरुद्ध कर सकता है (आने वाले)? –

+0

एक उचित प्रबंधित फ़ायरवॉल आने वाले कनेक्शन को पोर्ट 80 पर अनुमति नहीं देगा, लेकिन अनुमत वेब सर्वर (आमतौर पर डीएमजेड या इसी तरह) में। क्लाइंट पोर्ट 80 पर बाहरी वेबसर्वर को HTTP अनुरोध भेज सकता है, और उत्तर प्राप्त कर सकता है, लेकिन nwtwork के अंदर एक सर्वर अनुरोध प्राप्त नहीं कर सकता है जब तक कि फ़ायरवॉल इसे अनुमति न दे। –

+0

आप सही हैं, AFAIK यूडीपी स्थानीय नेटवर्क के बाहर रूट करने योग्य नहीं है (जब तक कि आप कुछ जटिल एनएटी नहीं करते), जबकि HTTP/टीसीपी है। प्रदर्शन परिप्रेक्ष्य के लिए, मैं कभी भी डेटास्नाप का उपयोग नहीं करूंगा - लेकिन यहां, आवश्यकता 8 क्लाइंट तक है, इसलिए इस मामले में DataSnap इसे सहजता से संभाल लेगा। –

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