Использование битовой маски для автоматизации игроков в Android-разработке

Я пытаюсь автоматизировать игроков на основе выбранных ими критериев. Для простоты игроку может быть присвоен уровень 1, 2 или 3. Если игрок уровня 3 и хочет играть только с другими противниками уровня 3, как это сделать? Я читаю страницу за страницей из руководств и справочников Google. В нем говорится, что битовая маска может использоваться для установки критериев. В своих испытаниях мне удавалось сопоставлять игроков только тогда, когда их битовые маски дополняют друг друга до 2, как указано в документации Google.

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

Таким образом, если у двух игроков одинаковая битовая маска (то есть одинаковые критерии), они НЕ будут сопоставлены. Каково решение? Если они сопоставляются на основе дополнения 2, как мне это реализовать? Кто получает «обычную» битовую маску, а кто — дополнение? Я не понимаю.

Я могу дать пользователям возможность создать игру:

мой уровень ---- уровень, против которого я хочу играть

1 1 0 ---- 1 1 0 (ноль означает «да», поэтому мой уровень == 1 и я готов играть только на уровне 1)

Наряду с возможностью найти игру:

уровень для игры ---- мой уровень

0 0 1 ---- 0 0 1 (играем против 1 уровня, а я 1 уровень)

Это нормально, но затем QuickGame выстреливает, потому что либо...

1) два человека на одном уровне не будут совпадать, как в:

0 0 0 ---- 0 0 1 и 0 0 0 ---- 0 0 1 (НЕТ СОВПАДЕНИЙ, оба уровня 1 и готовы играть с кем угодно)

2) или если в QuickGame все нули, они будут соответствовать тому, кто хочет играть ТОЛЬКО на уровне 3, как в:

0 0 0 ---- 0 0 0 и 0 1 1 ---- 0 1 1 (QuickGame играет с кем угодно и создает игру уровня 3 ТОЛЬКО против уровня 3 - это совпадение, и это неправильно)

Каково решение?


person MrClicks    schedule 24.08.2013    source источник


Ответы (1)


Дайте шанс public RoomConfig.Builder setVariant (int variant)
С помощью setVariant вы можете создавать комнаты для разных уровней игроков.

person think-Android    schedule 26.08.2013
comment
Я подумал об этом. К сожалению, это не сработает. Вариант будет соответствовать только другому варианту. Это было бы хорошо для Уровня 1 против Уровня 1. Однако я хотел, чтобы игроки могли выбирать противников для игры с несколькими уровнями. Пользователь A: уровни 1, 2 и 3. Пользователь B: уровни 1 и 2. Пользователь A должен совпадать с пользователем B, но не может при использовании вариантов. Я все еще ищу способ. :( - person MrClicks; 15.11.2016