2015-10-18 3 views
2

Я развиваю многопользовательскую игру через Game Center.Специальная свадьба в игровом центре

Итак, у меня есть игроки с разными группами (некие кланы). Для всех матчей требуется ровно 2 игрока. Как я могу делать матчи только для игроков с разными группами?

Например:

Clan 1 + Clan 2 = true;

Clan 5 + Clan 5 = false;

Clan 5 + Clan 6 = true;

Я знаю, что есть playerGroup собственности, но она выполняет прямо противоположную вещь :(

ответ

2

playerAttributes свойства запрос соответствия должен иметь возможность t делай то, что хочешь. Это 32-битная маска, которая, если установлена ​​на ненулевое значение, игроки будут только запускаться в игру, если они завершат маску (OR'd вместе) до 0xFFFFFFFF. См. Здесь an example.

Однако проблема заключается в том, что вы указываете, что у вас гораздо больше кланов, чем у игроков. Если у вас есть 6 и определить их как:

#define CLAN1 0xFF00000F 
#define CLAN2 0xFF0000F0 
#define CLAN3 0xFF000F00 
#define CLAN4 0xFF00F000 
#define CLAN5 0xFF0F0000 
#define CLAN6 0xFFF00000 

Тогда комбинация OR-нут только двух игроков никогда полностью не достигнет 0xFFFFFFFF. Я думаю, что вы можете делать то, что хотите, инвертируя маски, и используя 0 вместо 1, чтобы определить нужную роль.

#define CLAN1 0xFFFFFFF0 
#define CLAN2 0xFFFFFF0F 
#define CLAN3 0xFFFFF0FF 
#define CLAN4 0xFFFF0FFF 
#define CLAN5 0xFFF0FFFF 
#define CLAN6 0xFF0FFFFF 

Любые двое из разных кланов ИЛИ вместе как 0xFFFFFFFF. Итак, желая игрового центра (который всегда является безусловным предложением), любые два игрока из разных кланов должны соответствовать; однако два игрока из одного клана не должны.

Примечание: я, вероятно, указываю на очевидное здесь, но заметьте, что у вас может быть до 32 разных кланов, если вы определяете их в двоичном, а не в шестнадцатеричном формате, и таким образом используете один бит для каждого клана. Я использовал только шестнадцатеричные числа для удобочитаемости.

+0

Возможно, вы выбрали правильный вариант, но как-то Game Center не начал матч в атрибутах таких игроков. – demon9733

+0

Вы делаете матч в реальном времени или пошаговое соответствие? – Thunk

+0

Это матч в реальном времени. И я узнал об этом: 'FFFF0000 | 0000FFFF = работает отлично' 'FFF00000 | 000FFFFF = работает отлично' 'FFF00000 | 00FFFFFF = не работает' 'WHATEVER | FFFFFFFF = работает отлично' – demon9733

Смежные вопросы