Многопользовательский автоматический матч Google не сработает для более чем одного противника.

Я столкнулся со странной проблемой. В моей многопользовательской игре пользователь решает, с каким количеством противников он хочет играть (до 3), и после того, как он решил, я создаю критерий autoMatchCriteria, подобный этому.

Bundle am = RoomConfig.createAutoMatchCriteria(opponentCount, opponentCount, 0);

И создать комнату

// build the room config:
        RoomConfig.Builder roomConfigBuilder = makeBasicRoomConfigBuilder();
        roomConfigBuilder.setAutoMatchCriteria(am);
        RoomConfig roomConfig = roomConfigBuilder.build();

        // create room:
        Games.RealTimeMultiplayer.create(((MainActivity) getActivity()).getGoogleApiClient(), roomConfig);

Это вызывает RoomUpdateListener onJoinedRoom() или onRoomCreated() соответственно. И пока пользователь ждет в waitRoom, он получает обновления статуса комнаты в RoomStatusUpdateListener onPeersConnected(), когда одноранговый пользователь подключается и после подключения минимально необходимых игроков может начаться игра.

Но когда пользователь выбирает более одного противника, onPeersConnected() вызывается только один раз, если вообще, и подключенный игрок продолжает ждать бесконечно, пока они не покинут комнату.

Я попробовал это с пользовательским интерфейсом в комнате ожидания Google, и, как ни странно, это работало с ним для каждого оппонента.

Так что, если кто-то может указать мне на то, что я делаю неправильно, была бы отличная помощь. Спасибо.

1 ответ

Исходя из этой темы, если вы установите min на 1 и max на 3, вы можете получить игру для 2 игроков. Чтобы иметь игроков до 3, установите MIN_OPPONENTS а также MAX_OPPONENTS до 3, и обрабатывать логику запуска игры из вашего кода. Если логика усложняется, имеет смысл выбрать "сервер". Вы можете сделать это, например, сказав, что клиент с наименьшим идентификатором участника (лексикографически) является сервером. Сказать "кто бы ни создал игру - это сервер" - нехорошо, потому что при автоматическом сопоставлении все думают, что создали игру. Надеюсь это поможет!

Другие вопросы по тегам