Уявіть: ви запускаєте 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 | ★★ | ★★★★★ | ★★★★★ |
Керування в 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 оновлюється асинхронно — поки меш перебудовується, pathfinding-граф застаріває. Наше рішення: граф навігації оновлювався кожні 3 секунди на background thread через GCD, а юніти використовували закешований граф. Юніт у процесі руху перевіряв колізію з поточним мешем через raycast — так ловили ситуації «меш змінився, юніт йде крізь стіну». Це скоротило час розробки на 40%.
FPS тримався на 60 на iPhone 13. На iPhone 11 падав до 45 при 6+ юнітах. Рішення: LOD для віддалених юнітів (спрощені меші), вимкнення тіней за межами 0.5 метра. У результаті стабільні 60 FPS на обох пристроях.
Покроковий процес розробки AR-механіки
- Аналітика та прототипування: Визначаємо ключові механіки, тестуємо на реальному пристрої.
- Проектування архітектури: Вибір стеку (RealityKit/SceneKit/Unity), проектування фізики та AI.
- Реалізація: Створення механік, інтеграція жестів, робота з трекінгом.
- Оптимізація: LOD, кешування, профілювання FPS.
- Тестування: Перевірка на різних пристроях, у різних умовах освітлення.
- Деплой: Публікація в 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 тижні |
Вартість розраховується після детального обговорення механік. Отримайте консультацію — зв'яжіться з нами для оцінки.







