Мар 9, 2020

Мультиплеер в дополненной реальности

Frame 1 1 1 - Мультиплеер в дополненной реальности

Приложения и игры с дополненной реальностью — увлекательный способ провести время. Производители игр, используя AR-технологии, стараются максимально полностью погрузить пользователей в игру, дополняя физический мир виртуальными объектами. Таким образом мы можем получить новый игровой опыт, взаимодействуя сразу на двух уровнях: виртуальном и реальном. Наверняка многие хотели бы разделить эту радость с друзьями и играть вместе. Однако для создателей приложений мультиплеер — довольно сложная в реализации опция. Мы расскажем о сложностях реализации мультиплеера в AR в этой статье.

Frame 2 16 1 1024x341 - Мультиплеер в дополненной реальности

Единая карта мира для всех пользователей

Сперва AR-устройство определяет карту мира для пользователя с помощью уже знакомого нам SLAM. Изначально каждый игрок видит только свою карту мира. SLAM примерное определяет расстояние между предметами, чтобы потом уточнять карту.

Как только подключается новый игрок, устройству первого пользователя необходимо провести калибровку, чтобы определить новое местоположение относительно пространства и объектов. Так, нужно собрать контрольные точки с разреженных (Sparse) карт в едином формате. После, эти данные должны передаться в облако или же между устройствами. Это не сложно реализовать с технической точки зрения, однако существует множество мелочей, которые нужно учесть для правильной работы мультиплеера.

Frame 2 15 2 1024x341 - Мультиплеер в дополненной реальности

Устройствам нужно убедиться, что игроки находятся рядом. А в случае, если игроки продолжают сохраненную ранее сессию, устройства заново определяют координаты мира. Сложность здесь в том, что GPS на разных устройствах легко может давать разные данные.

Вернемся к передаче Sparse карт. На данный момент нет стандартного способа их передачи. Каждый фреймворк создает свой способ, который никак не подходит для других устройств. Например у ARKit для этого есть ARWorldMap, который позволяет сохранить AR карту мира и восстановить данные отображения после закрытия приложения.

Но даже с правильной системой координат и форматами, устройства могут распознавать расстояния на 3D-карте по-разному. В зависимости от производителя, угла камеры, акселерометра и калибровки датчиков, карта на разных устройствах будет больше или меньше.

Релокализация

Что касается технических препятствий для многопользовательских AR-игр, релокализация — один из самых сложных моментов. Когда новый пользователь присоединяется к игре, ему нужно найти себя на карте: вычислить свою карту, рассчитать местоположение, определить контрольные точки. После происходит самый сложный процесс, который и называется релокализацией — карта игрока сопоставляется по контрольным точкам с общей картой, чтобы совместить миры.

Frame 2 18 1 1024x341 - Мультиплеер в дополненной реальности

Сложности с релокализацией появляются, когда игроки стоят друг напротив друга, что в игре происходит довольно часто. В этот момент устройства не могут определить ни одной контрольной точки. Чтобы такого не случалось, многие AR-игры в начале сессии просят игроков стать рядом. Это вполне неплохое решение, но оно урезает свободу игроков.

Копирование SLAM-карт для всех устройств ограничение обзора пользователей — не единственные методы релокализации:

  1. Компас и GPS. Просто положитесь на GPS обоих устройств игроков и используйте широту и долготу как систему координат. Это самый простой метод, и, конечно, не самый эффективный. Один и тот же объект может располагаться на абсолютно разном расстоянии у каждого игрока. Такой UX может не понравится пользователям.
  2. Маркеры. Хотя это довольно устаревший метод трекинга, но для некоторых проектов он отлично работает. Например они подойдут для AR-инсталяций в музеях или же для настольных игр с дополненной реальностью. Так как все пользователи смотрят, например, на поле, такой подход решает сразу несколько проблем: не надо ничего передавать и синхронизировать, и поле может служить удобной системой координат.
  3. Разместить объекты в случайном порядке или локализировать пользователя заново. Такой метод позволяет устройству просто вновь отсканировать окружающую среду и предметы вместо того, чтобы искать знакомые контрольные точки. Если приложение будет спроектировано таким образом, никто и не заметит, что устройство потерялось и воссоздает мир заново.

Изменения в реальном времени

В AR-играх и приложениях пользователи взаимодействуют с предметами, могут передвигать их или, например, стрелять. И все это должно отражаться у каждого из пользователей в реальном времени. При этом, устройства вычисляют свое положение и передает эти данные другим. Все эти действия необходимо синхронизировать.

Для этого есть два работающих способа: передавать данные через интернет на облака или передавать их между устройствами пользователей. Так для ARCore используют облака, а для ARKit — фреймворк Multipeer Connectivity.

Frame 2 17 1 1024x341 - Мультиплеер в дополненной реальности

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

Многопользовательское или peer-to-peer подключение — структура, которая обнаруживает сервисы, предоставляемые ближайшими устройствами, и поддерживает связь с ними посредством передачи данных на основе сообщений, потоковых данных и ресурсов, например, файлов. Multipeer Connectivity передает карты и изменения без подключения к интернету с меньшими ошибками. Также этот способ значительно дешевле облака. Однако минусов у него достаточно: маленькие карты, низкая скорость, мультиплеер работает максимум для шести девайсов.

Подведем итоги

Как видите, существует множество вариантов добавления мультилеера в вашу игру или приложение. Хоть сейчас мультиплеер в играх не доведен до идеала и корпорациям есть еще над чем работать, играть с друзьями или другими пользователями — это то, чего действительно ждут люди от AR. На это стоит обратить внимание, особенно с точки зрения бизнеса.