Как создать мобильную игру: движок, этапы и публикация в сторах

Как создать мобильную игру: движок, этапы и публикация в сторах Полезное

Создание мобильной игры — это путь от идеи до сборки, которую игрок скачивает из магазина приложений: выбор движка, прототип основной механики, графика и звук, тестирование на реальных телефонах, публикация в 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# — несколько недель вечерами, без знания программирования дольше.

  1. Одна механика. Сформулируйте игру одной фразой: «шар катится, игрок свайпом уводит его от препятствий». Жанр и сюжет пока не важны.
  2. Установка. Через Unity Hub поставьте актуальную LTS-версию редактора (на дату проверки — Unity 6.3 LTS) с модулем Android Build Support. Для iOS нужен Mac с Xcode.
  3. Прототип на примитивах. Кубы и сферы вместо графики. Проверьте, интересно ли играть 30 секунд.
  4. Управление под палец. Касание и свайп, крупные зоны нажатия, безопасные области экрана (вырез камеры, скругленные углы).
  5. Сборка на телефон. В Unity 6 — File — Build Profiles, платформа Android, включенная отладка по USB на устройстве. Результат этапа — APK, запущенный на телефоне.
  6. Графика, звук, меню, сохранение прогресса. Только после того, как механика работает на устройстве.
  7. Тесты на слабых устройствах, затем публикация (раздел ниже).

Первый скрипт: движение, не зависящее от частоты кадров

Телефоны отрисовывают разное число кадров в секунду: 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 на старте бесплатны, основная цена — ваше время и, при необходимости, покупные ассеты.

OTUS Журнал
Скидка 5% 12-19 октября на курсы (popup)
Бесплатные открытые уроки (поп-ап)