Я кодировал приложение Bomberman, которое использует одноранговое соединение GameKit. Проблема в том, что через некоторое время игра перестает синхронизироваться.
Я посмотрел пример кода для GKTanks и использовал их модель. Между пирами нет отношения клиент / сервер, поэтому я не использовал его в своей игре. Оба партнера поддерживают состояние игры, которое они обновляют на основе полученных данных.
У меня есть NSTimer, который используется для запуска игрового цикла в каждом кадре. NSTimers не синхронизированы, поэтому иногда игровые состояния становятся другими, например: игроки получают включение примерно в одно и то же время, и оба получают включение, потому что для отправки данных требуется некоторое время.
Буду признателен за любую идею о том, как заставить приложение работать. Я думаю о переписывании кода для использования клиент-сервер, но я не уверен, что это хорошая идея ... пока
Спасибо!
РЕДАКТИРОВАТЬ: я изменил код, так что случайный игрок выбран в качестве хоста.
Каждый раз, когда игрок кладет бомбу, он спрашивает сервер, где ее разместить. Сервер возвращает позицию игрока (как видно на сервере), а затем сообщает игроку, где разместить бомбу.
Для бонусов сервер проверяет, получил ли игрок бонусы и посылает ли он пакет, информирующий его.
Теперь появилась другая проблема. Задержка между устройствами высока (я использую соединение Bluetooth). После того, как клиент нажал на кнопку, чтобы разместить ее, требуется около 0,2 секунды, чтобы разместить бомбу.
Я отправляю все данные надежно. Я правильно это делаю?