Игра, которая выдаёт стабильные 60 fps на Pixel 7, может провалиться до 18 fps на Redmi Note 9 — и это не потому что телефон «слабый». Это потому что Adreno 618 и Mali-G52 по-разному обрабатывают один и тот же шейдер, и никто не проверял поведение на Mali до релиза. Мы каждый день разбираем такие кейсы и знаем, как превратить slideshow в плавную картинку. За время работы мы провели тестирование более 50 проектов — от гиперказуалок до open-world RPG. Тестирование производительности графики — это про понимание аппаратных различий и про то, чтобы игра не теряла аудиторию.
Что входит в работу
| Этап | Результат |
|---|---|
| Анализ проекта и сбор билдов | Матрица устройств, тестовые сценарии |
| Профилирование baseline | Frame time, draw calls, overdraw, memory по каждому устройству |
| Итеративная оптимизация | Атласирование, LOD, GPU Instancing, occlusion culling, Shader LOD |
| Повторное тестирование | Сравнение метрик до/после, выявление новых проблем |
| Отчёт и обучение команды | Документация, логи, доступ к отчётам на 2 месяца |
Почему игра тормозит только на устройствах с Mali GPU?
Архитектура Mali использует tile-based deferred rendering, при котором overdraw и шейдерные инструкции с высокой точностью могут вызывать падение производительности. Например, точность mediump в textureCubeLod может триггерить софтверный fallback. Мы выявляем такие случаи через Mali Graphics Debugger.
Где прячутся реальные проблемы производительности
Draw calls и batching. 200 draw calls на мобильном устройстве — красная зона. UI через Canvas в режиме Overlay с несколькими дочерними canvas, каждый из которых делает override sorting, гарантированно разрывает все батчи. Результат: 80 draw calls только на HUD, которые можно свести к 5–8 при правильной иерархии.
Overdraw. На мобильных GPU (tile-based deferred rendering) overdraw убивает производительность быстрее, чем на десктопных. Рендеринг одного пикселя 4 раза подряд — в 4 раза больше работы на GPU. Particle systems с Additive blending, UI-слои без culling, прозрачные меши — типичные источники. RenderDoc окрашивает overdraw тепловой картой прямо в viewport.
Тепловой троттлинг. Среднебюджетные Android-устройства через 3–5 минут интенсивной игры снижают тактовую частоту CPU/GPU на 20–40% из-за перегрева. На эмуляторе это не воспроизводится. Поэтому тест на sustained performance — только на реальном железе, минимум 20 минут игровой сессии.
Как составить матрицу устройств для тестирования?
Тестировать на одном «репрезентативном» устройстве — недостаточно. Минимальная матрица для мобильного проекта:
- Low-end (target floor): Qualcomm Snapdragon 460/Adreno 610, Mali-G52, 3 GB RAM.
- Mid-range (основная аудитория): Snapdragon 700-серия/Adreno 618-619, Mali-G76, 4–6 GB RAM.
- High-end (флагман): Snapdragon 8 Gen 2, Apple A16, 8+ GB RAM.
iOS отдельно: iPhone SE 2 (A13), iPhone 12 (A14), iPhone 14 Pro (A16) — три поколения, три разных Metal-поведения.
Почему тест на эмуляторе не заменяет реальное железо?
Эмулятор не воспроизводит тепловой троттлинг — он использует ресурсы ПК без ограничений. Кроме того, эмулятор не эмулирует tile-based архитектуру Mali и PowerVR, поэтому overdraw и шейдерные проблемы могут остаться незамеченными. Только на физическом устройстве можно замерить реальный FPS budget, температурные сбросы и поведение аккумулятора.
Инструменты и методология
Основной workflow: Unity Profiler → Frame Debugger → Memory Profiler → платформо-специфичные инструменты.
Unity Profiler даёт breakdown CPU по потокам и GPU timeline, но GPU timeline работает корректно не на всех устройствах. На некоторых Android через ADB Profiler показывает нули в GPU блоке. В этом случае используем нативные инструменты:
- Adreno GPU Profiler (Qualcomm): детализированная разбивка по стадиям пайплайна, HSR efficiency, shader cycle counts.
- Mali Graphics Debugger (Arm): аналогично для Mali-архитектур, плюс визуализация bandwidth.
- Xcode Instruments + Metal Debugger: для iOS/Metal — обязательный инструмент.
- RenderDoc — кроссплатформенный frame capture с полным state inspector для анализа проблем шейдеров и батчинга.
Для автоматизированного бенчмаркинга — Unity Performance Testing Package. Позволяет писать тесты, замеряющие метрики (frame time, GC allocations, draw calls) и сохраняющие baseline.
Как мы это делаем
- Первичный анализ: изучаем билд, определяем целевые устройства, согласовываем матрицу.
- Профилирование baseline: на каждом устройстве фиксируем frame time, draw calls, overdraw, memory.
- Идентификация узких мест: находим проблемные сцены (начало матча, взрывные эффекты, открытые пространства).
- Итеративная оптимизация: атласирование текстур, LOD-группы, GPU Instancing, occlusion culling, Shader LOD.
- Повторное тестирование: после каждого изменения — замер на всех устройствах.
- Валидация: проверка sustained performance (20+ минут) и отчёт с рекомендациями.
| Объём тестирования | Ориентировочные сроки |
|---|---|
| Профилирование одной сцены, 2 устройства | 3–5 дней |
| Полное профилирование игры, матрица 6 устройств | 2–3 недели |
| Тестирование + оптимизация + валидация | 4–8 недель |
Свяжитесь, чтобы обсудить детали и оценить ваш проект. Получите консультацию инженера с опытом оптимизации под любые GPU.






