GKPeerStateAvailable для несуществующих пиров? - PullRequest
2 голосов
/ 07 января 2010

долгое время пользовался этим сайтом для поиска ответов, теперь нужно спросить у себя! :)

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

У меня есть одна большая проблема, решение которой я не могу найти.

Если вы отключите / переподключите одноранговый сервер достаточно быстро, клиентский клиент «запомнит» этот хост и будет постоянно отображать его в списке всех доступных одноранговых узлов, только отключение Wi-Fi / Bluetooth сбрасывает это.

Так что, если я сделаю это 5 раз подряд, мой клиент покажет 5 доступных хостов с одинаковым именем!

Кто-нибудь имел опыт работы с этим? Есть идеи об обходных путях?

Следует отметить, что для моей игры требуются iPhone SDK 3.0 для Bluetooth и 3.1 для Wifi, поскольку GKSession теперь поддерживает оба.

1 Ответ

1 голос
/ 10 февраля 2010

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

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

...