Разработка игры для смартфонов
Мобильный — это не «упрощённая 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 или обе).





