2009-07-05 14 views
11

क्या नया गेमकिट फ्रेमवर्क का उपयोग करके 1 से अधिक डिवाइसों से कनेक्ट करना संभव है? अब तक मैंने जो भी उदाहरण दिखाए हैं, वे दिखाते हैं कि हम 1 डिवाइस से कैसे जुड़ सकते हैं। यहां तक ​​कि डिफ़ॉल्ट कनेक्शन इंटरफ़ेस भी उपयोगकर्ता को केवल एक कनेक्ट का चयन करने देता है।आईफोन पी 2 पी - क्या 1 से अधिक उपकरणों से कनेक्ट करने का कोई तरीका है?

धन्यवाद।

उत्तर

15

आपके ऐप के लिए गेमकिट को कॉन्फ़िगर और उपयोग करने के निम्न लिंक पर यहां एक अच्छा अच्छा अवलोकन है।

दुर्भाग्य से, आप आप के लिए GKSession उदाहरण कॉन्फ़िगर करने के लिए GKPeerPickerController मानक यूआई पिकर का उपयोग करने के लिए आप अधिक से अधिक 2 उपकरणों का समर्थन करना चाहते हैं नहीं कर सकेंगे। इसके बजाय, आपको मास्टर/सर्वर और एकाधिक क्लाइंट के बीच कनेक्शन सेट अप और कॉन्फ़िगर करने के लिए अपने स्वयं के यूआई तत्व विकसित करना होगा।

यहाँ अधिक से अधिक 2 उपकरणों के लिए GameKit सक्षम करने के लिए एक आसान तरीका है:

जब आप initWithSessionID के साथ एक GKSession उदाहरण प्रारंभ: DISPLAYNAME: sessionMode, उपयोग:

  • sessionMode: GKSessionModeServer के लिए सर्वर/मास्टर
  • सत्र मोड: अन्य (एकाधिक) ग्राहकों के लिए GKSessionModeClient

sessionMode: GKSessionModePeer 3 विकल्प उपलब्ध है और इस तरह के GKTank डेमो के रूप में एप्पल द्वारा प्रदान की सबसे नमूना कोड में इस्तेमाल किया विकल्प है।

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

सर्वर के लिए:

GKSession *session = [[GKSession alloc] initWithSessionID:kTestSessionID displayName:nil sessionMode:GKSessionModeServer]; 

ग्राहक (रों) के लिए:

GKSession *session = [[GKSession alloc] initWithSessionID:kTestSessionID displayName:nil sessionMode:GKSessionModeClient]; 
+0

ध्यान दें कि जीकेएसशन के सभी तरीकों को आईओएस 7 और बाद में बहिष्कृत किया गया है। – Blip

0

गेमकिट फ्रेमवर्क का उपयोग करते समय, मेरे सबसे अच्छे ज्ञान के लिए, आप केवल एक जोड़ी डिवाइस जोड़ सकते हैं, एक सर्वर के रूप में कार्य कर रहा है और दूसरा ग्राहक के रूप में (यदि दोनों को सहकर्मी के रूप में प्रारंभ किया जाता है, तो आपको यह तय करना होगा कि कौन सा कोई एक सर्वर के रूप में कार्य करेगा, या तो मनमाने ढंग से या एक यादृच्छिक रूप से चयन करके)।

प्रैक्टिस में, आपके डिवाइस को चलाने वाले कई डिवाइस हो सकते हैं, लेकिन कनेक्टेड उपकरणों के माध्यम से कनेक्शन हमेशा स्थापित किए जाएंगे।

बेशक, आप वाईफाई पर अपना स्वयं का बोनजोर-आधारित नेटवर्किंग कोड लिख सकते हैं और इस सीमा को पार कर सकते हैं, हालांकि इसे और अधिक कोडिंग की आवश्यकता होगी।

4

अतीत में मैंने पढ़ा है कि आप Gamekit का उपयोग कर सोलह डिवाइस तक कनेक्ट कर सकते हैं। मेरा मानना ​​है कि आप केवल दो ही कर सकते हैं जब पीयर मोड में, दो से अधिक करने के लिए एक डिवाइस को मास्टर और अन्य क्लाइंट मोड में सेट किया जाना चाहिए।

मैं उन उदाहरणों की तलाश करता हूं जो मास्टर/क्लाइंट का उपयोग प्रदर्शित करते हैं, ग्राहक पक्ष को तीनों पर लागू होना चाहिए।

वास्तविक संख्या प्राप्त करने के लिए पर +maxPlayersAllowedForMatchOfType: पर कॉल कर सकते हैं, जो प्रति डिवाइस भिन्न हो सकता है, इसलिए आपको शायद ऊपरी सीमाओं के रूप में उपयोग करना चाहिए।

+0

कारण है कि आप कहते हैं कि तुम GameKit का उपयोग कर चार उपकरणों को कनेक्ट कर सकते हैं? या पीयर मोड पर दो तक? – nico

+0

चार सीमा गेमकिट मास्टर/सर्वर मोड के लिए समर्थन करेगा। पीयर टू पीयर केवल दो उपकरणों की अनुमति देता है। यह वही है कि एपीआई कैसे है। –

+0

@KendallHelmstetterGelner लिंक काम नहीं कर रहा है। कृपया इसे अद्यतन करें। – NightFury

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