Быстрая игра с критериями игрока - многопользовательские игры в реальном времени для Android и Google Play

В настоящее время я разрабатываю многопользовательскую игру в реальном времени для Android, и у меня работает пример ButtonClicker. Я думаю, что опция «быстрая игра» (или, может быть, она называется автоматом) — это как раз то, что мне нужно. Но мне нужно что-то вроде этого: я хотел бы, чтобы игрок сыграл матч со случайным игроком с его уровня. Видите ли, в моей игре у каждого игрока будет уровень, и эти уровни и связанные с ними игроки, возможно, будут храниться в базе данных. Я хочу, чтобы у игрока была быстрая игра только с игроками его уровня. Можно ли сообщить такие критерии по быстрой игре? Что мне делать?

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


person user2997681    schedule 09.04.2014    source источник


Ответы (2)


Чтобы ограничить автоматизацию между игроками, вы можете использовать вариант варианта при создании конфигурации комнаты, т.е. RoomConfig.Builder#setVariant(int).

Чтобы ограничить приглашения, я думаю, вам придется создать свою собственную активность «пригласить игрока», с которой я менее знаком. Вероятно, вам придется запросить друзей игрока, а затем сопоставить этот список с каждым из их «уровней» и отфильтровать его до тех, кто находится на том же уровне, прежде чем показывать его в действии. Похоже, API Players имеет несколько методов с которым вы сможете взаимодействовать, и, надеюсь, будет содержать идентификатор, который вы используете в своей базе данных на основе уровней.

Роб

person Rob D O'Connell Jr    schedule 10.04.2014
comment
Спасибо за вопрос. Я знал о методе выше, но я до сих пор не знаю, какие целые числа я могу ему передать. И я думаю, что метод create(GoogleApiClient, RoomConfig), который использует вариант setVariant, не является методом, который я могу объявить и изменить. Это похоже на метод, который я могу только вызвать. Можете ли вы сказать мне, как я могу использовать setVariant, чтобы добиться того, чего хочу? - person user2997681; 11.04.2014
comment
Я думаю, что единственный критерий автоматической настройки, который я могу создать с помощью Google API, — это максимальное и минимальное количество игроков. Есть ли способ создать новый критерий? - person user2997681; 11.04.2014
comment
setVariant(int) можно использовать, чтобы ограничить автоматизацию. - person Rob D O'Connell Jr; 11.04.2014
comment
Только два игрока, запрашивающие автоматч с одним и тем же вариантом значения int, будут объединены в пары. Таким образом, я предполагаю, что уровень ваших игроков идеально подходит для этого варианта. Когда вы создаете конфигурацию комнаты, вызовите этот метод setVariant, передав текущий уровень игрока. Это ограничит автоматическое сопоставление любых игроков, пытающихся выполнить автоматизацию в это время. RoomConfig.Builder rtmConfigBuilder = RoomConfig.builder(strategy); rtmConfigBuilder.setVariant(variant); .... Games.RealTimeMultiplayer.create(apiClient, rtmConfigBuilder.build()); - person Rob D O'Connell Jr; 11.04.2014
comment
большое спасибо за ваш ответ! Я попробую. Спасибо большое, я и не знал, что так можно. Это действительно помогло ^^ - person user2997681; 11.04.2014

Когда вы создаете свой RoomConfig для подбора партнеров, вы можете указать AutoMatchCriteria. API просто использует битовую маску, поэтому вам решать, какие данные вы помещаете в эту битовую маску:

создатьКритерииАвтоматч

exclusiveBitMask: эксклюзивные битовые маски для запроса на автоматизацию. Логическое И каждой пары автоматических запросов должно равняться нулю для автоматического сопоставления. Если для игры нет требований к эксклюзивности, это значение следует просто установить на 0.

В вашем случае это может содержать диапазон уровней для соответствия.

Вы можете увидеть его использование в примере кода здесь: Разработка многопользовательских игр в реальном времени< /а>.

person Goose    schedule 13.11.2014