2016-05-16 50 views

回答

2

1 - API是否提供任何內容來檢查對方是否仍然連接?

Connecting players所述,您可以使用RoomStatusUpdateListener回調來監視與會者的連接狀態。如上所述:

要在所有玩家連線時得到通知,您的遊戲可以使用RoomUpdateListener.onRoomConnected()回撥。您的遊戲也可以使用RoomStatusUpdateListener回調來監控參與者的連接狀態。根據參與者連接狀態,您的遊戲可以決定是啓動還是取消遊戲會話。

2 - 有什麼辦法讓玩家重新連接到房間嗎?

實時多人遊戲 - Gameplay指出:

一旦需要參加一個房間的數量已經連接,房間被認爲是「充滿」和遊戲可以開始了。參與者加入房間後,您的遊戲可以讓他們離開房間(有效地將他們從遊戲中刪除)。但是,沒有新玩家可以在「填充」之後加入房間(甚至不填補參與者騰空的地點)。

除此之外,參照best practice for Real-time multiplayer

如果不恰當地離開房間,谷歌Play遊戲服務將繼續事件,並邀請通知發送到客戶端。每當發生以下情況之一時,您應該離開活躍房間:

  • 遊戲結束(例如,玩家贏得了比賽)。
  • 當你的遊戲進入後臺。
  • 在Android上,離開房間時:
    • 玩家取消等候室UI中的遊戲。
    • onActivityResult()回調中返回的響應代碼是 GamesActivityResultCodes.RESULT_LEFT_ROOM
    • 活動onStop()被調用。這可能表示您的 活動正在銷燬。在這種情況下,請離開房間並致電 disconnect()

希望這些鏈接涵蓋了所有的顧慮。快樂的編碼! :)

+1

1 - 謝謝我會研究,即如果其互聯網關閉參與者的連接狀態更改爲其他參與者。 2 - 所以簡單的答案是離開後無法重新連接到同一個房間。 :) – Uzi

+1

更新:測試您的解決方案的第一個問題----當參與者的互聯網連接斷開連接,甚至當它只是在數據和Wifi之間切換時,參與者的連接狀態不會改變。它仍然顯示參與者已連接,直到您呼叫另一位參與者的離開房間。但是你現在不能發送任何消息! – Uzi

+0

我有同樣的問題,是的,實現RoomStatusUpdateListener回調作爲@Teyam建議並沒有幫助。當對等體失去連接時,API不調用任何回調。我打算通過在客戶端上設置看門狗定時器來解決這個問題,這些客戶端反覆ping對方以查看它們是否仍然連接。 – nradk

相關問題