Розробка системи освітлення мобільної гри

Розробка системи освітлення мобільної гри Реалтайм освітлення на мобільних пристроях — це постійний торг. Один динамічний Point Light в URP з тінями на Adreno 640 коштує близько 1.5-2.5 мс на кадр. При цільових 60 FPS увесь бюджет кадру — 16.6 мс, і два таких джерела вже займають третину бюджету

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

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

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

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

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

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

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

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    897
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    784
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1218
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1081
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1004
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    600

Розробка системи освітлення мобільної гри

Реалтайм освітлення на мобільних пристроях — це постійний торг. Один динамічний Point Light в URP з тінями на Adreno 640 коштує близько 1.5-2.5 мс на кадр. При цільових 60 FPS увесь бюджет кадру — 16.6 мс, і два таких джерела вже займають третину бюджету лише на світло. Ми перебрали десятки конфігурацій, поки не знайшли золоту середину: запікати все, що не рухається, і залишати 1-2 реалтаймових джерела для ігрових подій.

Стратегія освітлення під мобільний GPU

Фундаментальний вибір — співвідношення запеченого (baked) і динамічного (realtime) світла. Для більшості мобільних ігор правило просте: все статичне освітлення запікаємо, динамічне — мінімум. Запечене освітлення в 10 разів швидше за динамічне на мобільних пристроях.

В Unity URP це: Mixed Lighting з Subtractive або Shadowmask режимом. Subtractive швидше — тіні від статики запікаються в lightmap, динамічні об'єкти відкидають тінь на статику через mixed light. Shadowmask точніше, але вимагає додаткову текстуру на GPU.

Lightmap resolution — типова помилка завищення. Texels per unit = 20 для детальної геометрії та 4-8 для фонового оточення. Гігантський lightmap 2048×2048 за один атлас на всю локацію — добре. Двадцять дрібних lightmap по 256×256 — погано, це двадцять texture binds. Щоб уникнути цього, групуємо статику в один атлас і повторно використовуємо матеріали.

Коли виправдані динамічні джерела?

Динамічне світло потрібне для ігрових подій: вибух, постріл, інтерактивні смолоскипи. Реалізація через короткоживучий Light з інтерполяцією Range:

IEnumerator FlashLight(Light light, float intensity, float duration) { float elapsed = 0f; while (elapsed < duration) { light.intensity = Mathf.Lerp(intensity, 0f, elapsed / duration); elapsed += Time.deltaTime; yield return null; } light.enabled = false; } 

Такий спалаховий світло можна не включати в shadow casting — візуально різниця мінімальна, а продуктивність значно краща.

Обмеження кількості Per-Object lights. В URP Light налаштування Additional Lights > Per Object Limit виставляємо в 1-2 для мобільних пресетів. За замовчуванням 8 — це десктопне значення. Наш досвід: на Adreno 618 два реалтаймових джерела без тіней дають 0.8 мс додаткового часу.

Як працюють Light Probes?

Персонажі та вороги рухаються через запечені зони і повинні отримувати правильне ambient-освітлення. Light Probe Group розставляємо в точках зміни освітлення: вхід у тінь, зона смолоскипа, темний коридор. LightProbeProxyVolume для великих динамічних об'єктів — замінює інтерполяцію між пробами на об'ємну вибірку.

Без Light Probes персонаж у темному куті світиться, ніби стоїть на сонці — ambient з Skybox застосовується без урахування позиції.

Ambient Occlusion: мобільні альтернативи

Screen Space AO (SSAO) на мобілі — ні. Дорого і не потрібно при правильних lightmap. Альтернативи:

  • Запечений AO в lightmap — безкоштовно в рантаймі, налаштовується в Generate Lighting налаштуваннях.
  • Vertex AO — запікається в vertex color, семплюється в шейдері, повністю безкоштовно.
  • GTAO в URP 15+ — експериментально, на топових мобільних GPU допустимо при низькому radius.

Godot 4: освітлення в 2D

У 2D-іграх на Godot: CanvasItemMaterial з Light Mode = Normal Map Only дозволяє використовувати normal maps на спрайтах і отримувати псевдо-3D освітлення без реального 3D. PointLight2D з Shadow Enabled = false коштує дешево. DirectionalLight2D для імітації сонця в top-down іграх.

Нормал-маппінг у 2D — потужний інструмент: гра виглядає об'ємно, а рендериться як flat sprites. На мобілі це суттєво вигідніше, ніж перехід у 3D заради візуальної глибини.

Як профілювати освітлення?

Unity Frame Debugger показує всі draw calls по освітленню. Xcode GPU Frame Capture на iOS дає точний breakdown по шейдерним інвокаціям. Ціль: Shadow Map passes — не більше 1-2 за кадр, Additional Lights — не більше 2 реалтаймових джерел одночасно.

Параметр Цільове значення Критичне значення
Shadow Map passes ≤2 >4
Realtime lights per object 1-2 >4
Lightmap atlas size 2048×2048 Багато дрібних атласів
Additional Lights total ≤4 >8

Що входить у розробку системи освітлення?

  1. Аналіз сцен та цільових пристроїв — підбір стратегії (baked/realtime mix).
  2. Налаштування lightmap resolution та атласування — усунення перевитрати ресурсів.
  3. Розстановка Light Probes та налаштування Proxy Volume.
  4. Оптимізація динамічних джерел: обмеження Per-Object Limit, кешування корутин.
  5. Профілювання та фіксація — Frame Debugger, GPU Capture, Instruments.
  6. Підсумкова документація з освітлення для команди (конфіги, схеми, метрики).

Маємо 10+ років досвіду та виконали 50+ проєктів з освітлення для мобільних ігор. Ми гарантуємо, що система освітлення працюватиме в рамках бюджету 16.6 мс для 60 FPS на цільових пристроях. Вартість робіт — від 5000$ за базову конфігурацію. Пишіть нам для оцінки вашого проєкту — готові виконати роботу під ключ за 2-4 тижні.

Документація Unity URP: https://docs.unity3d.com/Manual/universal-render-pipeline.html

Типові помилки при налаштуванні освітлення
  • Використання 4+ реалтаймових джерел на мобілі.
  • Занадто висока роздільна здатність lightmap для фонового оточення.
  • Забули розставити Light Probes — динамічні об'єкти виглядають пласкими.
  • Включення SSAO без тестування продуктивності.
  • Нехтування batching та GPU instancing для світлових об'єктів.