Draw calls, пам'ять, батарея — три вороги мобільного Unity-проєкту. Оптимізація продуктивності Unity є ключовою для успіху. Навіть при 60 FPS на флагмані гра може лагати на Xiaomi Redmi Note 8 з 3 ГБ ОЗУ: кадри просідають до 15 FPS при появі ворогів, а акумулятор гріється за 20 хвилин. Типова ситуація — відсутність Object Pooling, неоптимізовані текстури та нехтування IL2CPP.
Ми — команда Unity-розробників з 7+ роками досвіду, 20+ реалізованих ігор та 5+ років на ринку геймдеву. Випустили понад 20 мобільних ігор: від гіперказуальних аркад до RPG з відкритим світом. Наша спеціалізація — продуктивність на пристроях з 2 ГБ ОЗУ. Ми гарантуємо оптимізацію під слабкі пристрої — якщо гра не досягає 30 FPS на цільових пристроях, ми безкоштовно виправляємо проблеми. Замовте Unity мобільна гра розробка — ми реалізуємо ваш проєкт. Замовте розробку мобільної гри на Unity — отримайте консультацію щодо вашого проєкту.
Як забезпечити продуктивність на слабких пристроях?
Draw calls і батчинг. На мобільних GPU бюджет draw calls жорсткий: 100–200 залежно від пристрою. Оптимізація draw calls Unity реалізується через батчинг. Статична геометрія — Static Batching. Однакові матеріали — GPU Instancing. Динамічні об'єкти — Dynamic Batching (працює для меш-об'єктів < 900 вертексів). Батчинг Unity буває статичним та динамічним. Перевіряємо через Frame Debugger в Unity Editor.
Текстури і пам'ять. ASTC — формат стиснення для iOS та Mali/Adreno GPU на Android. Жодних PNG у 2048×2048 для UI-іконок розміром 64×64. Atlas-и через Sprite Atlas або ручне пакування. Моніторинг пам'яті — Memory Profiler (пакет com.unity.memoryprofiler). Типова проблема на iOS: Texture2D не вивантажується з пам'яті після Destroy() без явного Resources.UnloadUnusedAssets().
Object Pooling. Instantiate/Destroy на гарячому шляху — ворог продуктивності. Використання пулу об'єктів Unity дозволяє уникнути частих Instantiate/Destroy. UnityEngine.Pool.ObjectPool<T> (вбудований) — пул. Пулі, вороги, частинки — все через пул.
IL2CPP і AOT. Мобільні білди завжди IL2CPP, не Mono. IL2CPP швидший за Mono в 2-3 рази при виконанні коду на мобільних пристроях. IL2CPP оптимізація є обов'язковою для мобільних білдів. Рефлексія ламає strip level: якщо ReflectionProbe або кастомний серіалізатор використовує рефлексію — додаємо link.xml з явними preserve-директивами. Інакше MissingMethodException у релізному білді, якого не було в Debug.
Чому важлива архітектура проєкту?
Для мобільних ігор середньої складності використовуємо MVVM + Services без повноцінного ECS. Документація Unity рекомендує DOTS для максимальної продуктивності, але це оверкіл для більшості мобільних проєктів до аркадного жанру включно: Burst Compiler, Jobs System та NativeArray вимагають досвіду та збільшують час розробки. ECS (DOTS) забезпечує до 10 разів більшу продуктивність для певних сценаріїв, але є оверкілом для більшості мобільних проєктів.
Управління станом через Zenject або VContainer (легший аналог). Кожен сервіс (AudioService, ScoreService, InventoryService) інжектується через конструктор, а не FindObjectOfType. ScriptableObjects для конфігурації ігрових даних — рівні, характеристики ворогів, параметри прогресії. Зміна балансу без перезбирання APK/IPA через Addressables + remote config (Firebase Remote Config або Unity Remote Config).
Інтеграції для мобільного продакшену
Ads. Google AdMob через com.google.ads.mobile — банери, інтерстити, rewarded video. Unity Ads як альтернатива. Реклама в грі Unity інтегрується через AdMob та Unity Ads. Медіація через IronSource або AppLovin MAX для максимізації eCPM.
In-App Purchases. Unity IAP (пакет com.unity.purchasing) — єдиний API для App Store та Google Play. In-app purchase Unity реалізується через Unity IAP. StoreKit на iOS, Google Play Billing на Android. Валідація чеків на сервері обов'язкова — клієнтська валідація обходиться Jailbreak/Root.
Analytics. Firebase Analytics (com.google.firebase.analytics) — стандарт. Ключові події: level_start, level_end, level_fail, ad_impression, iap_purchase. Unity Analytics як вбудована альтернатива.
Crashlytics. Firebase Crashlytics — звіти про краші в реальному часі. Інтегрується через com.google.firebase.crashlytics. Кастомні ключі для контексту: Crashlytics.SetCustomKey("level", currentLevel).
CI/CD та публікація
Fastlane для автоматизації: gym для iOS-білда, supply для завантаження в Google Play, deliver для App Store. Fastlane Unity використовується для автоматизації збірок. Unity Build Automation як альтернатива для команд без налаштованого CI. CI/CD Unity налаштовується за допомогою GitHub Actions та Fastlane Unity.
GitHub Actions + game-ci/unity-builder — безкоштовна CI для Unity з кешуванням Library-папки (економить 10–30 хвилин на кожен білд).
App size. APK split по ABI — окремі файли для arm64-v8a, armeabi-v7a, x86_64. На iOS — App Thinning автоматично через Xcode. Asset Bundle Compression — LZ4 для швидкого завантаження, LZMA для мінімального розміру.
Що входить в роботу
- Архітектура проєкту та Game Design Document
- Прототип core gameplay та вертикальний зріз
- Інтеграція реклами, покупок та аналітики
- Оптимізація під десятки пристроїв (профілювання на реальному залізі)
- Публікація в App Store та Google Play (налаштування сертифікатів, метаданих)
- Пост-релізна підтримка: виправлення багів, оновлення контенту, моніторинг крашів
Покроковий план оптимізації гри
- Профілювання: запуск на слабкому пристрої (Snapdragon 660, iPhone SE 2nd gen), запис Frame Time, виявлення вузьких місць через Profiler та Frame Debugger.
- Оптимізація графіки: скорочення draw calls (батчинг, атласи), зменшення текстур, використання LOD.
- Оптимізація CPU: об'єктний пулінг, кешування компонентів, уникання
Update()на неактивних об'єктах. - Оптимізація пам'яті: своєчасне вивантаження ресурсів, стиснення Asset Bundle, обмеження кількості завантажених текстур.
- Тестування: повторне профілювання, перевірка FPS та стабільності на кількох пристроях.
| Підхід | Продуктивність | Складність впровадження |
|---|---|---|
| Static Batching + GPU Instancing | Висока | Низька |
| Додатково: Object Pooling | Середня | Середня |
| Повна: ECS (DOTS) | Максимальна | Висока |
Згідно з документацією Unity, правильне управління пам'яттю дозволяє збільшити FPS на 20–30%.
Етапи розробки
Прототип (core gameplay loop) → вертикальний зріз (один рівень з повним контентом) → alpha (всі механіки, без полірування) → beta (тестування на пристроях, оптимізація) → реліз.
Між alpha та beta — обов'язковий профілінг на реальному залізі: старий Android (Snapdragon 660, Mali G72) та iPhone SE 2nd gen. Якщо на цих пристроях стабільні 30 FPS — продукт готовий до широкої аудиторії.
Терміни
| Тип гри | Команда | Орієнтир |
|---|---|---|
| Гіперказуальна / казуальна | 2–3 особи | 2–4 місяці |
| Мідкор (RPG, стратегія) | 4–6 осіб | 6–12 місяців |
| Зі складними механіками, мережевим мультиплеєром | 6+ осіб | 12+ місяців |
Вартість гіперказуальної гри: від $10,000 до $25,000; мідкор-проєкту: $50,000–$150,000; складної гри: $150,000+. Точна сума розраховується після аналізу GDD (Game Design Document) та технічних вимог до платформ.
Отримайте консультацію з оптимізації та монетизації вашої гри — зв'яжіться з нами для обговорення деталей. Замовте розробку мобільної гри на Unity — ми допоможемо реалізувати проєкт від ідеї до релізу.







