Создание мобильной игры — это путь от идеи до сборки, которую игрок скачивает из магазина приложений: выбор движка, прототип основной механики, графика и звук, тестирование на реальных телефонах, публикация в Google Play, App Store или других сторах и настройка монетизации. Большинство инди-команд и новичков делают мобильные игры на готовом движке, а не с нуля.
Содержание
Ниже — как выбрать движок под задачу, дорожная карта до первой сборки на своем телефоне, первый скрипт на Unity, требования магазинов и модели заработка. Сведения актуальны на 23.09.2026.
Движок, сборка, стор: разводим термины
| Термин | Что это | Пример |
|---|---|---|
| Движок | Готовая основа игры: рендер, физика, звук, ввод, сборка под платформы | Unity, Godot, Unreal Engine |
| Редактор | Приложение, в котором собирают сцены и пишут логику | Окно Unity Editor на компьютере |
| Сборка (билд) | Готовый файл игры под конкретную платформу | APK для установки на свой Android, AAB для Google Play, IPA для iOS |
| Стор | Магазин, через который игру получают игроки | Google Play, App Store, RuStore |
Игра, которая работает в редакторе, еще не сборка, а сборка на своем телефоне еще не опубликованное приложение.
Как выбрать движок
Выбор начинают с задачи, а не с рейтинга популярности.
| Задача | Что взять | Когда иначе |
|---|---|---|
| Первая 2D или 3D игра, нужен большой объем уроков | Unity (C#) | Если важна полностью открытая лицензия — Godot |
| Легкая 2D игра, открытый движок без лицензионных отчислений | Godot 4 (GDScript, C#) | Для C# на мобильных сверьте статус поддержки в вашей версии Godot |
| 3D с упором на графику, команда знает C++ | Unreal Engine 5 (C++, Blueprints) | Для слабых телефонов и маленькой 2D-игры он избыточен |
| Небольшая 2D игра, минимальный размер сборки | Defold или Solar2D (Lua) | Меньше уроков и готовых ассетов, чем у Unity |
| Игра без кода, проверить идею за выходные | Конструктор | Упретесь в ограничения при росте проекта |
Про лицензии коротко. Unity Personal бесплатен, пока выручка и финансирование за 12 месяцев ниже порога, указанного на странице тарифов (сейчас 200 000 USD). Godot распространяется по лицензии MIT. У Unreal Engine исходный код доступен по лицензии Epic, это не open source, а с валовой выручки продукта сверх порога взимается роялти.
Подробно о плюсах и минусах Unity — в статье «Движок Unity: что это такое, плюсы и минусы». Вариант без программирования разобран в обзоре конструкторов игр для Android.
Дорожная карта до первой сборки на телефоне
Цель первого этапа — не «понять геймдев», а конкретный артефакт: APK с одной механикой, установленный на ваш Android-смартфон. Реалистичный срок для новичка с базовым C# — несколько недель вечерами, без знания программирования дольше.
- Одна механика. Сформулируйте игру одной фразой: «шар катится, игрок свайпом уводит его от препятствий». Жанр и сюжет пока не важны.
- Установка. Через Unity Hub поставьте актуальную LTS-версию редактора (на дату проверки — Unity 6.3 LTS) с модулем Android Build Support. Для iOS нужен Mac с Xcode.
- Прототип на примитивах. Кубы и сферы вместо графики. Проверьте, интересно ли играть 30 секунд.
- Управление под палец. Касание и свайп, крупные зоны нажатия, безопасные области экрана (вырез камеры, скругленные углы).
- Сборка на телефон. В Unity 6 — File — Build Profiles, платформа Android, включенная отладка по USB на устройстве. Результат этапа — APK, запущенный на телефоне.
- Графика, звук, меню, сохранение прогресса. Только после того, как механика работает на устройстве.
- Тесты на слабых устройствах, затем публикация (раздел ниже).
Первый скрипт: движение, не зависящее от частоты кадров
Телефоны отрисовывают разное число кадров в секунду: 30, 60, 90 или 120 — в зависимости от экрана, настроек и нагрева. Логика игры не должна от этого зависеть. Минимальный полный пример для Unity — компонент, который двигает объект вперед со скоростью 5 единиц в секунду:
using UnityEngine;
public class Runner : MonoBehaviour
{
[SerializeField] private float speed = 5f; // единиц в секунду
private void Update()
{
// Сдвиг вперед, не зависящий от частоты кадров
transform.Translate(Vector3.forward * speed * Time.deltaTime);
}
}
Как запустить: создайте скрипт Runner.cs, перетащите его на куб в сцене и нажмите Play. Куб поедет вперед и за секунду пройдет 5 единиц при любой частоте кадров.
Разбор по строкам:
MonoBehaviour— базовый класс компонентов Unity, скрипт вешается на объект сцены.[SerializeField]показывает приватное поле в инспекторе: скорость можно менять без правки кода.Update()Unity вызывает один раз за кадр.Time.deltaTime— время прошедшего кадра в секундах. Умножение на него переводит «единиц в секунду» в «сдвиг за этот кадр».
Что будет без deltaTime, проще показать вне Unity. Консольная программа на C# имитирует одну секунду игры при разной частоте кадров:
// Симуляция: персонаж должен пройти 5 единиц за 1 секунду
const float speed = 5f;
foreach (int fps in new[] { 30, 60, 120 })
{
float dt = 1f / fps;
float perFrame = 0f, byTime = 0f;
for (int frame = 0; frame < fps; frame++) // ровно 1 секунда кадров
{
perFrame += 0.1f; // ошибка: шаг за кадр
byTime += speed * dt; // верно: шаг * время кадра
}
Console.WriteLine($"{fps,3} FPS: за кадр = {perFrame:F2}, с deltaTime = {byTime:F2}");
}
Вывод (.NET 10, dotnet run):
30 FPS: за кадр = 3.00, с deltaTime = 5.00
60 FPS: за кадр = 6.00, с deltaTime = 5.00
120 FPS: за кадр = 12.00, с deltaTime = 5.00
Ошибка — шаг «за кадр» — дает на 120-герцовом телефоне скорость вчетверо выше, чем на телефоне с 30 кадрами. Исправление — умножать скорость на Time.deltaTime. Граница упрощения: для физики через Rigidbody движение задают в FixedUpdate() силами или скоростью тела, а не через Translate.
Публикация: что требуют магазины
Требования меняются ежегодно, перед релизом их сверяют с документацией магазина. Картина на дату проверки:
| Google Play | App Store | |
|---|---|---|
| Аккаунт разработчика | Разовый взнос 25 USD | Apple Developer Program, 99 USD в год |
| Формат сборки | Android App Bundle (AAB) для новых приложений | Сборка через Xcode на Mac |
| Архитектура | Обязательна 64-битная версия (в Unity — IL2CPP и ARM64) | 64-битная (arm64) |
| Версия SDK | Target API level не ниже требуемого Google на текущий год, планка поднимается ежегодно | Сборка актуальной версией Xcode и SDK, которую требует Apple |
| Тестирование | Новым личным аккаунтам нужен закрытый тест с 12 тестировщиками 14 дней до выпуска в продакшн | Бета через TestFlight, затем App Review |
| Приватность | Форма Data safety, политика конфиденциальности | App Privacy в карточке, запрос ATT при отслеживании между приложениями |
Если игра рассчитана на детей, требования строже: программа Families в Google Play и категория Kids в App Store ограничивают рекламу и сбор данных. В России дополнительно используют RuStore, у него свои правила модерации и оплаты.
Монетизация
| Модель | Как работает | Риск |
|---|---|---|
| Покупки в приложении | Игра бесплатная, платят за валюту, предметы, снятие рекламы | Дисбаланс «плати, чтобы выиграть» отталкивает игроков |
| Реклама | Межстраничная (между уровнями) и за награду (ролик ради бонуса) | Навязчивый показ снижает удержание |
| Подписка | Регулярный платеж за контент или бонусы | Нужен постоянный поток нового контента |
| Премиум | Разовая оплата при скачивании | Трудно набрать аудиторию без бесплатного входа |
Модели часто комбинируют. Цифровые товары внутри игры по общему правилу продаются через платежную систему магазина, который берет комиссию. Для отдельных стран действуют исключения, условия меняются, поэтому их проверяют в правилах конкретного стора.
Если не получилось
| Симптом | Частая причина | Что делать |
|---|---|---|
| Нет платформы Android в Build Profiles | Не установлен модуль Android Build Support | Добавить модуль через Unity Hub для нужной версии редактора |
| Телефон не виден при сборке | Выключена отладка по USB или не подтвержден доступ | Включить режим разработчика и отладку по USB, подтвердить запрос на телефоне |
| Скорость персонажа разная на разных телефонах | Движение без Time.deltaTime |
Умножать скорость на время кадра |
| Телефон греется, кадры падают через 5 минут | Тяжелая графика, лишние вычисления в Update() |
Профилировать через Unity Profiler на устройстве, снизить качество |
| Google Play отклоняет сборку | Устаревший target API level или APK вместо AAB | Обновить Target API в настройках проекта, собрать AAB |
Выводы
- Мобильную игру почти всегда делают на движке: Unity — самый частый старт, Godot — открытая альтернатива для 2D, Unreal — для тяжелой 3D-графики.
- Первый артефакт — APK с одной механикой на своем телефоне, а не полноценная игра.
- Логику движения привязывают ко времени (
Time.deltaTime), иначе игра ведет себя по-разному на телефонах с разной частотой кадров. - Магазины требуют аккаунт разработчика, актуальный target API и формат AAB (Google Play), сборку в Xcode (App Store) и честное описание сбора данных.
- Модель монетизации выбирают вместе с дизайном игры, а не после релиза.
Где применяется / связь с практикой
Освойте тему на практике
Путь «механика -> сборка на телефон -> публикация» — то, что проходит каждый начинающий разработчик игр. Системно пройти его на Unity с проверкой домашних заданий можно на курсе «Unity Game Developer. Basic». Бесплатно посмотреть, как преподаватели разбирают практические задачи геймдева, можно на открытых уроках Otus.
Смежная тема: план создания своей игры.
FAQ
Можно ли сделать мобильную игру без Mac?
Для Android — да, Unity и Godot работают на Windows и Linux. Для публикации в App Store нужна сборка в Xcode, то есть Mac или облачный сервис сборки на macOS.
Какой язык учить для мобильных игр?
Язык определяется движком: C# для Unity, GDScript или C# для Godot, C++ и визуальные Blueprints для Unreal, Lua для Defold и Solar2D. Kotlin и Swift нужны, если писать игру без движка или делать нативные плагины.
Сколько стоит выпустить первую игру?
Минимальные обязательные расходы — аккаунты разработчика (25 USD разово в Google Play, 99 USD в год в App Store). Движки Unity Personal и Godot на старте бесплатны, основная цена — ваше время и, при необходимости, покупные ассеты.



