Я сделал простую игру, которая подключается к другим узлам с помощью GKSession из GameKit. Настроить было несложно, но я обнаружил некоторые проблемы:
Задержка сильно различается. Иногда сообщение приходит мгновенно на другие устройства. Иногда задержка для отправки данных другим одноранговым узлам составляет> 1 секунды. Данные - это всего лишь строка из 10 символов.
Моя игра зависит от точной синхронизации часов. В игре играет музыка, и это звучит странно, когда она не запускается одновременно на всех подключенных устройствах.
Я не смог найти в документации ничего о том, как снимать хронометраж. Проблема в том, что "главный" пирс, который запускает игру, немедленно начинает воспроизводить музыку, а затем все остальные пирсы получают сообщение немного позже и, таким образом, начинают воспроизведение после задержки.
Затем я попытался отложить воспроизведение игровой музыки после отправки стартового сообщения на все пирсы, но иногда задержка ниже или выше, и я просто не могу получить хорошую надежную синхронизацию.
Существует ли платформа с открытым исходным кодом, которая делает одноранговую и синхронизацию более надежной и простой в использовании на iOS?