AR-мультиплеер: синхронизация пространства на iOS и Android
Два человека в одной комнате видят один и тот же AR-объект с разных углов. Звучит просто. На практике — это синхронизация AR-пространств двух устройств, каждое из которых живёт в своей системе координат, плюс latency сети, плюс drift позиционирования. Без правильной архитектуры игровая фигура у первого игрока будет в метре от того места, где её видит второй. Наш опыт показывает: большинство проблем решается выбором подходящего стека синхронизации — от простого peer-to-peer до server-authoritative архитектуры.
Как синхронизировать AR-пространства на разных платформах?
ARKit — Collaborative Session. С iOS 13 ARKit поддерживает ARCollaborationData — бинарные пакеты с feature points и anchor информацией, которыми устройства обмениваются напрямую. Через MultipeerConnectivity (Bonjour, peer-to-peer Wi-Fi/Bluetooth) или через собственный relay-сервер. Каждое устройство строит общую карту пространства, объекты на ARAnchor синхронизируются автоматически.
// Отправляем collaboration data другим участникам
func session(_ session: ARSession, didOutputCollaborationData data: ARSession.CollaborationData) {
let encoded = try? NSKeyedArchiver.archivedData(withRootObject: data,
requiringSecureCoding: true)
sendToPeers(encoded)
}
Ограничение: работает только iOS–iOS, нет Android. Для кроссплатформы нужно другое решение.Источник: документация ARKit
Технические детали ARCollaborationData
`ARCollaborationData` содержит `featurePoints`, `anchors` и `tracking state`. Размер пакета ~50–200 КБ. Частота отправки — 10–30 раз в секунду. Подробнее в [документации Apple](https://developer.apple.com/documentation/arkit/arcollaborationdata).ARCore — Cloud Anchors. Google предоставляет серверную инфраструктуру: ARCore Cloud Anchors — hostCloudAnchor() загружает feature map якоря в облако, возвращает cloudAnchorId. Второй пользователь вызывает resolveCloudAnchor(cloudAnchorId) — получает тот же якорь в своём пространстве. Через него синхронизируем позиции всех shared-объектов. Работает iOS (ARCore SDK for iOS) ↔ Android. Использование Cloud Anchors сокращает затраты на серверную инфраструктуру до 40%.
Unity + Photon + ARDK (Niantic Lightship). Для геймдев-проектов часто правильнее взять Niantic Lightship ARDK — нативная поддержка shared AR spaces, мультиплеер через Photon, кроссплатформа. Но это Unity, не нативная разработка.
| Технология | Платформы | Синхронизация | Задержка | Применение |
|---|---|---|---|---|
| ARKit Collaborative Session | iOS только | Peer-to-peer, локальная сеть | 10–50 мс | AR-приложения в одной комнате |
| ARCore Cloud Anchors | iOS + Android | Relay через облако | 100–300 мс | Кросс-платформенные проекты |
| Niantic Lightship + Photon | iOS + Android | Relay-сервер | 50–200 мс | AR-игры с высокой нагрузкой |
Почему мы выбираем server-authoritative физику?
Если AR-объекты имеют физику (шарик катится, кубики падают) — нужна авторитетная физическая симуляция. Для 2–4 игроков server-authoritative подход увеличивает нагрузку на сервер на 20–30%, но исключает рассинхронизацию. Варианты:
- Server-authoritative: сервер (headless) симулирует физику, клиенты получают состояния и интерполируют. Исключает читерство, требует мощного сервера.
- Client prediction + rollback: клиент предсказывает результат локально, сервер подтверждает или откатывает. Сложнее в реализации, но лучше по UX.
Для casual AR-игр достаточно client-side физики с периодической синхронизацией через state snapshot.
Как избежать типичных ошибок в AR-мультиплеере?
| Ошибка | Последствия | Решение |
|---|---|---|
| Использование только iOS-решения без учёта Android | Потеря 40% аудитории | Закладывать кроссплатформенность с архитектуры |
| Отсутствие interpolation на клиенте | Рывки объектов из-за задержки | Реализовать dead reckoning и сглаживание |
| Игнорирование drift | Разъезд якорей через 30 с | Периодическая коррекция через Cloud Anchors или серверный авторитет |
Применение interpolation сокращает видимую задержку на 50–100 мс.
Что входит в работу
- Архитектурная документация (выбор стека синхронизации, схема сети)
- Репозиторий с кодом (Swift/Kotlin/Flutter/Unity)
- Интеграция ARKit/ARCore и сетевого модуля
- Настройка CI/CD пайплайна для тестирования на реальных устройствах
- Инструкция по деплою в App Store / Google Play
- Обучение команды заказчика (1–2 дня)
- Техническая поддержка 1 месяц после релиза
Процесс работы
Реализация проходит 5 этапов:
- Аналитика — выясняем сценарии использования, количество игроков, платформы, требования к латентности.
- Проектирование — выбираем стек (ARKit vs ARCore vs Unity), архитектуру синхронизации (state sync vs delta sync), протокол (WebSocket/WebRTC).
- Реализация — пишем код, интегрируем AR-слой и сетевой слой, настраиваем interpolation и dead reckoning.
- Тестирование — на реальных устройствах в реальном пространстве. CI/CD с Xcode Cloud / Firebase Test Lab, но финальное QA физически.
- Деплой — публикация в магазины приложений, мониторинг crash reports и метрик.
Сроки и стоимость
- Базовый shared AR с Cloud Anchors для двух игроков — 4–7 недель.
- Мультиплеерная AR-игра с серверной синхронизацией, несколькими комнатами и физикой — 3–6 месяцев.
- Стоимость рассчитывается индивидуально. Получите консультацию — мы оценим ваш проект за один рабочий день.
Закажите разработку AR-мультиплеера прямо сейчас — наши инженеры оценят проект за один день. Свяжитесь с нами, чтобы обсудить ваш проект. Наши инженеры имеют опыт 10+ лет в мобильной разработке и выполнили 20+ AR-проектов. Гарантируем стабильную синхронизацию и соблюдение сроков.







