Как заставить мобильную игру работать в 60 кадров/с? Методы рендеринга

Игра теряет кадры на средних устройствах, и игроки уходят? Мы оптимизируем рендеринг мобильной игры под ключ: находим узкие места, перестраиваем отрисовку и добиваемся ровной картинки без потери качества. Возвращаемся с оценкой и планом работ.

Разработка и поддержка любых видов мобильных приложений:

Информационные и развлекательные мобильные приложения
Новостные приложения, игры, справочники, онлайн-каталоги, погодные, фитнес и здоровье, туристические, образовательные, социальные сети и мессенджеры, квиз, блоги и подкасты, форумы, агрегаторы
Мобильные приложения электронной коммерции
Интернет-магазины, B2B-приложения, маркетплейсы, онлайн-обменники, кэшбэк-сервисы, биржи, дропшиппинг-платформы, программы лояльности, доставка еды и товаров, платежные системы
Мобильные приложения для управления бизнес-процессами
CRM-системы, ERP-системы, управление проектами, инструменты для команды продаж, учет финансов, управление производством, логистика и доставка, управление персоналом, системы мониторинга данных
Мобильные приложения электронных услуг
Доски объявлений, онлайн-школы, онлайн-кинотеатры, платформы предоставления электронных услуг, платформы кешбека, видеохостинги, тематические порталы, платформы онлайн-бронирования и записи, платформы онлайн-торговли

Это лишь некоторые из типы мобильных приложений, с которыми мы работаем, и каждый из них может иметь свои специфические особенности и функциональность, а также быть адаптированным под конкретные потребности и цели клиента.

Услуги, которые мы предлагаем
Показано 1 из 1Все 1734 услуг
Как заставить мобильную игру работать в 60 кадров/с? Методы рендеринга
Сложный
~3-5 дней
Часто задаваемые вопросы

Почему мобильная игра не держит стабильные 60 кадров/с

Просадки кадров почти никогда не связаны с «железом» — они следствие того, как игра использует графический конвейер. Оптимизация рендеринга мобильной игры начинается с поиска узкого места: одно и то же падение с 60 до 40 кадров/с дают перерисовка интерфейса поверх сцены, лишние вызовы отрисовки на каждый объект, утечки памяти под текстуры и тяжёлые эффекты вроде прозрачности и постобработки. Пока причина не локализована, любые правки — угадывание.

Перерисовка интерфейса — самый частый скрытый виновник. Каждый элемент HUD, обновляющийся в игровом цикле, заставляет пересобирать слой поверх сцены, и стоимость растёт линейно с числом таких элементов. Лишние вызовы отрисовки дают похожий эффект: сотни отдельных объектов вместо объединённых в пакеты нагружают процессор сильнее, чем сама геометрия. Утечки памяти под текстуры и буферы проявляются не сразу — первые минуты игра держит кадры, а к середине сессии начинаются рывки и принудительная выгрузка.

У игрока это выглядит предсказуемо: нагрев устройства, троттлинг через 10-15 минут, просадки в динамичных сценах и жалобы на «тормозит на моём телефоне». Разбираем, как каждое из этих узких мест закрывается на уровне рендеринга, а не костылями в игровой логике.

Что даёт оптимизация рендеринга мобильной игры

Оптимизация рендеринга — это не «ускорить картинку», а убрать лишнюю работу с критического пути кадра. Когда бюджет кадра соблюдается, движок успевает отрисовать сцену и подготовить следующий кадр, а не догонять пропущенное. На практике это выглядит так: вместо просадок на сложных сценах — ровный график, где время кадра держится в пределах, заданных частотой обновления экрана.

Первое, что видит игрок, — стабильная частота кадров и предсказуемая плавность анимации. Второе, что он чувствует, — время отклика управления: нажатие обрабатывается в том же кадре, а не через два-три. Это прямо влияет на удержание — в динамичных сценах задержка в пару кадров воспринимается как «игра тормозит», даже если средний показатель высокий.

Дальше — энергопотребление игры. Когда рендер не делает лишней работы, устройство меньше греется и реже сбрасывает частоты под нагрузкой. Это снимает главную причину «плывущей» производительности: телефон не уходит в троттлинг через десять минут игры, и кадры не начинают проседать к середине сессии.

И последнее по порядку, но не по важности — поддержка слабых устройств. Оптимизированный рендер расширяет список моделей, на которых игра идёт комфортно, без отдельной урезанной сборки под каждый класс. Мы работаем на Unity и профилируем реальные сцены на целевых устройствах, а не только в редакторе, — поэтому эффект от оптимизации виден на живых замерах, а не в теории.

Подходы к рендерингу: что выбрать под задачу

Выбор конвейера рендеринга определяет потолок производительности всей игры: сменить его на середине проекта дороже, чем заложить правильный сразу. Прямой конвейер рисует каждый объект по очереди — предсказуемо и дёшево на сцене с сотней объектов, но на плотной сцене упирается в число вызовов отрисовки. Пакетная отрисовка объединяет однотипные объекты в один вызов и снимает это ограничение, а отложенная отрисовка переносит расчёт освещения в отдельный проход и держит стабильный кадр там, где много источников света.

Вариант Когда подходит Ограничения
Прямой конвейер Простые сцены, 2D, ранний прототип Растёт число вызовов отрисовки, просадки на плотных сценах
Пакетная отрисовка Много однотипных объектов, мобильные 3D-сцены Требует общих материалов и текстур, сложнее с прозрачностью
Отложенная отрисовка Много динамического света, сложные сцены Выше нагрузка на память, слабее на слабых устройствах

Уровень детализации работает поверх любого конвейера: дальние объекты получают упрощённую геометрию и текстуры, и это освобождает бюджет кадра под то, что игрок видит вблизи. Ограничения рендеринга на мобильных задаёт не только чип, но и тепловой троттлинг — стабильные 60 кадров важнее пиковых 120, которые держатся первые минуты.

Разбираем, как подобрать конвейер под конкретную сцену и удержать частоту кадров без просадок.

Как проходит оптимизация рендеринга мобильной игры

Оптимизация рендеринга — это не «поправить шейдеры и стало быстрее», а цикл: замер, поиск узкого места, правка, повторный замер на живом устройстве. Ниже — как проходит такая работа у наших инженеров.

  1. Снимаем базовые метрики. Замеряем частоту кадров и время отрисовки кадра на референсных устройствах — от бюджетных до флагманских. Фиксируем не средний показатель, а распределение: просадки в 90-й перцентили заметны игроку сильнее, чем ровный средний кадраж.
  2. Профилируем рендеринг. Разбираем кадр по стадиям: подготовка сцены, отрисовка геометрии, работа с прозрачностью, постобработка. Профилировщик показывает, какая стадия съедает бюджет кадра, — дальше работаем точечно, а не «оптимизируем всё».
  3. Ищем узкие места. Типовые причины просадок: избыточные вызовы отрисовки, перерисовка пикселей поверх друг друга, тяжёлые шейдеры, лишние источники света, неоптимальные текстуры. Каждое подтверждаем замером, а не догадкой.
  4. Правим шейдеры и материалы. Упрощаем вычисления в шейдерах, убираем лишние проходы, объединяем материалы, чтобы сократить число вызовов отрисовки. Цель — уложить кадр в бюджет при целевой частоте.
  5. Проверяем на устройствах. Прогоняем сборку на реальном парке устройств: разные чипы, объёмы памяти, версии системы. Эмулятор не покажет тепловой троттлинг и реальную деградацию — только живой прогон.
  6. Повторяем цикл. После правок снова снимаем метрики и сравниваем с базовыми. Если просадки остались — возвращаемся к профилированию, пока распределение кадров не станет ровным.
  7. Передаём результат. Отдаём замеры до/после, список правок и рекомендации, чтобы команда могла поддерживать производительность при добавлении нового контента.

Такой цикл закрывает задачу не разово, а как процесс: каждая правка подтверждена замером, а не ощущением «вроде стало плавнее».

Что заказчик получает по итогам работ

По итогам оптимизации рендеринга заказчик получает не отчёт, а рабочий комплект, с которым проект живёт дальше без нашего участия. Ниже — что именно остаётся в репозитории и в документации.

  • Профили качества графики — набор переключаемых конфигураций от «энергосбережение» до «максимум»: дальность прорисовки, плотность теней, уровень сглаживания, разрешение рендера. Каждый профиль привязан к классу устройства, поэтому на слабых моделях игра не проваливается в просадки, а на флагманах не выглядит урезанной.
  • Схема сцены — карта того, что и когда попадает в кадр: статическая геометрия, динамические объекты, эффекты, слои интерфейса. По ней видно, какие узлы можно отключать или подменять на упрощённые, не ломая картинку.
  • Политики качества — правила, по которым движок сам снижает нагрузку: приоритеты отрисовки, бюджеты на кадр, поведение при перегреве и разряде батареи. Игра держит целевые 60 кадров/с и не уходит в перегрев на длинных сессиях.
  • Документация рендеринга — описание конвейера, точек замера и того, как каждая настройка влияет на кадровую частоту. Инженер, который придёт в проект позже, разберётся без обращений к нам.
  • Регламент проверки — чек-лист приёмки: на каких устройствах и сценах замеряем, какие пороги считаем нормой, что фиксируем в отчёте. Регресс по кадрам ловится до релиза, а не в отзывах.
  • Настроенные настройки графики в меню — понятные пользователю переключатели с честными подписями, чтобы он сам выбирал баланс между картинкой и временем работы от батареи.
  • Скрипты замеров — автоматический прогон сцен с записью кадровой частоты и времени кадра, чтобы каждую сборку можно было сравнить с предыдущей.

Комплект передаём с разбором: показываем, где были узкие места, что изменили и как проверить результат своими руками. Опишите задачу — вернёмся с оценкой и планом работ.

Кейс: как игра перестала терять кадры на средних устройствах

Проект — казуальная игра с изометрической сценой и десятками анимированных объектов. На среднем сегменте устройств частота кадров проседала до 40–45, а на массовых сценах — до 30, с регулярными пропусками: доля кадров, отрисованных дольше бюджета, доходила до четверти. Игроки жаловались на «рваное» управление, а не на графику — просадки били по отзывчивости ввода.

Мы начали с профилирования на реальных устройствах среднего сегмента, а не на флагманах: замеряли время кадра, распределение пропусков и нагрузку на отрисовку по кадрам. Оказалось, что узкое место — не количество объектов, а избыточные вызовы отрисовки и перерисовка статичного фона каждый кадр. Собрали сцену в пакеты по материалам, статику вынесли в отдельный слой, анимации перевели на общий атлас, а физику и логику отвязали от частоты отрисовки — теперь они считаются с фиксированным шагом и не «плывут» при просадках.

Unity дал инструменты для пакетной отрисовки и профилирования, но решала не платформа, а порядок работы: сначала замер, потом изменение, потом повторный замер на том же наборе устройств.

После оптимизации частота кадров на средних устройствах вышла на стабильные 58–60 в массовых сценах, доля пропущенных кадров упала с четверти до единичных процентов, а разброс между лучшим и худшим кадром сократился в разы — рендеринг перестал «дёргаться». На слабом сегменте удержали 45–50 без визуальных упрощений, которые заметил бы игрок.

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

Чем отличается отложенная отрисовка от прямой?

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

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

Выбор подхода упирается в профиль сцены, а не в «лучший» метод. Прямая отрисовка выигрывает там, где объектов мало, но они часто меняют состояние, либо где нужна предсказуемая задержка ввода. Отложенная — где объектов много, они статичны по материалу и их можно эффективно сгруппировать. Смешанный вариант встречается чаще всего: интерфейс и эффекты рисуются напрямую, а фон и массовые объекты — через буфер.

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

На практике подход не фиксируют раз и навсегда: его выбирают под конкретную сцену и переключают между режимами по её профилю. Сначала снимают замеры — где именно теряется время кадра, на процессоре или на ускорителе, — и уже под это подбирают метод. Так оптимизация рендеринга мобильной игры опирается на данные, а не на привычку, и удержание стабильных 60 кадров становится управляемой задачей.

Частые технические сомнения по оптимизации рендеринга

Перед стартом работ заказчики задают одни и те же вопросы: не сломается ли игра на старых устройствах, сколько это займёт, что будет с геймплеем. Ниже — прямые ответы, без общих слов.

Оптимизация не сломает рендеринг на слабых устройствах?

Нет, если строить её на профилях качества, а не на едином пресете. Мы снимаем замеры на реальных устройствах из вашей аудитории, определяем бюджет кадра для каждого класса и разводим настройки: где-то снижаем плотность частиц и разрешение теней, где-то переключаем материал на более дешёвый. Слабые устройства получают стабильный кадр без просадок, флагманы — полную картинку. Совместимость проверяем до релиза, а не после жалоб.

Сколько времени занимает оптимизация рендеринга?

Зависит от масштаба сцены и числа платформ. Первичный аудит с замерами и планом — несколько дней, дальше итерации по узким местам. Если проблема в одном тяжёлом эффекте, правки занимают дни; если перестраивается весь конвейер отрисовки — недели. Точный срок называем после замеров, а не «на глаз».

Какие риски у изменений и можно ли откатиться?

Основной риск — визуальные артефакты при агрессивном снижении качества. Поэтому каждое изменение идёт отдельной веткой с замером до и после, а не одним большим коммитом. Любой шаг откатывается без потери предыдущих улучшений, а эталонные сборки храним для сравнения.

Оптимизация изменит геймплей или картинку?

Цель — сохранить игровой опыт, убрав лишнюю нагрузку. Мы не режем то, что игрок замечает: ключевые эффекты, читаемость сцены, отзывчивость управления остаются. Убираем скрытые издержки — лишние вызовы отрисовки, дублирующие материалы, невидимую геометрию. Визуально игра выглядит так же, а идёт ровнее.

Нужно ли переписывать проект под новую платформу?

Обычно нет. Оптимизация рендеринга — это точечная работа с существующим кодом и настройками, а не переписывание. Мы подстраиваем конвейер под текущую архитектуру, поэтому релизный цикл не растягивается, а команда продолжает выпускать обновления параллельно.

Если остались сомнения по вашему проекту — опишите задачу, вернёмся с оценкой и планом работ.

Обсудим вашу задачу по оптимизации рендеринга

Чтобы вернуться с оценкой и планом оптимизации, нам нужен не абстрактный запрос «игра тормозит», а срез текущего состояния рендера. Чем конкретнее вводные, тем точнее оценка работ и меньше итераций на согласование.

Что прислать для старта:

  • Профиль кадров: запись из профайлера по типовой сцене — где именно проседает время кадра (отрисовка, логика, физика, загрузка ресурсов).
  • Целевые устройства: модели, на которых приложение обязано держать стабильные кадры, и текущие показатели на них.
  • Список тяжёлых мест: сцены с максимальным числом объектов, эффектами, прозрачностью, динамическим светом.
  • Исходники и доступы: репозиторий, ветка, сборка, доступ к системам аналитики и отчётам о сбоях.
  • Ограничения: сроки, платформы, требования к совместимости со старыми устройствами.

Дальше работаем по этапам. Сначала воспроизводим просадки на стенде и фиксируем базовые метрики — без этого любая оптимизация превращается в угадывание. Затем разбираем узкие места: батчинг вызовов отрисовки, переиспользование ресурсов, разгрузку главного потока, уровни детализации. После — план оптимизации с приоритетами: что даёт эффект сразу, что требует переработки сцен.

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

Подход к отрисовке Когда выбираем Что даёт по кадрам Срок работ
Прямая отрисовка Простая графика, мало объектов на экране Ровный ход на слабых устройствах, запас по нагрузке Короткий цикл: правки точечные
Отложенная отрисовка Много источников света и прозрачных слоёв Стабильный ход при сложной сцене, меньше просадок в бою Средний цикл: перестройка конвейера сцены
Смешанный вариант Часть сцены простая, часть тяжёлая Баланс качества и хода, гибкая настройка под устройство Средний цикл с настройкой по классам устройств
Упрощение геометрии и материалов Тяжёлые модели и текстуры Рост хода без потери узнаваемости картинки Короткий цикл: пересборка ассетов
Динамическое качество Широкий разброс устройств у игроков Ход держится на средних и слабых моделях Длинный цикл: правила переключения и проверка
Этап работ Что делаем Результат для заказчика
Замер и поиск узких мест Снимаем профиль игры на реальных устройствах Видно, где именно теряются кадры
Перестройка отрисовки Меняем подход под задачу сцены Ход выравнивается, провалы уходят
Работа с ассетами Облегчаем модели, текстуры, эффекты Картинка сохраняется, нагрузка падает
Настройка под устройства Задаём правила качества для разных моделей Игра идёт ровно у широкой аудитории
Проверка и передача Прогон на парке устройств, отчёт Подтверждённый ход и понятная поддержка
Стек и зоны Роль в задаче На что влияет
Движок проекта Среда, в которой ведётся оптимизация Скорость правок и переносимость решений
Профилировщик Показывает нагрузку по кадрам Точность поиска узких мест
Парк тестовых устройств Проверка на слабых и средних моделях Достоверность результата
Инструменты сборки ассетов Подготовка облегчённой графики Вес сцены и скорость загрузки

Работаем на профессиональном оборудовании — заказчик получает воспроизводимый результат, а не разовую правку.

Наши компетенции:

Последние работы

  • Разработка мобильного приложения для компании FEEDME
    Разработка мобильного приложения для компании FEEDME
    1009
  • Разработка мобильного приложения для компании XOOMER
    Разработка мобильного приложения для компании XOOMER
    902
  • Разработка мобильного приложения для компании RHL
    Разработка мобильного приложения для компании RHL
    1331
  • Разработка мобильного приложения для компании ZIPPY
    Разработка мобильного приложения для компании ZIPPY
    1179
  • Разработка мобильного приложения для компании Affhome
    Разработка мобильного приложения для компании Affhome
    1106
  • Разработка мобильного приложения для компании FLAVORS
    Разработка мобильного приложения для компании FLAVORS
    713