Работает ли GameKit на самом деле сватовство?

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

Рассмотрим трех игроков: A, B и C. A приглашает B в матч и оставляет третий слот открытым. С выбирает совпадение для трех игроков.

Теперь, когда B обрабатывает приглашение от A (в силу того, что зарегистрировал invitHandler в GKMatchmaker), он связывается с хост-сервером для подключения и устанавливает состояние готовности своего игрока. Затем игрок A получит сообщение делегата для matchmakerViewController:didReceiveAcceptFromHostedPlayer: о том, что B подключился. В игре с двумя игроками B может начать игру и продолжить. Вместо этого нажатие на кнопку "Играть сейчас" заставляет собравшегося дождаться прибытия третьего игрока.

Тем временем Игрок C выбрал автоматическое добавление в матч. Если A и B также попросили добавить их автоматически, все три затем будут уведомлены о совпадении через делегат matchmakerViewController:didFindPlayers: метод. Однако вместо этого нажатие кнопки "Воспроизвести сейчас" заставляет собравшегося ждать... вечно. Игрок А тоже ждет... навсегда. Игрок B знает только о приглашающем, игроке A, поэтому он теоретически может попытаться начать игру, но это будет бессмысленно, поскольку A знает только о некоторых участниках.

Мне трудно поверить, что система может иметь такой катастрофический недостаток, но я запустил этот сценарий и проследил все методы делегатов, представленные в соответствующих классах GameKit, и когда игроки переходят в состояние бесконечного ожидания, нет делегировать сообщения отправлено. Это как если бы GameCenter полностью не знал о существовании A и B, что помогло бы объяснить, почему A должен явно пометить B как присутствующий в контроллере представления, несмотря на то, что он был явно видимым "достаточно", чтобы получить приглашение в первую очередь., Я также пытался сделать так, чтобы игрок C запрашивал только игру для двух игроков, полагая, что, возможно, это означало, что игрок A считается только одним "видимым" игроком.

Кто-нибудь имеет какой-либо прямой опыт работы с этим API и может прямо заявить, что он работает (или не работает) для этого варианта использования? Это серьезная проблема для меня; это в значительной степени означает, что я должен выбросить свой код создания матчей на основе GameKit и написать что-то полностью с нуля.

Заранее спасибо за любую информацию.

0 ответов

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