GKTurnBasedMatch в новой игре Могу ли я ждать, пока другой игрок не примет мое приглашение?

Я пишу многопользовательскую часть пошаговой игры, использую игровой центр для управления матчами. Начиная новую игру с GKTurnBasedMatch, не отправляйте немедленно уведомление о приглашении другому игроку. Чтобы отправить уведомление, я должен сделать свой ход и завершить первый поворот... Могу ли я изменить это поведение? Я хочу сделать свой первый ход, только если другой игрок уже принял мое приглашение.

2 ответа

Решение

Вы можете проверить status собственность другого участника, который имеет класс GKTurnBasedParticipant, Если его статус продолжает оставаться GKTurnBasedParticipantStatusInvited, запретите себе открывать игровой контроллер и отображать предупреждение.

GKTurnBased Участная документация

Один из способов сделать это - добавить значение в NSData, скажем, int, которое запоминает номер поворота. Запустите свою игру, затем немедленно завершите свой ход, ничего не показывая пользователю. Все, что он делает, это увеличивает номер хода. Когда другой игрок соглашается, если номер хода говорит о втором ходу, снова увеличивайте номер хода и заканчивайте свой ход. Продолжайте эту схему конца-приращения-конца до тех пор, пока первый игрок не получит ход назад, затем начните играть в обычном режиме, когда все игроки приняли приглашения и официально присоединились к игре.

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

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