Розробка ігри для смартфонів
Мобільний — це не "спрощена PC-гра". Це принципово інші обмеження: тепловий троттлинг через 15 хвилин геймплею на середньому Android, сесії по 3-7 хвилин у метро, touch-управління замість миші, AppsFlyer замість Steam Analytics. Гра, портована з PC без адаптації, майже завжди провалиться.
Чому мобільні проекти розпадаються технічно
Тепловий троттлинг — невидима стіна
Snapdragon 778G тримає стабільні 60 FPS перші 10 хвилин. Потім CPU/GPU перегріваються, система знижує частоту до 50-60% від піку, та гра починає тормозити — без яких-либо помилок у логах. Користувач не розуміє, в чому справа, та просто видаляє гру.
Тест на троттлинг — обов'язкова частина QA: 30 хвилин безперервного геймплею з моніторингом CPU/GPU temperature через Android GPU Inspector або Snapdragon Profiler. Якщо температура перевищує 45°C — гра перегріває пристрій.
Рішення: обмеження цільового FPS (Application.targetFrameRate = 30 для казуальних ігор), adaptive performance через Unity Adaptive Performance пакет (підтримується Samsung та рядом інших виробників), агресивне batching та снижженн draw calls.
Memory management на iOS
На iOS нема свопа. Коли додаток перевищує memory budget (залежить від моделі: від 1.2 ГБ на старих iPhone до 4+ ГБ на Pro), система вбиває його без попередження. ApplicationDidReceiveMemoryWarning — останній шанс звільнити ресурси.
Практика: підписуємося на Application.lowMemory та одразу вивантажуємо некритичні ассети. Addressables.Release() для всього, що не потрібно прямо зараз. Texture2D.Compress() для динамічно створених текстур.
Профілювання пам'яті на iOS — тільки через Xcode Instruments → Memory Graph. Unity Profiler показує managed heap, але не нативну пам'ять та Metal GPU memory. Повна картина — тільки з Xcode.
Специфіка Android-фрагментації
4000+ моделей Android-пристроїв в обіганні. Vulkan доступен на Android 7.0+ та більшості сучасних GPU, але реалізації розрізняються. OpenGL ES 3.0 — базовий мінімум для сумісності. Unity вибирає API автоматично на основі PlayerSettings.Android.targetSdkVersion, але потрібно тестувати на реальних пристроях кількох виробників.
Мінімальний набір тестових пристроїв: Samsung mid-range (Android 12+), застарілий Xiaomi/Redmi (Android 10, Mali GPU), сучасний Pixel (stock Android, референс), дешевий бюджетник (2 ГБ RAM, PowerVR або Adreno 610). Це покриває більшість проблемних кейсів.
Архітектура мобільної гри
Game loop під короткі сесії
Сесія 3-7 хвилин — це не обмеження, це дизайн-паттерн. Гра повинна завершуватися за одну сесію або мати коректні точки виходу без втрати прогресу. OnApplicationPause(true) — точка збереження. OnApplicationFocus(false) — страховочний save.
Автосохранення кожні N секунд через coroutine з yield. Не синхронно в OnApplicationPause — збереження може зайняти кілька кадрів, та гра встигне закритися раніше.
Touch controls
Unity Input System з Touchscreen device. Для свайпів — окремий GestureDetector на InputSystem з threshold по delta та часу. Не через legacy Input.GetTouch() — це застарілий API.
Розміри touch targets: мінімум 48×48dp (Google guidelines), оптимум 56×56dp. На екрані 360dp шириною це вже значимий відсоток простору. Проектуємо UI з запасом.
Multi-touch: явно указуємо максимальне кількість одночасних дотиків через InputSystem. За замовчуванням Unity обмежує 5 touches — зазвичай достатньо, але перевіряємо для ритм-ігор та файтингів.
Оптимізація ассетів
Текстури: ASTC 6x6 для iOS (Metal), ETC2 для Android. Атласи через Sprite Atlas — критично для мобільного UI. Мешей більше 65k вершин — розбиваємо (Unity використовує 16-bit index buffer за замовчуванням на мобайле, з Unity 2021 LTS можна включити 32-bit опціонально).
Аудіо: PCM → Compressed в MP3 (Android) або AAC (iOS). Частота дискретизації 22050 Гц достатня для більшості game sounds, тільки для голосових акторів потрібен 44100 Гц.
Стек мобільного проекту
Бекенд: PlayFab (рекомендуємо) або Firebase. PlayFab — готові економіка, лідерборди, матчмейкинг, A/B тесты. Firebase — гибче, дешевше при малому масштабі, потребує більше кастомної розробки.
Аналітика: Firebase Analytics — безплатно, глибока інтеграція з Google Ads та Play Store. AppsFlyer або Adjust для attribution (звідки прийшов користувач).
Монетизація: Unity IAP + IronSource/AppLovin MAX для реклами. Медіація повищує eCPM на 20-40% порівняно з однією сіттю.
Push-уведомлення: Firebase Cloud Messaging. Обов'язковий permission flow на Android 13+.
CI/CD: Unity Cloud Build + fastlane для iOS signing, GitHub Actions для Android. Автоматичні білди при push у develop-гілку → upload у TestFlight / Firebase App Distribution для тестування.
Релиз та після релизу
Soft launch (обмежений регіон) — перед глобальним релизом обов'язковий для мобільного. Дозволяє перевірити retention метрики та монетизацію на реальних користувачах без глобального ризику.
Метрики для go/no-go рішення: D1 retention >40%, D7 >20%, D30 >10% — орієнтири для казуальних ігор. ARPU, ARPPU, LTV — залежать від жанру.
| Тип гри | Орієнтовні терміни |
|---|---|
| Гіпер-казуальна | 4-8 тижнів |
| Казуальна з прогресією | 2-4 місяці |
| Мідкор (мета + PvP) | 4-8 місяців |
| Мідкор з guild/clan | 6-12 місяців |
Вартість розраховується після аналізу механік, бекенд-вимог та цільових платформ (iOS, Android або обидві).





