Тестування продуктивності графіки на різних пристроях

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

Від імерсивних застосунків до ігрових світів і 3D-сцен

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

Відвідати персоналізований сайт
Показано 1 з 1 послугУсі 242 послуг
Тестування продуктивності графіки на різних пристроях
Середня
від 2 робочих днів до 1 тижня
Часті питання

Наші компетенції

Які етапи розробки гри?

Останні роботи

  • image_games_mortal_motors_495_0.webp
    Розробка гри для компанії Mortal Motors
    683
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Покрокова стратегія у фентезі сеттингу With Fire And Sword
    862
  • image_games_second_team_604_0.webp
    Розробка ігри для компанії Second term
    491
  • image_games_phoenix_ii_606_0.webp
    3D-анімація – тизер для гри phoenix 2.
    533

Тестування продуктивності графіки на різних пристроях

Гра, яка видає стабільні 60 fps на Pixel 7, може впасти до 18 fps на Redmi Note 9 — і не тому що телефон «слабкий». Це тому що Adreno 618 та Mali-G52 по-різному обробляють один і той же шейдер, і ніхто не перевіряв поведінку на Mali перед релізом. Тестування продуктивності графіки — це про розуміння апаратних різниць та про те, щоб гра не стала slideshow на пристроях, які займають 30% вашої цільової аудиторії.

Де приховуються реальні проблеми продуктивності

Draw calls та batching. 200 draw calls на мобільному пристрої — це червона зона. Але сам по собі лічильник нічого не говорить про причину. UI через Canvas в режимі Overlay з кількома дочірніми canvas, кожен з яких робить override sorting — це гарантований розрив усіх батчей. Unity не може об'єднати в один batch елементи з різних canvas override. Результат: 80 draw calls тільки на HUD, які інженер міг би звести до 5–8 при правильній ієрархії.

Overdraw. На мобільних GPU (tile-based deferred rendering: Adreno, Mali, PowerVR) overdraw убиває продуктивність швидше, ніж на десктопних. Рендеринг одного пікселя 4 рази підряд — це в 4 рази більше роботи на GPU. Particle systems з Additive blending, UI-шари поверх один одного без culling, прозорі меші — типові джерела overdraw. Unity Frame Debugger показує послідовність draw calls, але RenderDoc дає наочніше: він окрашує overdraw тепловою картою прямо в viewport.

Тепловий троттлінг. Середньобюджетні Android-пристрої через 3–5 хвилин інтенсивної гри знижують тактову частоту CPU/GPU на 20–40% через перегрів. На емуляторі це не відтворюється ніяк. Тому тест на sustained performance — тільки на реальному залізі, і не 30 секунд, а мінімум 20 хвилин ігрової сесії.

Інструменти та методологія

Основний workflow: Unity ProfilerFrame DebuggerMemory Profiler → платформо-специфічні інструменти.

Unity Profiler дає breakdown CPU по потокам (Main Thread, Render Thread, Job Worker) та GPU timeline — але GPU timeline працює коректно не на всіх пристроях. На деяких Android через ADB Profiler показує нулі в GPU блоці. У цьому випадку використовуємо нативні інструменти:

  • Adreno GPU Profiler (Qualcomm): детальний розбив по стадіям пайплайна, HSR (Hidden Surface Removal) ефективність, shader cycle counts
  • Mali Graphics Debugger (Arm): аналогічно для Mali-архітектур, плюс bandwidth візуалізація
  • Xcode Instruments + Metal Debugger: для iOS/Metal — обов'язковий інструмент, без альтернатив
  • RenderDoc: кросс-платформенний frame capture з повним state inspector — використовуємо для аналізу проблем шейдерів та батчингу незалежно від платформи

Для автоматизованого бенчмаркингу — Unity Performance Testing Package (com.unity.test-framework.performance). Дозволяє писати тести, які замірюють конкретні метрики (frame time, GC allocations, draw calls) та зберігають baseline для порівняння між білдами.

На практиці: для мобільної гри з відкритим світом ми виявили через Mali Graphics Debugger, що кастомний шейдер води використував textureCubeLod з precision mediump, що на Mali-G76 дав артефакти семплювання та тригарив fallback на software path — fps в зоні води просідав з 45 до 22. Заміна на textureCubeLod з precision highp усунула артефакти, але добавила 8% навантаження. Підсумкове рішення — спрощений шейдер води для пристроїв з Mali через Quality Settings та platform-specific material override.

Матриця пристроїв для тестування

Тестувати на одному «репрезентативному» пристрої — недостатньо. Мінімальна матриця для мобільного проекту:

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-поведінки.

Процес

Починаємо з профілювання baseline на кожному рівні матриці. Фіксуємо frame time, draw calls, overdraw, memory. Визначаємо проблемні сцени/ситуації (зазвичай це початок матчу, вибухові ефекти, відкриті простори).

Далі — ітеративна оптимізація: атласування текстур, LOD-групи, GPU Instancing для повторюючихся мешей, occlusion culling, Shader LOD. Після кожної зміни — повторний замір на реальних пристроях.

Обсяг тестування Орієнтовні терміни
Профілювання однієї сцени, 2 пристрої 3–5 днів
Повне профілювання гри, матриця 6 пристроїв 2–3 тижні
Тестування + оптимізація + валідація 4–8 тижнів

Вартість розраховується після аналізу проекту та необхідної матриці пристроїв.