Android / iOS टर्न-आधारित बोर्ड-गेम के लिए गेम सर्वर


9

मैं वर्तमान में एक iPhone गेम की प्रोग्रामिंग कर रहा हूं और मैं एक ऑनलाइन मल्टीप्लेयर मोड बनाना चाहूंगा। भविष्य में, यह ऐप एंड्रॉइड डिवाइस पर पोर्ट होगा, इसलिए मैं सोच रहा था कि गेम-सर्वर कैसे बनाऊं?

सबसे पहले, मुझे कौन सी भाषा चुननी चाहिए? एक सर्वर को उद्देश्य-सी और जावा में लिखे गए कार्यक्रमों के साथ संवाद करने में सक्षम कैसे बनाया जाए?

फिर, इसे प्रभावी रूप से कैसे करें? क्या यह अच्छा है अगर मैं क्लाइंट द्वारा सॉकेट खोलता हूं (2 होगा)? मुझे सर्वर को किस तरह की जानकारी भेजनी चाहिए? ग्राहकों के लिए?

जवाबों:


7

मेरा यहाँ एक पवित्र युद्ध शुरू करने का मतलब नहीं है, लेकिन अधिकांश इंटरनेट सेवाएं (फ़्लिकर, ट्विटर, फ़ेसबुक और ऐसे) सीरियल फॉर्मेट के रूप में RESTful webservices और JSON के पक्ष में SOAP को छोड़ रही हैं। हालांकि अनिवार्य रूप से एक ही है, REST सेवाएँ उदाहरण के लिए, यह निर्धारित करने के लिए url और http विधि पर निर्भर करती हैं

GET /articles - list all articles
POST /articles - add a new article
PUT /articles/123 - update article 123 with new data

JSON - json.org में वर्णित है - XML ​​की तुलना में सरल भी है, और शायद अप्रासंगिक है, आपको प्रति अनुरोध कुछ बाइट्स बचाएगा। पिछले उदाहरण के बाद, यहाँ JSON संकेतन में एक लेख का वर्णन किया जाएगा:

{ 
 "id": 123,
 "author": "Cyril",
 "content": "Hello, this is an article",
 "tags": [ "gamedev", "webservices", "multiplayer" ] 
}

IOS के लिए यह अच्छा लेख है http://petermcintyre.wordpress.com/2010/11/04/consume-json-rest-in-ios/ जिसमें http://code.google.com/p/json-framework का उल्लेख है / डेटा को पार्स और जेनरेट करने के लिए।

टर्न-बेस्ड होने के कारण, आप स्थिति बनाए रखने के लिए सर्वर पर http सत्रों पर भरोसा कर सकते हैं, इसलिए सर्वर पर लगातार सॉकेट कनेक्शन रखने की आवश्यकता नहीं है। कोई भी सर्वर-साइड भाषा इसका समर्थन करती है (php, python, java, आदि)।

यह आर्किटेक्चर आपको पारदर्शी तरीके से क्षैतिज रूप से (अधिक सर्वरों को जोड़कर) स्केल करने की अनुमति देता है।


4

चूँकि आपका गेम आधारित होने जा रहा है, वास्तविक समय के अपडेट सुपर महत्वपूर्ण नहीं हैं। ऐसा करने का सबसे आसान तरीका पहले से निर्मित सर्वर का उपयोग करना है, मैं एक वेब सर्वर के साथ जाऊंगा। अपने गेम को पोर्ट करने लायक कोई भी प्लेटफ़ॉर्म वेब सर्वर पर स्थित वेब सेवाओं तक पहुँचने की सुविधा प्रदान करना चाहिए।

निकट-वास्तविक समय में अपडेट प्रदान करने के लिए, मैं आपको लंबे मतदान पर ध्यान देने की सलाह देता हूं उस लिंक पर कोड, सर्वर की ओर से लंबे मतदान का सबसे बुनियादी कार्यान्वयन प्रदान करता है। लेकिन लब्बोलुआब यह है कि एक बार संसाधन के लिए एक अनुरोध किया जाता है, सर्वर तब तक अवरुद्ध कॉल को निष्पादित करता है जब तक कि डेटा उपलब्ध नहीं हो जाता। फिर आप प्रक्रिया को फिर से दोहराते हैं, और फिर से।

आपको किस डेटा को वापस भेजना चाहिए, इस संदर्भ में, हमेशा क्लाइंट से शत्रुतापूर्ण व्यवहार करें। क्लाइंट को अपना "टर्न-स्टेट" जो कुछ भी है, उसे भेजना चाहिए, सर्वर इसे सत्यापित करता है, और फिर अगर सब कुछ चेक आउट हो जाता है, तो यह नए "गेम-स्टेट" को सभी कनेक्टेड क्लाइंट को वापस भेज देता है।

-

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

Android पर SOAP वेब सेवाओं का उपभोग करने के लिए, मैं यहां देखूंगा


हाय और आपकी प्रतिक्रिया के लिए धन्यवाद। लेकिन मुझे अभी तक यह समझ में नहीं आया है कि अपने वेबसर्वर को डेटा कैसे भेजा जाए? उपयोगकर्ता इनपुट को क्रमबद्ध कैसे करें (यहां मेरे 8 * 8 बोर्ड में एक चाल जैसे: खिलाड़ी 1 [0,0] से [1,1] तक) और फिर खेल स्थिति को कैसे क्रमबद्ध करें?
सिरिल

मेरे द्वारा जोड़े गए दो लिंक की जाँच करें। उन्हें आपको SOAP वेब सेवाओं के साथ आरंभ करना चाहिए, जो संभवतः आरंभ करने का सबसे सरल तरीका है।
नैट

Android और iOS के लिए आपको लंबे मतदान का उपयोग करने की आवश्यकता नहीं है। Apple पुश सूचनाएँ या Google क्लाउड मैसेजिंग आपको सर्वर से अपने उपकरणों पर डेटा पुश करने देगा।
मैट

2

मुझे लगता है कि SOAP या यहां तक ​​कि HTTP का उपयोग करना ओवरकिल है। बस वेनिला टीसीपी-कनेक्शन पर अपने स्वयं के प्रोटोकॉल को परिभाषित करें। उदाहरण के लिए, कमांड के रूप में भेजे गए पाठ की प्रत्येक पंक्ति की व्याख्या करें। परिभाषित करें कि क्लाइंट और सर्वर को कौन सी कमांड / प्रतिक्रियाएं भेजने की अनुमति है।

FICS उस तरह से काम करती है और यह कई सालों से हजारों शतरंज खिलाड़ियों की सेवा कर रही है। IRC इस तरह भी काम करता है (RFC 1459 देखें)।


HTTP कई फायदे प्रदान करता है, हालांकि: यह प्रॉक्सी का उपयोग कर सकता है, यह लगभग कभी फ़ायरवॉल नहीं है, यह HTTPS का उपयोग करके पारदर्शी एन्क्रिप्शन के पास प्रदान करता है, कई प्रमाणीकरण विधियाँ हैं ...
sam hocevar
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.