AR/VR
Multiplayer XR
В 2021 году Microsoft продала Пентагону 120 000 гарнитур HoloLens 2 за USD 21,88 миллиарда - ключевое применение не игры, а совместное тактическое планирование: несколько солдат видят одну и ту же AR-карту местности с живыми данными. Это и есть мультиплеерный XR - не развлечение, а координация людей в общем виртуальном пространстве.
- **Meta Horizon Workrooms** позволяет до 16 аватаров работать за одним виртуальным столом, видеть одни и те же документы и доски, с позиционным звуком - голос коллеги слышен с его стороны стола
- **Niantic Lightship** (Pokemon GO, Ingress) строит глобальную карту визуальных якорей из данных 100+ миллионов устройств - каждый игрок, сканирующий местность, улучшает общую карту для co-location
- **Apple Vision Pro** Spatial Personas: двое пользователей видят трёхмерные аватары друг друга в общем пространстве с синхронизацией движений головы и рук в реальном времени
Shared Spaces
Самая сложная задача мультиплеерного XR - не сеть, не рендеринг, а соглашение о реальности. Когда два человека в разных городах стоят у одного виртуального стола, их гарнитуры должны согласовать систему координат с точностью до сантиметра - иначе виртуальная рука одного участника проходит сквозь плечо другого. Shared space - это общее трёхмерное пространство, в котором несколько пользователей существуют одновременно, видят одни и те же объекты на одних и тех же позициях и взаимодействуют с общим состоянием.
Два принципиально разных типа shared spaces: **Remote shared** - пользователи в разных локациях, координаты синхронизируются через сервер, реальный мир у каждого свой. **Co-located** - пользователи физически в одном помещении, гарнитуры должны найти общую систему координат через облачные якоря или прямое peer-to-peer согласование. Co-located технически сложнее и требует физической близости участников.
В чём ключевое техническое отличие remote shared space от co-located shared space?
Networking для XR
XR создаёт экстремальные требования к сети: позиции голов и рук обновляются 90 раз в секунду, задержка выше 50 мс ощущается физически - у пользователей начинается motion sickness. Стандартный HTTP REST для мультиплеерного XR неприменим - нужны специализированные протоколы с минимальной overhead и предсказанием позиции на стороне клиента. В 2023 году Meta Horizon Worlds поддерживал до 32 аватаров одновременно - каждый передаёт 6DoF позицию + 26 суставов рук + голосовые данные.
Ключевые техники XR networking: **Dead reckoning** - предсказание позиции по скорости и ускорению, чтобы скрыть задержку сети. **Interpolation** - плавная интерполяция между полученными снапшотами. **State Authority** - только один клиент (хозяин объекта) пишет авторитетное состояние, остальные читают. **Interest management** - отправлять обновления только о тех объектах, которые видит конкретный пользователь (LOD для сети).
Зачем в XR-мультиплеере нужен dead reckoning?
Co-location
Co-location - когда несколько человек в одной комнате видят одни и те же AR-объекты в точных реальных позициях - это то, что превращает AR из личного гаджета в коллаборативный инструмент. Ikea в 2022 году протестировала систему: дизайнеры и клиенты одновременно видели мебель в реальной комнате через разные гарнитуры и смартфоны. Ключевая сложность: каждая гарнитура инициализируется в своей системе координат - нужен механизм, чтобы все устройства 'договорились' об общем origin.
Методы co-location alignment: **QR-маркер** - все устройства сканируют одну физическую метку, её позиция становится origin (просто, но требует маркер). **LiDAR mesh matching** - сравнение 3D-карт помещения между устройствами (работает без маркеров, вычислительно дорого). **Cloud Anchors** - первое устройство загружает feature points в облако, остальные находят тот же физический объект через сервер (Google ARCore, Apple ARKit). **UWB ranging** - сверхширокополосные сигналы для точного измерения расстояний между устройствами (точность 10 см, требует специального железа).
Какой метод co-location выравнивания не требует физических маркеров и специального железа?
Cloud Anchors
Cloud Anchor - это сохранённая в облаке привязка к физическому месту в реальном мире: не GPS-координата, а детальная карта визуальных признаков (feature map) конкретной поверхности или объекта. Когда устройство снимает помещение, сервер (Google ARCore Geospatial API или Apple ARKit) сравнивает видимые признаки с сохранёнными и вычисляет точную позицию и ориентацию. Persistence означает, что якорь не исчезает при перезапуске приложения - пользователь может вернуться через день и увидеть AR-объекты на тех же местах.
**Lifecycle Cloud Anchor**: Hosting (первое устройство создаёт якорь, загружает feature map) -> Storage (облачный сервер хранит 1-365 дней) -> Resolving (другие устройства находят якорь, получая transform в своей системе координат). Точность: Google утверждает менее 1 см при хорошем освещении и достаточном текстурном разнообразии поверхностей. На однородных поверхностях (белая стена) точность падает катастрофически.
Cloud Anchors используют GPS для геопривязки AR-объектов
Cloud Anchors хранят детальные карты визуальных признаков (feature maps) конкретных физических поверхностей - это компьютерное зрение, а не GPS
GPS даёт точность 3-5 метров - для AR-объектов это неприемлемо. Feature maps позволяют достичь сантиметровой точности, но работают только если камера видит достаточно текстурированные поверхности.
Когда точность Cloud Anchors резко снижается?
Ключевые идеи
- **Shared space** требует не только сетевой синхронизации, но и согласования систем координат - особенно сложно для co-located сценариев, где каждая гарнитура строит свой origin
- **XR networking** работает с жёсткими latency constraints: выше 50 мс - motion sickness, поэтому нужны dead reckoning, интерполяция и State Authority паттерн для минимизации roundtrip
- **Cloud Anchors** - мост между сеансами и устройствами: feature map физического места, сохранённый в облаке, позволяет AR-объектам оставаться на месте между сессиями и быть видимыми разными устройствами
Связанные темы
Multiplayer XR строится на фундаменте трекинга и хаптики:
- Haptics и Multimodal Input — В мультиплеере haptic feedback должен синхронизироваться с действиями других участников - дополнительное измерение latency
- XR Tracking — Точность трекинга каждой гарнитуры напрямую определяет точность co-location выравнивания
Вопросы для размышления
- При 32 аватарах в одном XR-пространстве каждый передаёт 90 обновлений позиции в секунду - как масштабировать серверную инфраструктуру, и при каком количестве участников стоит перейти с полного mesh к звёздной топологии?
- Co-location через Cloud Anchors работает только при хорошем освещении и текстурированных поверхностях - как спроектировать fallback для тёмных помещений или однородных стен в корпоративном приложении?
- Если XR-коллаборация заменяет физические встречи, как обеспечить психологическое присутствие - ощущение, что другие участники действительно 'рядом', а не просто аватары на экране?