Створення кастомних систем частинок для мобільних AR ігор

Наша компанія з розробки відеоігор веде незалежні проекти, спільно з клієнтом створює ігри та надає додаткові операційні послуги. Досвід нашої команди дозволяє нам охопити всі ігрові платформи та розробити приголомшливий продукт, що відповідає баченню клієнта та перевагам гравців.

Від імерсивних застосунків до ігрових світів і 3D-сцен

Наша виділена команда для VR/AR/MR-розробки, Unity-продакшну і 3D-моделювання та анімації — з власними кейсами і презентаціями.

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

Наші компетенції

Які етапи розробки гри?

Останні роботи

  • image_games_mortal_motors_495_0.webp
    Розробка гри для компанії Mortal Motors
    696
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Покрокова стратегія у фентезі сеттингу With Fire And Sword
    879
  • image_games_second_team_604_0.webp
    Розробка ігри для компанії Second term
    504
  • image_games_phoenix_ii_606_0.webp
    3D-анімація – тизер для гри phoenix 2.
    543

id: 239 slug: custom-particle-systems-for-mobile-ar-games title_ua: "Створення кастомних систем частиць для мобільних AR-ігор" tags: [vr-ar]

Створення кастомних систем частиць для мобільних AR-ігор

Стандартний Particle System у Unity з 500 частинками та одним Renderer — це нормально для мобільного AR. Але як тільки додаєш ефект вибуху з 2000 частинками, кількома текстурами в Sub-Emitters та Collision з AR-поверхнею — Adreno 618 упадає до 22 FPS, а iPhone 13 дихає рівно. Оптимізація систем частиць у AR — це робота з обмеженнями конкретного залізо, а не просто «зроби красиво».

Де теряється продуктивність у AR-частицях

Overdraw — головний ворог на мобільних GPU. Кожна напівпрозора частинка перекриває попередню, й GPU виконує blending для кожного перекриття. 500 частиць з Alpha Blend у режимі Overlay — це потенційно 500 × (середнє перекриття) операцій blending за кадр. На tiled GPU (Adreno, Mali) overdraw >3x у зоні ефекту — помітний удар по GPU time.

Рішення — Additive blending замість Alpha Blend там, де це можливо. Additive не читає destination buffer — лише пишає сумування, що швидше. Для вогню, світіння, магічних ефектів — ідеально. Для диму та реалістичних хмар — Additive виглядає неприродно, там потрібен Alpha Blend з обмеженою кількістю частиць.

Collision з AR-поверхнею — дорога операція. Particle System → Collision → Type: World з Collision Quality: High змушує кожну частинку проходити фізичний raycast кожен кадр. 1000 частиць з World Collision = 1000 raycasts/кадр. На мобільному це катастрофа.

Для AR-сцен краще працює Collision Type: Planes — задаємо кілька площин вручну, що відповідають AR-поверхням. Площини оновлюємо від ARPlane компонентів з AR Foundation при виявленні нових поверхонь. Не всі фізичні деталі, але продуктивність у 10 разів краща.

Draw Calls від кількох Renderer-ів. Кілька Particle System з різними матеріалами — це кілька Draw Calls, які не батчатися. GPU Instancing для Particle System включається через Material.enableInstancing = true, але працює лише коли частинки не прозорі або Additive — для Alpha Blend GPU Instancing неефективна через вимогу сортування.

Кастомні підходи та інструменти

Visual Effect Graph (VFX Graph) — обчислення частиць на GPU. Ідеальна для ПК та консолей, але мобільна підтримка обмежена: потрібна Compute Shader, доступна лише на Metal (iOS A12+) та Vulkan (Android API 28+). Старі пристрої не потягнуть. Якщо таргет — mid-range Android, VFX Graph не підходить.

Burst Compiler + Job System для CPU частиць. Якщо частинки керуються скриптом (не стандартним Particle System), можна перенести логіку на IJobParallelFor з Burst. Це дає 5–15x прискорення порівняно з Mono, звільняючи основний потік.

LOD для систем частиць через ParticleSystemRenderer.maxParticleSize та динамічне зменшення emission.rateOverTime залежно від дистанції до AR-об'єкта. На дистанції >3 метрів від AR-маркера зменшуємо кількість частиць вдвоє — незаметно візуально, але зменшує overdraw.

Texture Sheet Animation замість кількох текстур. Один Sprite Sheet 512×512 з 16 кадрами анімації замість 16 окремих текстур — один Material, один texture sample, працює в рамках одного Draw Call.

З конкретного проекту: AR-гра для iOS з ефектами магії на AR Foundation. Спочатку три Particle System на один ефект з Alpha Blend, World Collision, Sub-Emitters — iPhone 12 тримав 45–50 FPS замість цільових 60. Після переходу на Additive + Planes Collision + об'єднання в один Renderer з Texture Sheet — 60 FPS stable. Візуальна якість знизилася незначно, що пройшло непомічене в плейтестах.

Інтеграція з AR Foundation

Частинки повинні коректно взаємодіяти з AR-оточенням:

  • Позиціонування ефектів на ARPlane через Pose з ARRaycastHit
  • Occlusion: частинки повинні скриватися за реальними об'єктами. Реалізується через ARKit/ARCore Occlusion (AROcclusionManager) — при включеному Human/Environment Occlusion частинки автоматично маскуються глибиною реального світу
  • Освітлення: AREnvironmentProbeManager генерує Light Probe з оточення у реальному часі — частинки з Lighting Mode: Scene Color підхоплюють реальне освітлення, що поліпшує вписанність ефекту в AR-сцену

Етапи роботи

Аналіз вимог. Список ефектів, цільові пристрої, вимоги до visual fidelity.

Технічне проектування. Вибір Particle System vs VFX Graph, стратегія по overdraw, collision approach.

Розробка ефектів. Створення з оптимізацією «з нуля», не переробка під обмеження post-factum.

Профілювання. Unity Profiler + Xcode Instruments / Android GPU Inspector на цільових пристроях.

Інтеграція з AR Foundation. Прив'язка до AR-поверхонь, occlusion, освітлення.

Кількість ефектів Орієнтовні строки
3–5 базових ефектів 1–2 тижні
10–15 ефектів з AR-інтеграцією 3–5 тижнів
Складні системи з GPU Instancing та VFX Graph 1–2 місяці

Вартість розраховується після обговорення списку ефектів та цільових пристроїв.