2010-01-07 1 views
2

использовал этот сайт в течение длительного времени, чтобы найти ответы, теперь нужно спросить себя! :)GKPeerState Доступно для не существующих сверстников?

Я внедрил многопользовательскую игру для своей игры, используя подход GKSession и клиент/сервер, не используя peer picker (до 4 игроков).

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

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

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

У кого-нибудь был опыт? Любая идея обходных решений?

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

ответ

1

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

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

+1

Одним из решений является не использование режима «сервер/клиент», а использование однорангового режима, который все еще может быть выполнен как сервер/клиент. В этом случае проблема кэширования сверстников отсутствует. Как я его фиксировал, когда я загружаю список доступных серверов, если одно и то же имя появляется снова, я заменяю существующий в списке. Я обнаружил, что фамилия одного и того же партнера всегда является «правильной». Конечно, это не устраняет проблему, если хост недоступен, но все же появляется как доступный. Я боюсь, что для этого нет никаких проблем, если вы не используете режим одноранговой сети. – Ernest