我与其他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(),所以我猜游戏会自动取消,这很难过,因为我&#39 ; d喜欢继续游戏,直到最小所需数量的玩家出现。
有没有办法防止这种情况?
答案 0 :(得分:2)
在onDisconnectedFromRoom()回调中,您获得Room对象。您可以通过拨打
来查看有多少玩家留在房间里int count = room.getParticipantIds().size();
如果玩家超过最小值,则继续游戏。
答案 1 :(得分:1)
通过设置AutomatchCryteria引起了奇怪的行为。我删除它,现在它表现良好