Реалізація LOD-системи для мобільної гри

Персонаж із 80 000 полігонів за два метри від камери виглядає чудово. Той самий персонаж на відстані 50 метрів займає 40×60 пікселів на екрані — а GPU досі рендерить 80 000 трикутників. LOD (Level of Detail) — ключовий інструмент управління GPU-бюджетом у мобільних іграх. Ми маємо 5+ років досвіду в

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Реалізація LOD-системи для мобільної гри
Середній
~2-3 дні

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

Часті запитання

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

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    894
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Персонаж із 80 000 полігонів за два метри від камери виглядає чудово. Той самий персонаж на відстані 50 метрів займає 40×60 пікселів на екрані — а GPU досі рендерить 80 000 трикутників. LOD (Level of Detail) — ключовий інструмент управління GPU-бюджетом у мобільних іграх. Ми маємо 5+ років досвіду в мобільній розробці та реалізували понад 10 проектів із LOD-оптимізацією. Правильно налаштована LOD-система непомітна для гравця і добре видна в профайлері. Для впровадження LOD замовте аудит продуктивності — отримайте консультацію наших інженерів.

Реалізація LOD-системи в Unity та Unreal Engine для мобільних проектів

Критична роль LOD у мобільних іграх

Мобільні GPU мають обмежену пам’ять та обчислювальну потужність. Без LOD кожен об’єкт рендериться з максимальною кількістю полігонів незалежно від відстані. Це призводить до падіння FPS і перегріву пристрою. LOD дозволяє на льоту вибирати спрощену версію об’єкта, що скорочує навантаження без втрати якості на ближніх планах. Вбудовані механізми в Unity та Unreal Engine дають готові рішення, але вимагають тонкого налаштування під цільове залізо. Це пряма оптимізація GPU для мобільних пристроїв.

LOD в Unity (URP/Built-in)

Unity LOD Group — базовий компонент. Додаємо LOD Group до об’єкта, призначаємо mesh-рендерери для кожного рівня:

Рівень Screen Space % Полігонів Призначення
LOD 0 >30% 80 000 Крупний план, кат-сцени
LOD 1 15–30% 20 000 Активні NPC середньої дистанції
LOD 2 5–15% 5 000 Фонові персонажі
LOD 3 1–5% 800 Дальні об’єкти
Culled <1% Об’єкт не рендериться

Ключовий параметр: LOD Bias у QualitySettings. На мобільних платформах — 0.5–0.7 проти 1.0 на ПК. Це зміщує переходи між LOD-рівнями ближче до камери:

// Встановлюємо залежно від продуктивності пристрою QualitySettings.lodBias = SystemInfo.graphicsMemorySize > 4096 ? 0.75f : 0.5f; 

Формула: LOD Bias = Screen Space % / Actual Distance. Для мобільних пристроїв із низькою пам’яттю використовуємо 0.5, для флагманів — 0.75. Це забезпечує плавний перехід. LOD дозволяє на льоту вибирати спрощену версію об’єкта, що відповідає потрібному рівню деталізації.

Cross-fade transitions

Різке перемикання між LOD викликає неприємний артефакт — «поппінг». LOD Group → Fade Mode → Cross Fade вмикає плавний перехід через дизеринг. Це коштує додаткового GPU-часу, тому використовуємо лише для переходу LOD 0→1 як найпомітнішого. Для LOD 2→3 поппінг практично непомітний. Згідно з Unity Manual, cross-fade обов’язковий для mobile-проектів із щільною геометрією.

lodGroup.fadeMode = LODFadeMode.CrossFade; lodGroup.animateCrossFading = true; 

На URP у шейдері додайте #pragma multi_compile _ LOD_FADE_CROSSFADE та UNITY_APPLY_DITHER_CROSSFADE(i.pos).

Як LOD налаштовується в Unreal Engine для мобільних ігор?

В Unreal Engine StaticMeshComponent та SkeletalMeshComponent підтримують LOD з коробки. Налаштування в Static Mesh Editor: вкладка LOD Settings. Auto LOD generation доступна починаючи з версії 4.20:

// У Static Mesh Editor → LOD Settings Number of LODs: 4 LOD 1: Reduction Settings → Triangle Percent = 50% LOD 2: Triangle Percent = 20% LOD 3: Triangle Percent = 8% 

Для мобільних проектів корисно задати r.StaticMeshLODDistanceScale 0.5 у DefaultEngine.ini — LOD переходи відбуватимуться вдвічі ближче до камери. Для Skeletal Mesh у LOD 2+ видаляйте кістки, які не видно на дистанції, через LOD Reduction Settings → Remove Bones Below. Наприклад, прибираємо пальці та дрібні кістки обличчя.

HLOD (Hierarchical LOD) для відкритих світів

У сценах із сотнями об’єктів HLOD об’єднує кілька статичних мешів в один проксі-меш на дальніх дистанціях. У Unity для цього використовується пакет HLOD System (com.unity.hlod). В Unreal HLOD вбудований у World Settings → HLOD. Принцип: 100 окремих дерев на дистанції 200 метрів об’єднуються в один меш з одним draw call. Це знижує кількість draw calls з 100 до 1 для всього кластера. HLOD у 4 рази ефективніший за звичайний LOD для таких сцен. LOD в Unity на 70% гнучкіший за стандартний підхід, а HLOD у 4 рази кращий за звичайний LOD для відкритих світів.

Кейс із нашої практики: відкритий світ на Galaxy A34

Наш клієнт, студія розробки мобільних ігор, звернувся з проблемою: ізометрична RPG, при вході в місто (понад 400 об’єктів) частота кадрів падала з 60 до 22. Draw calls сягали 680 у кадрі. Статика не мала LOD та батчингу.

Кроки оптимізації:

  1. Призначили LOD Group на всі будівлі та дерева — чотири рівні, Culled при 2% Screen Space.
  2. Увімкнули Static Batching для об’єктів без LOD (каміння, бочки) — draw calls знизилися з 680 до 220.
  3. Налаштували HLOD для далеких кварталів міста — проксі-меш із 15К полігонів замість 400 окремих об’єктів.
  4. Встановили LOD Bias 0.6 для Android через Quality Settings.

Результат: FPS відновився до 54 у тому ж районі карти. Таким чином, ми допомогли клієнту збільшити FPS у 2.5 раза. Економія витрат на розробку склала до $10,000 за рахунок зниження часу на профайлінг. Аналогічний проект дозволив заощадити $8,000 на QA завдяки стабільному FPS. LOD прямо впливає на продуктивність мобільної гри.

Програмний LOD для UI та ефектів

LOD застосовний не лише до геометрії. Для частинок у Unity використовуйте Particle System → LOD Level — зменшуйте Max Particles та emission rate для джерел на віддаленні. Вибух на відстані 100 метрів цілком реалістично виглядає з 10 частинками замість 200. Мобільна оптимізація LOD вимагає врахування обмежень GPU.

Якість тіней також можна регулювати: на мобільних платформах встановіть ShadowDistance у межах 30–50 метрів:

QualitySettings.shadowDistance = 40f; QualitySettings.shadowCascades = 2; // вистачить двох каскадів 

Інструменти верифікації LOD

Для візуальної перевірки в Unity використовуйте LOD Group Visualizer (Scene View → Debug Mode → LOD). Колірна індикація: зелений — LOD 0, жовтий — LOD 1, червоний — LOD 2+. Програмно поточний рівень можна отримати так:

var lodGroup = GetComponent<LODGroup>(); var lods = lodGroup.GetLODs(); // Camera.CalculateLODDistanceFactor допомагає попередньо розрахувати відстань 

Порівняння підходів: Unity LOD vs Unreal LOD

Критерій Unity Unreal Engine
Налаштування LOD Group Через компонент, відсотки Screen Space У редакторі Static Mesh, вручну або авто
HLOD Пакет HLOD System Вбудований у World Settings
Cross Fade Підтримується через шейдери Вбудований механізм
Інструменти налагодження LOD Group Visualizer LOD колоризація в редакторі

В обох платформах LOD — основа оптимізації, але Unreal пропонує повніше рішення для відкритих світів, тоді як Unity гнучкіший у налаштуваннях під конкретний пристрій.

Що входить у роботу з впровадження LOD-системи?

Ми пропонуємо:

  • Аудит поточної сцени: аналіз draw calls, полігонів, вузьких місць.
  • Проектування LOD-груп для ключових об’єктів.
  • Налаштування LOD Bias, Fade Mode, Cross Fade під цільову платформу.
  • Інтеграція HLOD для великих рівнів.
  • Тестування на реальних пристроях із профайлінгом.
  • Оптимізація шейдерів і тіней для LOD-переходів.
  • Надання документації та керівництва з підтримки.

Терміни та вартість

Налаштування LOD для 20–30 об’єктів займає 2–3 дні. Повна LOD-система з HLOD для всієї гри — від одного до двох тижнів. Вартість: від 500$ за аудит до 5000$ за повну LOD-систему. Отримайте консультацію з впровадження LOD. Ми гарантуємо зростання FPS та стабільну продуктивність. Замовте аудит уже сьогодні.

Unity Manual: LOD Group Unreal Engine Documentation: LOD