Оптимізація розміру дистрибутива VR ігр для швидкої завантаження
Meta Horizon Store та Steam мають обмеження та рекомендації по розміру пакета, але головна причина оптимізувати дистрибутив—користувацький досвід. Гра на 4 GB проти гри на 1.2 GB при однаковій візуальній якості—різниця в 20 хвилин очікування на стандартному домашньому інтернеті. Для Quest standalone, де користувач не звичний до довгих завантажень мобільних ігор, це прямої втрати установок.
Де живе раздутий розмір пакета
У більшості VR-проектів 70–80% розміру пакета—це текстури. Типова картина при аудиті: у проекті 2 GB текстур, з яких 600 MB—це нестиснені або слабостиснені PNG/PSD-файли, імпортовані напрямо без налаштування Texture Compression в Import Settings.
Quest 2/3—це ARM-чип з Adreno GPU, native формат стиснення—ASTC. Текстура 2048×2048 у RGBA32 займає 16 MB. Та ж текстура в ASTC 6×6—1.5 MB, в ASTC 8×8—0.9 MB. Різниця в 17 разів при незначній втраті якості для diffuse карт.
Налаштування у Unity: Platform-specific overrides у Texture Import Settings → Android → Format: ASTC 6×6 (для diffuse та roughness карт), ASTC 4×4 (для нормалей, де якість критична). При цьому стандартний Texture Compression у Project Settings недостатній—потрібно явно налаштовувати кожну текстуру або використовувати Texture Compression Groups через Addressables.
Другий крупний джерело—аудіо. Unity за замовчуванням імпортує аудіо без агресивного стиснення. Фонові треки у WAV по 50–100 MB кожен—не рідкість. Налаштування: Load Type Streaming, Compression Format Vorbis, Quality 70–80% для фонової музики. Короткі звукові ефекти—Decompress on Load з Vorbis. Всього з аудіо можна скоротити ще 30–60%.
Інструменти аналізу розміру білда
Unity Build Report—перший крок. Window → Open Last Build Report показує, що й скільки важить у фінальному пакеті. Сортування за розміром одразу виявляє аномалії: текстури, які чомусь займають 20 MB замість очікуваних 2 MB.
Asset Bundle Analyzer (відкритий інструмент від Unity Technologies)—для проектів з Addressables. Показує дублювання ассетів між бандлами: одна текстура, включена в три різних bundle, займає місце тричі.
Сканування через AssetDatabase.GetAllAssetPaths() з кастомним скриптом-аудитором: знаходить текстури без ASTC override, аудіофайли без streaming, меші з надмірними вершинами для їх LOD-рівня.
Addressables та відкладена завантаження
Для VR-ігр з кількома рівнями—обов'язкове розділення на base package (код + перший рівень) та remote assets (інші рівні через CDN). Unity Addressables з Remote Load Path на Cloudflare R2 або AWS S3. Користувач встановлює 400 MB, запускає гру та бачить перший рівень одразу. Решта завантажується у фоні.
Meta Horizon Store підтримує розділення на base APK + expansion files. Базовий APK повинен бути менше 4 GB (обмеження Android APK format), expansion—до 4 GB кожен. На практиці—краще тримати базовий APK до 1 GB для швидкої завантаження першого контенту.
Shader stripping—окрема точка економії. Unity включає у білд шейдери для всіх можливих keyword combinations. У VR-проекті з URP після налаштування Shader Stripping у Graphics Settings (включити Strip Unused Shader Variants) розмір часто скорочується на 50–150 MB лише за рахунок видалення невикористовуваних шейдерних варіантів.
| Тип оптимізації | Типове скорочення розміру |
|---|---|
| ASTC-компресія текстур | 40–70% від обсягу текстур |
| Оптимізація аудіо (Vorbis + Streaming) | 30–60% від обсягу аудіо |
| Shader stripping | 50–200 MB |
| Addressables + remote assets | 50–80% від базового пакета |
Строки роботи: аудит та базова оптимізація—2–5 робочих днів. Повна реструктуризація з переходом на Addressables—2–4 тижні залежно від розміру проекту.
Вартість розраховується індивідуально після аналізу поточного стану білда.





