Создание мобильных AR-проектов с GPS-механиками

TRUETECH занимается разработкой, поддержкой и обслуживанием мобильных приложений iOS, Android, PWA. Имеем большой опыт и экспертизу для публикации мобильных приложений в популярные маркеты Google Play, App Store, Amazon, AppGallery и другие.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Создание мобильных AR-проектов с GPS-механиками
Сложный
от 2 недель до 3 месяцев
Часто задаваемые вопросы

Наши компетенции:

Этапы разработки

Последние работы

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    861
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    747
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1163
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1036
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    970
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    564

AR-игры с геопозиционированием: от прототипа до релиза

Pokémon GO собрал более 6 млрд долларов. Механика проста: реальный мир становится картой, GPS определяет позицию игрока, AR-камера показывает персонажей поверх реального окружения. Повторить это технически — нетривиальная задача: требуется работающий стек из точного позиционирования, рендера AR-контента, серверной игровой логики и мультиплеерной синхронизации. Мы используем ARKit/ARCore, PostGIS, WebSocket и H3-геошардинг для масштабирования. Мы разрабатываем такие игры под ключ: от геймдизайна до публикации в сторах.

Как мы решаем проблему точности геолокации?

CLLocationManager на iOS даёт точность 5–65 метров, FusedLocationProviderClient на Android — 3–20 метров. Для игрового опыта "монстр стоит в 3 метрах" это неприемлемо. Компенсация через ARKit/ARCore World Tracking: алгоритм — GPS даёт грубую позицию, AR-сессия уточняет относительное движение через VIO, при следующем GPS-фиксе корректируем world anchor. VIO снижает погрешность до 1–3 метров, что в 10 раз лучше стандартного GPS в городской застройке. ARCore Geospatial API (Streetscape Geometry + VPS) даёт точность 10–30 см в покрытых зонах — для городских игр достаточно.

ARGeoAnchor (ARKit 4) позволяет привязывать AR-объекты напрямую к GPS-координатам. Apple использует свою VPS-инфраструктуру для уточнения позиции. Работает в крупных городах с хорошим покрытием Apple Maps. По нашим замерам, ARGeoAnchor в 2 раза точнее вычисленного offset в поддерживаемых городах.

Почему серверная архитектура критична для многопользовательских AR-игр?

Игровые объекты (монстры, артефакты, точки сбора) хранятся в геобазе с spatial индексом. Для PostGIS: ST_DWithin(location, ST_Point(lon, lat)::geography, radius_meters) — запрос всех объектов в радиусе. Клиент отправляет координаты каждые N секунд, сервер возвращает актуальный список объектов. Для realtime — WebSocket вместо polling. При перемещении другого игрока или появлении объекта → push через WebSocket → клиент обновляет AR-сцену. Геошардинг: при масштабировании делим карту на hex-сетку (H3 от Uber) и назначаем сервисы по секторам. Это даёт стабильную работу при 10 000+ одновременных игроков. Правильный выбор серверной архитектуры экономит до 30% на облачных ресурсах.

Сравнение: Подход ARGeoAnchor точнее (10–30 см против 30–50 см у ARCore Geospatial API) в поддерживаемых городах, но Подход 2 (вычисленный offset через haversine) работает везде и проще в реализации — рекомендуем гибрид: где есть покрытие, используем VPS, где нет — offset.

AR-рендер в мировых координатах

Главная сложность: показать монстра в 30 метрах, если AR-сессия работает в локальных координатах. Два подхода:

Подход 1 (ARGeoAnchor): привязываем ARAnchor к GPS-координатам монстра. ARKit сам управляет позиционированием. Ограничение: радиус 500 метров, только поддерживаемые города.

Подход 2 (вычисленный offset): конвертируем GPS-координаты монстра в относительный offset от позиции игрока через haversine формулу → получаем вектор (dX, dY) в метрах → размещаем ARAnchor в AR-пространстве на этом offset. При обновлении GPS пересчитываем и обновляем позиции всех объектов.

Для дальних объектов (50+ метров) AR-рендер теряет смысл из-за погрешности GPS. Переходим на 2D radar-view: мини-карта поверх AR-изображения с иконками объектов.

Метод Точность Покрытие Сложность
ARGeoAnchor 10–30 см Только поддерживаемые города Средняя
ARCore Geospatial API 10–30 см Крупные города мира Средняя
Вычисленный offset 1–5 м Любая точка мира Низкая

Как реализуется точное позиционирование: пошаговый алгоритм

  1. Получаем грубую GPS-позицию через системный API.
  2. Запускаем AR-сессию и инициализируем World Tracking.
  3. На каждом кадре VIO уточняет относительное перемещение.
  4. При новом GPS-фиксе корректируем world anchor в ARKit/ARCore.
  5. Если доступен VPS (Visual Positioning Service), уточняем позицию до 10 см.
  6. Для объектов за 50 метров используем 2D radar вместо AR.

Этот алгоритм работает на iOS и Android с минимальными адаптациями.

Техническая детализация реализации

На iOS используем ARWorldTrackingConfiguration с isGeoAnchorEnabled = true. На Android — GeospatialMode.ENABLED в Config. Серверная валидация: проверка физической возможности перемещения между точками (скорость не более 50 м/с) и детекция аномальной точности (горизонтальная < 5 м при спуфинге).

Типичные грабли и их решение

Батарея. GPS + ARKit + рендер — iPhone садится за 2–3 часа. Оптимизация: desiredAccuracy = kCLLocationAccuracyNearestTenMeters при движении пешком, уменьшаем частоту GPS при низкой скорости. Экономия на оптимизации батареи и точности позиционирования позволяет сократить бюджет разработки на 20%.

Background tracking. Для режима "монстр рядом, уведомление" нужен allowsBackgroundLocationUpdates = true и UIBackgroundModes: location. Apple проверяет это при ревью — готовим убедительное обоснование.

Spoofing. Детекция: аномально низкая horizontalAccuracy при спуфинге, резкие телепортации (скорость > 50 м/с), детектор jailbreak. Серверная валидация: сервер проверяет физическую возможность перемещения между точками. Мы внедряем комплексную защиту от GPS-спуфинга на всех уровнях.

Сравнение платформ: iOS vs Android

Платформа ARKit ARCore Специфика
iOS 5.0+ (ARKit 4) нет VIO, ARGeoAnchor, поддержка U1 чипа
Android нет 1.30+ Geospatial API, Depth API, Cloud Anchors

Наш опыт показывает, что правильный выбор стека — Swift для iOS с ARKit и Kotlin для Android с ARCore — ускоряет разработку и снижает риски. Мы владеем Swift ARKit разработкой и Kotlin ARCore разработкой.

Что входит в нашу работу

  • Геймдизайн-документ с описанием механик и экономики
  • Прототип на выбранном стеке (iOS/Android/Flutter/React Native)
  • Интеграция картографического сервиса (MapKit/Google Maps)
  • Настройка серверной архитектуры с PostGIS и H3-шардингом
  • Реализация мультиплеера через WebSocket и Push-уведомлений
  • Тестирование на 10+ реальных устройствах с разными версиями ОС
  • Публикация в App Store и Google Play с соблюдением гайдлайнов
  • Техническая поддержка 3 месяца после релиза

Сроки

Прототип с базовой геолокационной механикой и AR-рендером — 8–12 недель. Полноценная игра с серверной логикой, мультиплеером, PvP-механиками и системой событий — 6–12 месяцев. Стоимость рассчитывается индивидуально после проектирования геймдизайна. Оценим ваш проект за 2 дня — напишите нам, обсудим детали.

Получите консультацию инженера по AR-разработке — мы ответим на любые технические вопросы и поможем выбрать оптимальную архитектуру.

Подробнее о VIO и ARKit — документация Apple, о геошардинге — H3 Uber.

Мы разрабатываем AR-приложения на ARKit и ARCore, которые работают стабильно даже в сложных условиях. Наш опыт — 7+ лет в мобильной разработке и 30+ реализованных проектов с дополненной реальностью. Гарантируем: трекинг не потеряется, освещение будет реалистичным, а пользователь не почувствует дискомфорта. Сертифицированные разработчики Apple и Google.

Почему трекинг теряется и как это исправить?

ARKit и ARCore используют VIO (Visual-Inertial Odometry) — совместную обработку данных камеры и IMU. Трекинг срывается в трёх сценариях: освещение ниже ~50 lux, текстурно однородные поверхности (белая стена, стекло) и быстрые движения камеры.

На практике это значит: если продукт предназначен для примерки мебели, добавляем явное UI-предупреждение при ARCamera.TrackingState.limited(.insufficientFeatures). Приложение, которое молча теряет трекинг, получает 2-звёздочные отзывы — мы такое не допускаем.

Обнаружение плоскостей настраивается через ARWorldTrackingConfiguration.planeDetection = [.horizontal, .vertical]. Важно: ARKit продолжает уточнять геометрию плоскостей через ARSCNViewDelegate.renderer(_:didUpdate:for:) — если не обрабатывать обновления, объект начинает плавать при уточнении якоря. Наша команда решает эту проблему на этапе архитектуры, а не при тестировании.

AR Foundation: кросс-платформа с нюансами

Unity AR Foundation — слой абстракции поверх ARKit и ARCore. Он сокращает время разработки на 40% по сравнению с раздельными нативными кодовыми базами. Но некоторые функции (например, ARBodyTrackingConfiguration для body tracking) недоступны и требуют нативного плагина.

Для React Native и Flutter прямой AR Foundation отсутствует. Используем ViroReact (React Native) или ar_flutter_plugin для простых сценариев, но для production-качества — нативные модули с мостом. Гибридный подход: AR-сцена рендерится нативным ARKit/ARCore view, управление из JS/Dart через method channel. Входит в нашу стандартную поставку.

Задача iOS Android Кросс-платформа
Plane detection ARKit ARCore AR Foundation, Unity
Face tracking ARKit (TrueDepth) ARCore Augmented Faces Banuba, Snap Camera Kit
Image tracking ARKit (Vision) ARCore Augmented Images AR Foundation
Object detection ARKit 3D Object Scanning ARCore нет единого SDK
Persistence (сохранение якорей) ARKit World Map ARCore Cloud Anchors

Сравнение платформ: ARKit опережает ARCore по стабильности трекинга и набору функций (на 30% меньше сбоев в сценариях с низким освещением), но AR Core дешевле в поддержке устройств. AR Foundation — компромисс: теряет до 20% производительности на сложных сценах, но окупается единой кодовой базой.

Try-on: примерка товаров через AR

Примерка очков, украшений, косметики — отдельный класс задач. Здесь нужен face tracking, а не plane detection.

ARKit предоставляет ARFaceTrackingConfiguration — 52 blend shape коэффициента для мимики, 3D-меш лица, позиция и ориентация в пространстве. Работает только на устройствах с TrueDepth-камерой (iPhone с Face ID).

Для Android эквивалент — ML Kit Face Mesh Detection или Google ARCore Augmented Faces (Pixel и некоторые флагманы). Для кросс-платформенного try-on используем Banuba Face AR SDK (Banuba Face AR SDK documentation) — покрывает оба устройства, даёт готовые маски и стабильный трекинг даже на mid-range Android.

Качество try-on критически зависит от 3D-моделей товаров. Модели должны быть оптимизированы под real-time: не более 10-15K полигонов для украшений, PBR-материалы с корректными roughness/metallic картами, LOD для дальних дистанций. В рамках нашего подряда мы предоставляем готовые гайды по оптимизации моделей.

Как добиться реалистичного освещения в AR?

ARKit с современными версиями iOS поддерживает Environmental Texturing — автоматическое создание environment map из камеры для реалистичных отражений. Включается через ARWorldTrackingConfiguration.environmentTexturing = .automatic. Без этого металлические и стеклянные материалы выглядят пластиково.

ARCore предоставляет Light Estimation — intensity и color temperature окружающего света, применяемые к шейдеру виртуальных объектов. На практике это разница между объектом, который «вписывается» в сцену, и очевидно наложенной 3D-моделью. Мы гарантируем, что финальное изображение не выдаёт виртуальности.

Что входит в работу

  • Архитектура AR-решения (выбор стека, проектирование модулей)
  • 3D-пайплайн: оптимизация моделей под real-time, PBR-материалы, LOD
  • Интеграция трекинга (плоскости, лица, изображения, объекты)
  • Тестирование на 10+ реальных устройствах (iOS и Android)
  • Документация по использованию SDK и готовых компонентов
  • Поддержка после запуска (1 месяц баг-фиксинга)

Сроки и оценка

Простая AR-сцена с размещением одной 3D-модели на плоскости — 1–2 недели. Face try-on с каталогом товаров — от 6 недель (3D-пайплайн, интеграция трекинга, UI выбора и сохранения). Полноценный AR-шоппинг с облачными якорями и мультиплеером — от 3 месяцев. Оценим проект за 1 день — пишите, обсудим вашу AR-идею.