我正在实现Google Play游戏服务的实时多人游戏。
目前,如果我在一个客户端上关闭WIFI,则另一个客户端无法检测到连接已断开。没有调用PeerDisconnect事件。
1 - API是否提供任何内容来检查对等方是否仍然连接?
2 - 是否有任何方法让玩家重新连接到房间?
我正在实现Google Play游戏服务的实时多人游戏。
目前,如果我在一个客户端上关闭WIFI,则另一个客户端无法检测到连接已断开。没有调用PeerDisconnect事件。
1 - API是否提供任何内容来检查对等方是否仍然连接?
2 - 是否有任何方法让玩家重新连接到房间?
1 - API是否提供检查对等方是否仍然连接的功能?
如连接玩家中所述,您可以使用RoomStatusUpdateListener
回调来监视参与者的连接状态。如下所述:
要在所有玩家连接时收到通知,您的游戏可以使用
RoomUpdateListener.onRoomConnected()
回调。您的游戏还可以使用RoomStatusUpdateListener
回调来监视参与者的连接状态。根据参与者的连接状态,您的游戏可以决定是否开始或取消游戏会话。
2 - 是否有任何方法让玩家重新连接到房间?
实时多人游戏- 游戏过程中指出:
一旦满足房间所需的参与者数量,该房间被视为“已填充”,并且游戏过程可以开始。参与者加入房间后,您的游戏可以允许他们离开房间(从而将其排除在游戏之外)。但是,“已填充”的房间不允许新的玩家加入(即使是为了填补参与者离开的位置)。
此外,参考实时多人游戏的最佳实践:
如果您没有适当地离开房间,则Google Play游戏服务将继续向客户端发送事件和邀请通知。每当发生以下情况之一时,您应该离开活动房间:
- 游戏过程结束(例如,玩家赢得比赛)。
- 当您的游戏进入后台时。
- 在Android上,当:
- 玩家在等待室UI中取消游戏时。
onActivityResult()
回调中返回的响应代码为GamesActivityResultCodes.RESULT_LEFT_ROOM
。- 调用
disconnect()
并离开房间。Activity的onStop()
被调用。这可能表明您的Activity正在被销毁。
希望这些链接涵盖了您所有的问题。祝编码愉快! :)