Розробка мобільної 3D-гри
3D на мобільних — це постійний баланс між візуальною якістю та тепловим дросселюванням. iPhone 15 Pro з A17 Pro потягне те, що Snapdragon 680 не осилить. Завдання розробника — зробити гру, яка виглядає добре на преміальному залізі й не падає нижче 30 FPS на середньому Android.
Вибір движка
Unity — стандарт для мобільного 3D. Багата екосистема, URP (Universal Render Pipeline) оптимізований під мобільні GPU. Unreal — коли потрібна AAA-візуалізація та є бюджет на довшу розробку та оптимізацію. Godot 4 з Vulkan Mobile — для малих студій з обмеженим бюджетом.
Рендеринг та оптимізація — основна робота
Universal Render Pipeline (Unity). Для мобільного 3D — URP, не Built-in. URP Renderer Features замінюють кастомні render pass-и. URP Asset → Quality → HDR Off для мідл-сегмента, MSAA 2x максимум. Depth Texture та Opaque Texture — вимкнути, якщо не використовуються: кожне — додатковий render pass.
LOD (Level of Detail). Обов'язковий для будь-якого окружения. LODGroup з трьома LOD-рівнями: повна геометрія до 10 м, упрощена до 30 м, impostor (billboard) далі. LODBias в Quality Settings — на мобільних знижуємо до 0,7–1,0. Без LOD — 10000 полігонів на кожний об'єкт у полі зору = тепловий throttling через 5 хвилин.
Occlusion Culling. Static Occluder на великих об'єктах (будівлі, скалі), Static Occludee на всьому іншому. Bake Occlusion через Window → Rendering → Occlusion Culling. Без окклюзії GPU рендерит об'єкти за стінами — waste на кожний кадр.
Shaders. URP/Lit — базовий PBR. Для мобільних: знижуємо Material Quality через shader keywords. Кастомні шейдери через ShaderGraph — нода Universal Render Pipeline/Lit. Transparent objects — мінімум: кожний transparent object — окремий render pass. Particle Systems з transparent material — головний джерело overdraw.
// Profiler маркер для вимірювання кастомного коду
using var marker = new ProfilerMarker("EnemyAI.Update");
marker.Begin();
UpdateAI();
marker.End();
Фізика та коллізії
Rigidbody з Interpolation = Interpolate для плавного руху. Collision Detection = Continuous лише для швидких об'єктів (пулі, снаряди) — дорого. MeshCollider — лише для статичних об'єктів окружения. Для персонажів та ворогів — CapsuleCollider або складені примітиви.
Physics.OverlapSphere для AoE-перевірок замість постійних триггерів. Частота фізичного кроку — Time.fixedDeltaTime 0.02f (50 Hz) — стандарт. Знижувати до 0.033f (30 Hz) для важких сцен на слабих пристроях.
Персонажі та анімація
Animator Controller з blend trees для передвигання: 1D Blend Tree за швидкістю (idle → walk → run). Avatar Masks — окремі шари для верхної та нижної частини тіла. Rigging пакет для procedural animation (IK для ніг по нерівній поверхні).
GPU Skinning. Skinned Mesh Renderer → Quality → Auto — Unity переключає на GPU skinning при наявності кількох екземплярів. Для товп ворогів (20+) — Baked Simulation або ECS-підхід через Unity.Animations.Rigging.
Анімації зберігати в Addressables — не в Resources. Пак 50 анімацій у Resources = все в пам'яті при старті. Addressables завантажує за потребою та виважує.
Мультиплеєр (якщо потрібен)
Unity Netcode for GameObjects (NGO) — офіційне рішення. NetworkObject, NetworkVariable<T>, ServerRpc / ClientRpc. Transport layer: Unity Transport (краща продуктивність на мобільних, UDP). Relay через Unity Relay для NAT traversal без власного сервера.
Mirror (опенсорс) — альтернатива NGO з більшою документацією. Photon Fusion — SaaS з готовою інфраструктурою, швидкий старт.
Мобільний мультиплеєр потребує обробки: втрата з'єднання, background mode (iOS вбиває сокети через 30 сек у фоні), battery optimization на Android (Doze mode різко сітьові запити).
Інтеграції
Addressables + CDN. Контент (рівні, 3D-ассеты) грузиться поступово через CDN, не упакований в APK/IPA. Перший запуск — базовий контент. Решта — за потребою. Це знижує розмір первої завантаження та дозволяє оновлювати контент без ревю в App Store.
Compute Shaders через ComputeShader.Dispatch — для GPU-particle систем, grass rendering, кастомної LOD-системи. Працюють на Metal (iOS A7+) та Vulkan/OpenGL ES 3.1 (Android).
Терміни
| Проект | Команда | Орієнтир |
|---|---|---|
| Прототип / vertical slice | 3–4 люди | 3–5 місяців |
| Повна гра (10–20 рівнів, одиночна) | 5–8 людей | 10–18 місяців |
| З мультиплеєром | 7–12 людей | 18+ місяців |
Вартість розраховується після аналізу GDD, цільових платформ та вимог до візуальної якості.







