【问题标题】:onDisconnectedFromRoom() called when invited player leaves game受邀玩家离开游戏时调用 onDisconnectedFromRoom()
【发布时间】:2014-11-29 07:04:59
【问题描述】:

我与其他 2 名玩家(均直接受邀)创建了一个实时多人游戏。我是这样做的:

创建玩家选择意图

Intent intent = Games.RealTimeMultiplayer.getSelectOpponentsIntent(getApiClient(), 1, MAX_PLAYERS);
startActivityForResult(intent, REQ_GOOGLE_INVITE);

onActivityResult() 上执行了这个:

private void onPlayersInvited(Intent data) {
    // get the invitee list
    final ArrayList<String> invitees = data.getStringArrayListExtra(Games.EXTRA_PLAYER_IDS);

    Bundle autoMatchCriteria = RoomConfig.createAutoMatchCriteria(1, 5, 0);

    // create the activeRoom and specify a variant if appropriate
    RoomConfig.Builder roomConfigBuilder = makeBasicRoomConfigBuilder();
    roomConfigBuilder.addPlayersToInvite(invitees);
    roomConfigBuilder.setAutoMatchCriteria(autoMatchCriteria);
    RoomConfig roomConfig = roomConfigBuilder.build();
    Games.RealTimeMultiplayer.create(getApiClient(), roomConfig);

    // prevent screen from sleeping during handshake
    getWindow().addFlags(WindowManager.LayoutParams.FLAG_KEEP_SCREEN_ON);
}


private RoomConfig.Builder makeBasicRoomConfigBuilder() {
    return RoomConfig.builder(this).setMessageReceivedListener(this).setRoomStatusUpdateListener(this).setSocketCommunicationEnabled(true)
            .setVariant(subcategory.getId().intValue());
}

我的游戏在所有 3 台设备上都开始了,但是当我在一台受邀设备上与游戏断开连接时,主机设备上的 onDisconnectedFromRoom() 会被调用,所以我猜游戏会自动取消,这很可悲,因为我会喜欢继续游戏,直到出现所需的最少玩家人数。

有没有办法防止这种情况发生?

【问题讨论】:

    标签: android google-play-games


    【解决方案1】:

    在 onDisconnectedFromRoom() 回调中你会得到 Room 对象。你可以通过调用来查看有多少玩家留在房间里

    int count = room.getParticipantIds().size();
    

    如果玩家人数超过最低限度,则继续游戏。

    【讨论】:

    • 但是,即使调用了 onDisconnectedFromRoom(),这个用户还会继续收到其他玩家的消息吗?
    • 您可以轻松测试它。在调用 onDisconnectedFromRoom() 之后尝试发送数据。
    • 您是否实现了 RoomStatusUpdateListener 的其他方法?
    • 我确实实现了它们。
    • 调用了 onPeersDisconnected() 也无法正常工作,并且从现在开始主机参与者在房间中处于断开状态...
    【解决方案2】:

    奇怪的行为是由设置 AutomatchCryteria 引起的。我删除了它,现在它表现良好

    【讨论】:

      猜你喜欢
      • 2018-06-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多