Тестирование производительности графики на различных устройствах

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

От иммерсивных приложений до игровых миров и 3D-сцен

Наша выделенная команда для VR/AR/MR-разработки, Unity-продакшна и 3D-моделирования и анимации с собственными кейсами и презентациями.

Посетить персонализированный сайт
Показано 1 из 1Все 242 услуг
Тестирование производительности графики на различных устройствах
Средний
от 2 дней до 1 недели
Часто задаваемые вопросы

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

Какие этапы разработки игры?

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

  • image_games_mortal_motors_495_0.webp
    Разработка игры для компании Mortal Motors
    1438
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Пошаговая стратегия в фэнтези сеттинге With Fire And Sword
    972
  • image_games_second_team_604_0.webp
    Разработка игры для компании Second term
    586
  • image_games_phoenix_ii_606_0.webp
    3D-анимация — тизер для игры phoenix 2.
    651
  • image_training-quizzes_kids_shopping_quiz_614_0.webp
    Обучающая викторина для детей «Покупки в магазине»
    13

Игра, которая выдаёт стабильные 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.

Как мы это делаем

  1. Первичный анализ: изучаем билд, определяем целевые устройства, согласовываем матрицу.
  2. Профилирование baseline: на каждом устройстве фиксируем frame time, draw calls, overdraw, memory.
  3. Идентификация узких мест: находим проблемные сцены (начало матча, взрывные эффекты, открытые пространства).
  4. Итеративная оптимизация: атласирование текстур, LOD-группы, GPU Instancing, occlusion culling, Shader LOD.
  5. Повторное тестирование: после каждого изменения — замер на всех устройствах.
  6. Валидация: проверка sustained performance (20+ минут) и отчёт с рекомендациями.
Объём тестирования Ориентировочные сроки
Профилирование одной сцены, 2 устройства 3–5 дней
Полное профилирование игры, матрица 6 устройств 2–3 недели
Тестирование + оптимизация + валидация 4–8 недель

Свяжитесь, чтобы обсудить детали и оценить ваш проект. Получите консультацию инженера с опытом оптимизации под любые GPU.

Тестирование и QA

Мы не раз видели, как проект на финишной прямой превращается в кошмар: на машине разработчика всё летает, а на Samsung Galaxy A12 — 15 FPS и вылеты, на iPad Air — мыльные текстуры. Без выстроенного QA-процесса тестирование игр становится лотереей. Наша команда с 8‑летним опытом протестировала более 30 мобильных игр и в каждом проекте находила критические проблемы, которые не выявили обычные прогоны. Тестирование игр под ключ — от функционального до нагрузочного — с гарантией качества и отчётом, готовым к внедрению. Оценим ваш проект за 3 дня — свяжитесь с нами.

Как автоматизировать тестирование в Unity?

Самый эффективный способ поймать регрессию — автотесты, которые запускаются без человека. В Unity это Unity Test Framework (UTF) на базе NUnit. Два режима.

Edit Mode Tests работают без игрового цикла — скорость выполнения в миллисекундах. Подходят для формул урона, расчёта экономики, валидации конфигов. Play Mode Tests запускают полный игровой цикл — тестируют логику MonoBehaviour, корутины, переходы между сценами.

Пример:

[UnityTest]
public IEnumerator PlayerTakeDamage_HealthReduces()
{
    var go = new GameObject();
    var health = go.AddComponent<HealthComponent>();
    health.Initialize(100);

    health.ApplyDamage(30);

    yield return null;

    Assert.AreEqual(70, health.CurrentHealth);
}

Покрывайте то, что ломается чаще всего: система сохранений, экономика, боевая логика. 100% покрытие не нужно — достаточно критических путей. UI (UGUI, UI Toolkit) автоматизировать сложнее: для этого используют InputSystem.QueueEvent или Appium на мобильных платформах. Автотесты выполняются в 50 раз быстрее ручных прогонов при регрессии — это сокращает бюджет на регрессионное тестирование на 40%.

Почему профилирование на реальном устройстве критично?

Тесты не ловят проблемы производительности. Для этого нужен профилировщик на целевой платформе. Unity Profiler — стартовая точка. Ключевые шаги:

  1. Профилируйте на устройстве, а не в редакторе — Editor добавляет оверхед. Подключите девайс через USB с Development Build и Autoconnect Profiler.
  2. Смотрите Main Thread и Render Thread отдельно. Типичные проблемы:
    • Physics.FixedUpdate >2ms — сложная физика
    • Canvas.BuildBatch на каждом кадре — лишние Dirty вызовы UI
    • GC.Collect — выделение памяти в горячем пути (внутри Update)
  3. Используйте ProfilerMarker для локализации:
using Unity.Profiling;

static readonly ProfilerMarker k_PathfindMarker = new ProfilerMarker("Pathfinding.Calculate");

void UpdateAI()
{
    using (k_PathfindMarker.Auto())
    {
        // pathfinding code
    }
}

Memory Profiler (пакет com.unity.memoryprofiler) даёт снапшоты памяти: находит утечки (объекты, не освобождённые после смены сцены), сравнивает два снимка. Самые частые причины проблем на мобайле: текстуры без правильного формата (ASTC для iOS, ETC2 для Android), аудио в WAV вместо Vorbis, объекты в DontDestroyOnLoad, которые накапливаются.

Frame Debugger (Window → Analysis → Frame Debugger) позволяет пройти по каждому draw call в кадре. Для мобильных проектов норма — 50–150 draw calls; если больше 300 — батчинг не работает или сцена перегружена. Wikipedia: Software performance testing подчёркивает важность профилирования на реальном оборудовании.

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

Инструмент Цель Что проверяет
Unity Profiler CPU/GPU Время выполнения потоков, аллокации, GC
Memory Profiler Память Утечки, распределение по типам
Frame Debugger Графика Draw calls, батчинг, overdraw

Функциональное и регрессионное тестирование

Функциональное тестирование строится на тест-планах: для каждой фичи — ожидаемый результат, шаги воспроизведения, критерии прохождения. Покрываем smoke, sanity и acceptance-тесты. Регрессионное тестирование — запуск накопленных кейсов перед каждым релизом, а не только перед мажорными.

Инструменты управления: TestRail, Qase, Zephyr. Для небольших команд — Notion или Google Sheets со структурированными чеклистами.

Тестирование на реальных устройствах

Эмуляторы не воспроизводят тепловой дросселинг, реальный GPU и ограничения памяти. Минимальный набор — 20+ устройств всех сегментов:

Категория Примеры RAM
Low-end Android Snapdragon 662 (Samsung A12, Redmi Note 10) 3 ГБ
Mid-range Android Snapdragon 720G/765G 6 ГБ
Flagship Android Snapdragon 888+ 8 ГБ
Low-end iOS iPhone SE 2 3 ГБ
iOS средний iPhone 13/14 4–6 ГБ
iPad Последнее поколение 6–8 ГБ

Для масштабного тестирования — облачные фермы: Firebase Test Lab, BrowserStack App Automate, AWS Device Farm. Они позволяют запускать сотни параллельных тестов на реальных устройствах.

Нагрузочное тестирование (мультиплеер)

Цель — найти деградацию сервера до релиза. Инструменты: k6 (WebSocket/HTTP API), Gatling (сложные сценарии с состоянием). Для специфических протоколов пишут кастомный stress-клиент на Go или C#.

Параметры проверки:

  • Поведение при пиковом CCU (concurrent users) — до 1000+ CCU
  • Деградация латентности под нагрузкой (p95 latency)
  • Утечки памяти на сервере за 72+ часа работы
  • Graceful degradation при отказе одного из узлов

Краш-репортинг и мониторинг

После релиза QA продолжается через мониторинг. Firebase Crashlytics — стандарт для мобильных игр: автоматический сбор крашей с символизацией стектрейсов, real-time уведомления. Sentry — для серверных компонентов и WebGL. ANR (Application Not Responding) настраивается отдельно — Play Console показывает их в отдельном разделе. Инвестиции в тестирование окупаются за 2–3 релиза, снижая затраты на исправление багов после релиза на 60%.

Что входит в нашу работу

  • Детальный план тестирования (чек-лист, сценарии, приоритеты)
  • Набор автоматизированных тестов (экономика, сохранения, критические пути — покрытие 70%)
  • Профилирование CPU/GPU/памяти с отчётом по каждому багу
  • Ручное тестирование на 20+ реальных устройствах (low-end / mid-range / flagship)
  • Нагрузочное тестирование сервера (до 1000+ CCU в течение 12 часов)
  • Дашборд с метриками и историей прогонов
  • Обучение вашей команды основам автотестирования и профилирования

Получите консультацию по вашему проекту — мы оценим текущую сборку и предложим план оптимизации.

Процесс работы

  1. Анализ — изучаем архитектуру, собираем метрики текущей сборки, определяем цели по FPS и стабильности.
  2. План тестирования — создаём чек-лист, выбираем инструменты, согласовываем объём.
  3. Автоматизация — пишем тесты для критических путей, настраиваем CI-прогоны.
  4. Ручное тестирование — прогоняем сценарии на устройствах, фиксируем баги в трекере.
  5. Отчёт и рекомендации — предоставляем документ с найденными проблемами, их приоритетом и конкретными правками (оптимизация шейдеров, настройка батчинга, утечки).

Наши метрики

  • 8+ лет опыта в геймдеве (Unity, Unreal, мобильные/PC/консоли)
  • 30+ протестированных мобильных игр
  • Среднее повышение FPS после оптимизации — 30%
  • Сокращение времени регрессионного тестирования — 40%
  • Гарантия: все базы с Critical/High приоритетом исправляются до релиза
Чек-лист предрелизного тестирования
  • [ ] Профилирование CPU/GPU на low-end устройстве (30 мин игровой сессии)
  • [ ] Проверка утечек памяти через Memory Profiler (сравнение снапшотов до/после сцены)
  • [ ] Frame Debugger — не более 200 draw calls, проверка статического батчинга
  • [ ] Нагрузочный тест сервера: 500+ CCU, длительность 12 часов
  • [ ] ANR-мониторинг на Android (отдельно от крашей)
  • [ ] Функциональные автотесты на систему сохранений и экономику

Типичные ошибки в QA-процессе

  • Тестирование только на флагманах — большинство игроков на mid-end и low-end.
  • Отсутствие автотестов для экономики и сохранений — они ломаются при любом рефакторинге.
  • Пропуск нагрузочного тестирования сервера — игра выходит, набирает 10k DAU и сервер ложится.
  • Регрессия только перед мажорными релизами — критично перед каждым публичным обновлением.

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