Оптимізація споживання батареї мобільною грою

Оптимізація споживання батареї мобільною грою ## Вступ Ми часто бачимо ігри, які розряджають телефон за півтори години. При стабільних 60 FPS користувачі все одно залишають одно- та двозіркові відгуки — батарея тане на очах. Споживання енергії — прямий індикатор неефективного використання CPU та

Розробка та підтримка будь-яких видів мобільних додатків:

Інформаційні та розважальні мобільні програми
Новинки, ігри, довідники, онлайн-каталоги, погодні, фітнес та здоров'я, туристичні, освітні, соціальні мережі та месенджери, квіз, блоги та подкасти, форуми, агрегатори
Мобільні програми електронної комерції
Інтернет-магазини, B2B-додатки, маркетплейси, онлайн-обмінники, кешбек-сервіси, біржі, дропшиппінг-платформи, програми лояльності, доставка їжі та товарів, платіжні системи
Мобільні програми для управління бізнес-процесами
CRM-системи, ERP-системи, управління проектами, інструменти для команди продажів, облік фінансів, управління виробництвом, логістика та доставка, управління персоналом, системи моніторингу даних
Мобільні програми електронних послуг
Дошки оголошень, онлайн-школи, онлайн-кінотеатри, платформи надання електронних послуг, платформи кешбеку, відеохостинги, тематичні портали, платформи онлайн-бронювання та запису, платформи онлайн-торгівлі

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Оптимізація споживання батареї мобільною грою
Середній
~2-3 дні

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

Часті запитання

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

  • image_mobile-applications_feedme_467_0.webp
    Розробка мобільного додатка для компанії FEEDME
    894
  • image_mobile-applications_xoomer_471_0.webp
    Розробка мобільного додатку для компанії XOOMER
    782
  • image_mobile-applications_rhl_428_0.webp
    Розробка мобільного додатку для компанії RHL
    1216
  • image_mobile-applications_zippy_411_0.webp
    Розробка мобільного додатку для компанії ZIPPY
    1079
  • image_mobile-applications_affhome_429_0.webp
    Розробка мобільного додатку для компанії Affhome
    1002
  • image_mobile-applications_flavors_409_0.webp
    Розробка мобільного додатку для компанії FLAVORS
    597

Оптимізація споживання батареї мобільною грою

Вступ

Ми часто бачимо ігри, які розряджають телефон за півтори години. При стабільних 60 FPS користувачі все одно залишають одно- та двозіркові відгуки — батарея тане на очах. Споживання енергії — прямий індикатор неефективного використання CPU та GPU. Зниження енергоспоживання мобільною грою — це системна робота: від контролю частоти кадрів до шейдерних програм та мережевих запитів. Компанія має 5+ років досвіду (з 2019), реалізовано 15+ успішних проєктів, сертифікації Unity та Apple. Гарантуємо вимірний результат.

Вартість базового аудиту — від 500$, повна оптимізація — від 2000$ залежно від складності. Зв'яжіться з нами для безкоштовної консультації.

Які головні джерела перевитрати енергії?

Необмежений FPS — найпоширеніша помилка. Application.targetFrameRate = -1 (або без явного встановлення) означає, що Unity рендерить так швидко, як може. На сучасних iPhone з ProMotion-дисплеєм це 120 FPS у простому меню. Для меню достатньо 30 FPS — решта 70% CPU/GPU-часу витрачаються марно і гріють корпус.

Анімований фон у головному меню з 500 частинками працює постійно. Немає паузи при втраті фокусу — немає економії.

Якщо гра запитує Input.location або Input.gyro без потреби й не вимикає — сенсори опитуються постійно. На Android це кілька мВт додатково.

Маленькі HTTP-запити кожні 5–10 секунд тримають радіомодуль активним — один із найенергоємніших компонентів.

Інструменти профілювання

Для виявлення перевитрат енергії використовуйте профілювання:

Інструмент Що показує Норма
Xcode Energy Organizer Оцінка енергоспоживання для iOS Зелений рівень
Android Vitals Battery Частота пробуджень у фоні < 10 разів/год
adb shell dumpsys batterystats Розбивка за компонентами (CPU, GPU, радіо) CPU/GPU < 30% у меню

Якщо меню тримає CPU/GPU на 70% — це проблема.

Керування FPS як основа оптимізації

Правильна стратегія — різні таргети для різних станів. Наприклад, зниження FPS у меню з 60 до 30 дає економію CPU на ~40%.

// Gameplay: максимальна якість Application.targetFrameRate = 60; // Меню, паузи, діалоги Application.targetFrameRate = 30; // Фонові обчислення (завантаження, збереження) Application.targetFrameRate = 15; 

На iOS потрібно також враховувати ProMotion-дисплеї (120 Гц на iPhone 13 Pro+). Явно встановлюйте CADisplayLink.preferredFrameRateRange через Native Plugin для тонкого налаштування.

У OnApplicationPause(true) знижуйте FPS до мінімуму або зупиняйте рендер повністю.

Як оптимізувати шейдери для економії батареї?

На мобільних GPU важлива точність обчислень. Використання half-точності замість float у шейдерах на Adreno та Mali дає реальну економію енергії — half-точність енергоефективніша за float на 30%, тобто краще у 1.3 рази. ALU цих чіпів оптимізовані під half-precision. Для більшості ефектів (колір, UV, освітлення) точності half достатньо.

Запечені лайтмапи замість динамічного освітлення знижують навантаження на фрагментний шейдер у 3–5 разів — це пряме порівняння: запечені лайтмапи кращі за динамічне освітлення в 3–5 разів за навантаженням на GPU. Складні фрагментні шейдери з великою кількістю текстурних вибірок особливо дорогі — кожне tex2D зупиняє графічний конвеєр.

Порівняння підходів до рендерингу:

Підхід Відносне навантаження Приріст часу роботи
Динамічне освітлення 100% (базовий рівень)
Запечені лайтмапи 20–30% +20–40%
Half-точність всюди 70% +15%

Первинна діагностика енергоспоживання

  1. Встановіть цільові FPS для кожного стану (геймплей, меню, пауза).
  2. Перевірте шейдери: замініть float на half, запікайте лайтмапи.
  3. Налаштуйте батчинг мережевих запитів — буферизуйте та відправляйте пачкою раз на хвилину. Батчинг знижує енергоспоживання радіомодуля у 2-3 рази порівняно з частими запитами.
  4. Профілюйте на реальному пристрої за допомогою Xcode або adb.

Батчинг мережевих запитів

Замість відправлення подій по одному — батчинг (буферизація та відправка пачкою раз на хвилину). Firebase Analytics робить це автоматично. Якщо використовується власна аналітика через HTTP — явний RequestQueue з таймером.

На Android WorkManager з setRequiresBatteryNotLow(true) відкладає некритичні запити до моменту, коли пристрій на зарядці.

Що входить в роботу (deliverables)

  • Аналіз коду та конфігурацій проєкту.
  • Профілювання на реальних пристроях з використанням Xcode Energy Organizer та Android Vitals.
  • Налаштування FPS за контекстом (геймплей, меню, фон).
  • Оптимізація шейдерів (переведення на half-точність, запікання лайтмапів).
  • Реалізація батчингу мережевих запитів.
  • Документація: звіт з метриками та рекомендаціями.
  • Доступ до результатів профілювання.
  • Опціонально: навчання команди замовника.
  • Технічна підтримка після впровадження (2 тижні).
  • Повторне тестування та надання оновленого звіту з метриками.
  • Гарантія збільшення часу роботи на 20–40%.
Чек-лист типових помилок
  • Немає обмеження FPS у меню.
  • Частинки не зупиняються при паузі.
  • Сенсори опитуються постійно.
  • Мережеві запити по одному без агрегації.

Терміни робіт: від 1 до 4 тижнів залежно від обсягу коду. Вартість аудиту від 500$, повна оптимізація — від 2000$. Отримайте консультацію вже сьогодні.

Перевірка результату

iOS: Xcode Energy Organizer + MetricKit. MXCPUMetric та MXGPUMetric у didReceive дають реальні дані про споживання зі звітів користувачів.

Android: Android Vitals у Play Console → Battery → Excessive wakeups. Якщо додаток будить пристрій частіше 10 разів на годину у фоні — це прапорець від Google, який впливає на видимість.

Для локального тестування: adb shell dumpsys batterystats --reset перед тестом та adb shell dumpsys batterystats після.

Наші сертифіковані інженери проводять аудит з гарантією збільшення часу роботи на 20–40%. Зв'яжіться з нами — оцінимо проєкт безкоштовно.