Как создать мобильную игру на Unity: полный путь от прототипа до релиза

Играть в текстовые ролевые игры бесплатно

Unity — стандарт де-факто для мобильной разработки: кроссплатформенность, URP для рендеринга, новый Input System, Addressables для контента и экспорт в AAB одним кликом. Путь от идеи до релиза проходит через прототипирование, профилирование GPU/CPU, настройку монетизации и CI/CD пайплайн.


Почему Unity для мобильных игр

Движок закрывает 70% задач мобильной разработки «из коробки». Остальные 30% решаются пакетами и настройками. Главные пиляры:

Одна кодовая база

C# компилируется под iOS (IL2CPP) и Android. Единая логика геймплея, UI, сетевого кода и аналитики.

Universal Render Pipeline

Лёгкий рендерер с Batcher, SRP Batcher и GPU Instancing. Даёт 60 FPS на бюджетных устройствах при правильной настройке.

Asset Store и пакеты

Готовые системы инвентаря, диалогов, пулинга, рекламы. Экономит месяцы разработки инфраструктуры.

Экосистема C# и NuGet

Доступ к тысячам библиотек: JSON-сериализация, сокеты, криптография, математика. Нет привязки к проприетарным языкам.

Этапы разработки: дорожная карта

Процесс делится на шесть последовательных фаз. Пропуск любой фазы увеличивает риск переработок на поздних стадиях в 3–5 раз.

1

Концепт и Game Design Document

Целевая аудитория,_core loop_, монетизация, метрики удержания (D1, D7, D30), технические ограничения (мин. ОЗУ, версия ОС). Документ — живой, обновляется еженедельно.

2

Прототип (Greyboxing)

Примитивные кубы и сферы. Проверка «fun factor», управления, камеры, физики. Никакого арта, только Input System и скрипты. Если не весело в серых коробках — не будет весело с ассетами.

3

Вертикальный срез

Один полностью играбельный уровень с финальными механиками, UI, звуком, частицами, сохранением прогресса и первой монетизацией. Точка принятия решения: продолжать или пивот.

4

Продакшн контента

Уровни, персонажи, скины, баланс экономики, локализация. Работа с Addressables для удалённой загрузки контента. Параллельно — интеграция SDK рекламы и покупок.

5

Оптимизация и полировка

Профилирование на реальных устройствах (low-end, mid, high). Исправление GC Spikes, Draw Calls, Overdraw, утечки памяти. Настройка Quality Settings под тиры устройств.

6

Релиз и LiveOps

Сборка App Bundle (AAB) и IPA. Заполнение листингов, модерация, настройка Remote Config для баланса без апдейтов. Пост-релиз: ивенты, A/B тесты, патчи.

Техническая база: настройка проекта под мобильные

Перед написанием первой строки кода настройте проект. Исправление фундамента позже стоит в 10 раз дороже.

URP (Universal Render Pipeline)

Установите пакет Universal RP через Package Manager. Создайте Pipeline Asset, назначьте в Graphics Settings. Включите SRP Batcher и Dynamic Batching. Отключите HDR и MSAA для низких тиров. Используйте Shader Graph для кастомных шейдеров — они автоматически совместимы с SRP Batcher.

Input System

Замените старый Input Manager на Input System Package. Создайте Input Actions Asset: схемы «Touch», «Gamepad», «Keyboard&Mouse». Используйте PlayerInput компонент или C# generated class для типобезопасного доступа. Поддерживает мультитач и жесты из коробки.

Addressables

Отметьте ассеты (префабы, текстуры, аудио, сцены) как Addressable. Группируйте по лейблам: levels, characters, ui. Настройте Remote Load Path на CDN (Firebase, AWS S3, Azure). Это позволяет обновлять контент без релиза в сторах и уменьшает размер начальной загрузки.

IL2CPP и Stripping

В Player Settings: Scripting Backend → IL2CPP, Api Compatibility Level → .NET Standard 2.1. Managed Stripping Level → High (или Medium для старта). Это удаляет неиспользуемый код, уменьшает бинарь и ускоряет запуск. Проверяйте link.xml для сохранения рефлексии (JSON сериализация, DI контейнеры).

Оптимизация: где теряются кадры

Мобильный GPU — тайловый рендерер (Tile-Based Deferred Rendering). Перерисовка пикселей (Overdraw) и смена состояний (Draw Calls) бьют по производительности сильнее, чем полигоны. Профилируйте на устройстве, а не в редакторе.

ПроблемаИнструмент диагностикиРешение
Высокие Draw Calls (> 100–150)Frame Debugger, Profiler (Render)GPU Instancing на материалах, Static Batching для окружения, Sprite Atlas для UI/2D, SRP Batcher (только URP шейдеры).
GC Alloc в Update / FixedUpdateProfiler (GC Alloc column), Deep ProfileObject Pooling для пуль, врагов, эффектов. Structs вместо классов для данных. Кэшируйте GetComponent, списки, массивы. Избегайте LINQ и foreach по не-массивам в горячем коде.
Текстурная память > 300–500 MBProfiler (Memory → Textures), Xcode Instruments / Android Studio ProfilerСжатие ASTC 4×4 или 6×6 (iOS/Android). Mipmaps обязательны. Max Size 1024/2048 для UI, 512 для 3D. Удаляйте альфу, где она не нужна (RGB24 вместо RGBA32).
Overdraw (UI, частицы, прозрачность)Scene View → Overdraw, RenderDocUI: минимизируйте вложенность Canvas, используйте RectMask2D, отключайте Raycast Target на невидимых элементах. Частицы: Cutout шейдеры, низкий Max Particles,_simulationSpace: World_.
CPU Bound: физика, поиск пути, логикаProfiler (CPU Usage), Burst Compiler + JobsPhysics: Layer Collision Matrix, Fixed Timestep 0.02 (50 Hz) или 0.016 (60 Hz). NavMesh → NavMeshComponents (ASTAR Pathfinding Project). Тяжёлые расчёты → Burst + Job System + ECS (DOTS).

Правило 30/60: Целевой FPS — 60. Минимально допустимый — 30. Если на низком тире (Snapdragon 450 / A10) игра держит 30 FPS с запасом 20% по CPU/GPU — оптимизация достаточна. Не гоньтесь за 60 FPS на флагманах ценой читаемости кода.

Монетизация и аналитика: встраиваем рано

Интеграция SDK на стадии вертикального среза выявляет конфликты с жизненным циклом приложения (OnApplicationPause, deep links) до массового тестирования.

Рекламная монетизация

Unity Ads / AdMob / AppLovin MAX. Ревард-ролики для ретаргетинга (продолжить после смерти, удвоить награду). Интерстишиалы на естественных переходах (между уровнями). Баннеры — только если не портят UX. Настройте mediation для максимизации eCPM.

Внутриигровые покупки (IAP)

Unity IAP (пакет UnityEngine.Purchasing). Определите каталог продуктов (Consumable, Non-Consumable, Subscription). Валидация чеков на сервере (PlayFab, кастомный бэкенд) — защита от взлома. Восстановление покупок (Restore Purchases) — обязательно для iOS.

Аналитика и Remote Config

Unity Analytics / GameAnalytics / Firebase. События: level_start, level_complete, ad_watched, iap_purchase. Remote Config — меняйте сложность, цены, частоту рекламы без апдейта билда.

Сборка и публикация: чек-лист релиза

Ручная сборка — источник ошибок. Настройте CI/CD (GitHub Actions, GitLab CI, Bitrise, Codemagic) для автоматической сборки тестовых билдов на каждый пуш в develop и релизных — по тегу.

Обязательные проверки перед загрузкой в консоль

  • Keystore / Signing Certificate: Сохраните файл, пароли и alias в надёжном месте. Потеря = невозможность обновлять приложение в Google Play.
  • Bundle Version Code (Android) / Build Number (iOS): Инкрементируйте каждый релиз. Автоматизируйте через скрипт сборки.
  • App Icons & Adaptive Icons: Все размеры (48–512 px). Android Adaptive Icon: foreground + background layers. iOS: 1024×1024 без прозрачности.
  • Splash Screen: Unity Splash (Custom Style) или нативный Launch Screen (iOS) / SplashScreen API (Android 12+). Без «Made with Unity» на бесплатном плане — только свои бренды.
  • App Bundle (AAB) для Google Play: Не APK. AAB отдаёт пользователю только нужные нативные библиотеки и ресурсы под его архитектуру (arm64-v8a, armeabi-v7a) и плотность экрана.
  • Privacy Policy URL: Обязателен для Google Play Console и App Store Connect. Укажите в настройках проекта и в листинге.
  • Target API Level: Android: минимально API 34 (Android 14) на момент сабмита. iOS: минимально iOS 13–14, соблюдайте требования ATT (App Tracking Transparency).
  • Store Assets: Скриншоты (Phone, Tablet, 7-inch), Feature Graphic (1024×500), Promo Video (landscape, до 30 сек), краткое и полное описание с ключевыми словами ASO.

Типичные ошибки и как их избежать

Паттерны, которые встречаются в 90% неудачных запусков. Каждая ошибка стоит недель отладки в продакшене.

Ошибка: Игнорирование профайлера до релиза

Запускают на флагмане, думают «работает». На популярных бюджетных моделях (Redmi 9, Galaxy A1x) игра выдаёт 15 FPS и вылетает по OOM.

Решение: Профилируйте еженедельно на 3 устройствах

Low-end (2–3 ГБ RAM, Mali-G52 / Adreno 610), Mid (4–6 ГБ, Mali-G76 / Adreno 640), High (8+ ГБ, Mali-G710 / A15+). Автоматизируйте сборку тестовых билдов на CI для этих устройств (Firebase Test Lab, Bitbar).

Ошибка: Standard Shader / HDRP материалы на мобиле

Standard Shader делает лишние пассы, не батчится SRP Batcher. HDRP вообще не для мобильных. Результат — 200+ Draw Calls на простой сцене.

Решение: Только URP Lit / Simple Lit / Particle шейдеры

Напишите свой URP Shader Graph для специфических эффектов (дисконнект,Outline, воду). Используйте SRP Batcher compatible флаг. Материалы с одинаковыми shader keywords батчатся в один Draw Call.

Ошибка: Логика в Update() каждого монобеhaviour

500 врагов с Update() = 500 вызовов в кадр. GC аллокации от векторов, кворнионов, строк. Кадровая просадка гарантирована.

Решение: Event-driven архитектура и DOTS/ECS

Централизованный GameLoopManager вызывает Tick у систем. Для больших симуляций — Entities Package (DOTS), Burst Compiler, Job System. Данные в NativeArray / NativeList, никакого GC.

Ошибка: Текстуры 4K без мИпмапов и сжатия

Размер билда 2 ГБ. Видеопамять переполняется на первом уровне. Вылеты на iOS (jetsam) и Android (lmk).

Решение: Addressables + ASTC + Max Size Presets

Настройте пресеты импорта: UI — 1024 ASTC 6×6, 3D — 512 ASTC 4×4, Background — 2048 ASTC 8×8. Mipmaps всегда On. Addressables грузят только нужное для текущей сцены.

Ошибка: Instantiate / Destroy в геймплее

Спавн пуль, врагов, партиклов через Instantiate вызывает аллокации, фрагментацию кучи, GC Spikes каждые несколько секунд.

Решение: Object Pooling (Unity Pool Package или свой)

Разогрейте пулы на загрузке сцены. pool.Get() / pool.Release(). Для партиклов — ParticleSystem.Simulate и рестарт, а не Instantiate.

Что дальше: развитие проекта после запуска

Релиз — не финиш, а старт LiveOps. Успешные мобильные проекты живут годами за счёт циклов: аналитика → гипотеза → A/B тест → внедрение → аналитика.

  • Remote Config позволяет менять баланс сложности, награды за просмотр рекламы, цены в магазине без ревида приложения.
  • Content Updates через Addressables: новые уровни, скины, ивенты каждые 2–4 недели удерживают D30/D90.
  • Crashlytics / Sentry — мониторинг крашей в реальном времени. Исправляйте топ-5 крашей в первом патче (версия 1.0.1).
  • User Acquisition (UA) — запуск рекламных кампаний (Unity UA, Meta Ads, Google Ads) на основе LTV, полученного за первые недели. Без понимания LTV покупка трафика — сжигание бюджета.
  • Community & Support — Discord, встроенный чат поддержки, ответы на отзывы в сторах. Рейтинг 4.5+ критичен для органики.


Unity даёт все инструменты. Архитектура, дисциплина профилирования и итеративный подход превращают прототип в живой продукт. Начните с вертикального среза — остальное следует.

Целое приключение — в одном телеграм-боте 🌍

Не нужно ничего скачивать, регистрироваться и разбираться в сложных интерфейсах. Открыли Telegram — и вы уже в текстовой ролевой игре с ИИ. Идеально на 10 минут в обеденный перерыв или на целый вечер: история подождёт и продолжится с того же места, где вы остановились.

Открыть бота 👉 https://clck.ru/3Ta8kQ

Играть в текстовые ролевые игры бесплатно