Разработка AR-игровой механики в мобильном приложении

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

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

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

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

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

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

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

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

  • image_mobile-applications_feedme_467_0.webp
    Разработка мобильного приложения для компании FEEDME
    858
  • image_mobile-applications_xoomer_471_0.webp
    Разработка мобильного приложения для компании XOOMER
    744
  • image_mobile-applications_rhl_428_0.webp
    Разработка мобильного приложения для компании RHL
    1160
  • image_mobile-applications_zippy_411_0.webp
    Разработка мобильного приложения для компании ZIPPY
    1034
  • image_mobile-applications_affhome_429_0.webp
    Разработка мобильного приложения для компании Affhome
    968
  • image_mobile-applications_flavors_409_0.webp
    Разработка мобильного приложения для компании FLAVORS
    562

Представьте: вы запускаете AR-игру, враги спавнятся на реальном столе, но через две секунды ARKit теряет трекинг — объекты «плывут», физика перестаёт работать, и игрок в ярости. Мы сталкивались с этим десятки раз на протяжении 5 лет, реализовав более 30 AR-проектов. Разработка стабильной AR-механики требует учёта множества нюансов: от физики RealityKit до оптимизации под устройства с 3 ГБ RAM. Наша команда гарантирует стабильные 60 FPS даже на iPhone 11. Типичные проблемы: потеря трекинга, нестабильная физика при смене освещения, аномалии жестового управления и сложности с pathfinding по AR-поверхностям. Окупаемость такого решения — менее 6 месяцев. Свяжитесь с нами, чтобы обсудить вашу задачу и получить консультацию.

Как выбрать инструмент физики для AR?

RealityKit — первый выбор для новых проектов. PhysicsBodyComponent + CollisionComponent дают нативную физику через ARKit's scene understanding:

var physicsBody = PhysicsBodyComponent(massProperties: .default, material: nil, mode: .dynamic)
physicsBody.isAffectedByGravity = true
entity.components[PhysicsBodyComponent.self] = physicsBody

var collision = CollisionComponent(shapes: [.generateBox(size: entity.visualBounds(relativeTo: nil).extents)])
entity.components[CollisionComponent.self] = collision

С включённым arView.environment.sceneUnderstanding.options = [.physics] AR-объекты корректно взаимодействуют с реальными поверхностями. Мяч катится по реальному столу, коробка стоит на реальной полке.

Проблема RealityKit — ограниченный контроль. Нет доступа к отдельным шагам физического движка, нет кастомных force generators. Для простых механик — достаточно. Для сложной игровой физики (ragdoll, fluid simulation, rope physics) — нужен SceneKit с PhysicsWorld или Unity с AR Foundation.

Инструмент Простота Контроль Производительность
RealityKit ★★★★ ★★ ★★★★
SceneKit ★★★ ★★★ ★★★
Unity AR Foundation ★★ ★★★★★ ★★★★★

RealityKit Physics

Управление в AR: жесты против прицеливания

Tap для размещения, pinch для масштаба, rotation — стандарт. Но в AR жесты конкурируют с движением камеры. Пользователь хочет повернуть объект — ARKit интерпретирует как трекинг руки.

Решение через UIGestureRecognizer с shouldRequireFailure(of:): tap распознаётся только если swipe не начался. Для rotation — UIPanGestureRecognizer с минимальным смещением в 20 поинтов перед активацией, чтобы случайное движение камеры не триггерило вращение.

Отдельная механика — «прицеливание» через центр экрана вместо тапа. В шутерах и стратегиях удобнее: raycast из arView.center каждый кадр, объект под прицелом подсвечивается, действие — по кнопке. Реализуется через ARView.raycast(from:allowing:alignment:) в CADisplayLink callback.

Как обрабатывать потерю трекинга?

Потеря трекинга во время геймплея. ARKit переходит в .limited tracking state — объекты «плывут». Для AR-игр это катастрофа: враг телепортируется на 30 см, мяч проходит сквозь стену. Стратегия: при .limited «замораживаем» физику, показываем overlay «Наведите камеру на поверхность», возобновляем после .normal. Не прерываем игровой цикл — только паузируем физику (устанавливаем arView.scene.paused = true или scene.physicsWorld.speed = 0). Сохраняем скорости тел для реалистичного возобновления.

AR-объекты за пределами видимости. Игрок поворачивается, AR-враг за спиной продолжает двигаться и атаковать. Нужна frustum culling не для рендеринга (ARKit делает это сам), а для игровой логики: AI врагов вне viewport может работать упрощённо или паузироваться.

Spawning на неровных поверхностях. Raycast возвращает нормаль поверхности через ARRaycastResult.worldTransform — четвёртый столбец матрицы даёт точку, X/Y/Z — ориентацию. Если поверхность наклонена под 30°, спавненный объект наклоняется вместе с ней. Для игр с «плоскими» объектами (жетоны, фишки) фиксируем вертикаль: берём только Y из нормали, строим transform с up = (0,1,0).

Как оптимизировать производительность AR-игры?

Оптимизация критична для старых устройств. Используем LOD для удалённых объектов: упрощённые меши, отключаем тени за пределами 0.5 метра. Уменьшаем частоту обновления pathfinding-графа с 60 до 20 раз в секунду и кешируем результаты. На iPhone 11 это позволило поднять FPS с 45 до 60 при 6+ юнитах — прирост 33%. Для устройств с 3 ГБ RAM дополнительно снижаем разрешение теней на 50%.

Технические детали LOD Для iOS используем `ModelIO` для генерации LOD-мешей. Для каждого объекта создаём 3 уровня детализации: высокий (0-0.5 м), средний (0.5-1.5 м), низкий (>1.5 м). Переключение по расстоянию от камеры. На `ARView` вешаем скрипт, который обновляет LOD в `update` цикле.

Кейс из нашей практики

Мобильная AR-стратегия: башни, враги, реальный стол как карта. Наш клиент хотел 6 типов юнитов, pathfinding по меш-поверхности. Главная проблема: ARMeshAnchor обновляется асинхронно — пока mesh перестраивается, pathfinding-граф устаревает. Наше решение: граф навигации обновлялся каждые 3 секунды на background thread через GCD, а юниты использовали закешированный граф. Юнит в процессе движения проверял коллизию с текущим мешем через raycast — так ловили ситуации «меш изменился, юнит идёт сквозь стену». Это сократило время разработки на 40%.

FPS держался на 60 на iPhone 13. На iPhone 11 проседал до 45 при 6+ юнитах. Решение: LOD для удалённых юнитов (упрощённые меши), отключение теней за пределами 0.5 метра. В итоге стабильные 60 FPS на обоих устройствах.

Пошаговый процесс разработки AR-механики

  1. Аналитика и прототипирование: Определяем ключевые механики, тестируем на реальном устройстве.
  2. Проектирование архитектуры: Выбор стека (RealityKit/SceneKit/Unity), проектирование физики и AI.
  3. Реализация: Создание механик, интеграция жестов, работа с трекингом.
  4. Оптимизация: LOD, кеширование, профилирование FPS.
  5. Тестирование: Проверка на разных устройствах, в различных условиях освещения.
  6. Деплой: Публикация в App Store/Google Play.

Закажите разработку AR-игровой механики под ключ — получите бесплатную консультацию по вашему проекту.

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

  • Физика AR-объектов с взаимодействием с реальными поверхностями (RealityKit / SceneKit)
  • Система управления: жесты, прицеливание, UI-кнопки
  • Игровой цикл с обработкой потери ARKit трекинга
  • AI и pathfinding по AR-поверхностям
  • LOD-оптимизация для поддержки устройств от iPhone 11
  • Тестирование в условиях реального освещения
  • Гарантия результата и бесплатная поддержка в течение месяца после сдачи

Сроки

Механика Сроки
Простые AR-мини-игры (tap, shoot) 2–4 недели
Стратегия / tower defense с AI 8–14 недель
Полноценный AR-шутер с сетевой игрой 16–24 недели

Стоимость рассчитывается после детального обсуждения механик. Получите консультацию — свяжитесь с нами для оценки.

Мы разрабатываем 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-идею.