2013-07-11 10 views
5

मेरे मल्टीप्लेयर गेम में मेरे पास 2 विरोधी हैं। जब किसी के पास नेटवर्क समस्या/डिस्कनेक्शन होता है तो 1 सहकर्मी को कैसे सूचित किया जा सकता है? मैं उम्मीद कर रहा था कि या तो onPeerLeft या onPeersDisconnected जहां निकाल दिया गया, लेकिन कुछ भी नहीं!Google Play सेवाएं: सहकर्मी नेटवर्क डिस्कनेक्शन को कैसे संभालें?

असल में मैं पिंग तंत्र के कुछ प्रकार लागू करने के लिए इतना है कि अगर एक सहकर्मी एक निर्दिष्ट समय के भीतर पिंग संदेश प्राप्त नहीं होता है मैं कुछ उपयोगकर्ता के लिए फेंक कर सकते हैं जा रहा हूँ (एक संवाद है कि प्रतिद्वंद्वी डिस्कनेक्ट को निर्दिष्ट।)

वैकल्पिक रूप से, क्या इस तरह की समस्या लागू होने पर सुनने के लिए कॉलबैक है?

कट सहकर्मी मैं अगर सहकर्मी डेटा नहीं भेज सकते हैं पता लगाने के लिए onRealTimeMessageSent कॉलबैक उपयोग कर रहा हूँ पर, इस प्रकार:

@Override 
public void onRealTimeMessageSent(int statusCode, int token, String arg2) { 
    //f the peer can't send data 
    if (statusCode == GamesClient.STATUS_REAL_TIME_MESSAGE_SEND_FAILED) { 
     //here I show an error dialog and move out of game 
    } 
} 

अन्य सहकर्मी पर, कोई अन्य कॉलबैक (जैसे onPeerLeft या onPeersDisconnected के रूप में उठाया जाता है)

कोई सुझाव? अग्रिम में धन्यवाद!

+0

ठीक है, आखिरकार मैंने 'ऑनरूम कनेक्ट' कॉलबैक में हर 5 सेकंड में 'टिमर्टस्क' को 'टाइमर' शेड्यूल करने के साथ एक पिंग-पोंग तंत्र का चयन किया। फिर मैं नया संदेश भेजने से पहले आखिरी प्राप्त पिंग समय की जांच करता हूं, यदि समय बीतने के बाद समय समाप्त हो गया है, तो मैं उचित त्रुटि संदेश फेंकने में सक्षम हूं। किसी भी अन्य सुझाव का स्वागत है! –

उत्तर

0

ध्वनि आप builder.build() कॉल करने से पहले setRoomStatusUpdateListener (RoomStatusUpdateListener) बुला नहीं किया जा सकता की तरह

संपादित करें: जहां बिल्डर अपने RoomConfig.Builder

+0

हां, मैं श्रृंगार को 'निर्माण() 'कॉल करने से पहले चुनिंदा खिलाड़ी के इरादे से प्राप्त आमंत्रण और गतिविधि परिणाम पर दोनों को सेट कर रहा हूं। नेटवर्क पर कनेक्शन ठीक है, तो 'onPeerLeft' और अन्य ओवरराइड विधियों को बुलाया जाता है! पर ये स्थिति नहीं है। एक पिंग एक्सचेंज के साथ मैं निगरानी कर सकता हूं कि क्या मैं समय सीमा के भीतर डेटा भेज रहा हूं और प्राप्त कर रहा हूं। –

+0

ऑनपियरडिस्कनेक्टेड को कॉल किया जा रहा है यदि अन्य खिलाड़ी जबरन सर्वर से डिस्कनेक्ट हो गया है, तो पीयरलेफ्ट केवल तभी कॉल किया जाएगा जब यह छोड़ने का खिलाड़ी का इरादा था। आप प्रत्येक इंटरफ़ेस विधियों पर टोस्ट डालने का प्रयास कर सकते हैं ताकि आप देख सकें कि उन्हें कब कॉल किया जाता है। – mmizzle9

0

है दूरस्थ सहकर्मी कोई संदेश इंगित करने के लिए नहीं मिलेगा गिरा दिया कनेक्शन यह डिज़ाइन किया गया है (सिग्नल का अस्थायी नुकसान संभाला जा सकता है)।

यह एक Google प्रतिनिधि यहाँ से इसकी पुष्टि की है:

https://github.com/playgameservices/cpp-android-basic-samples/issues/53

मैं एक पिंग आधारित टाइमआउट क्रियान्वित किया है।

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