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

Ми часто бачимо, як неправильно упаковані текстури перетворюють гру на «важковаговика»: 300 МБ замість 80 МБ, а на старих Android-пристроях вилітає з SIGKILL через OOM. При цьому в редакторі все працює нормально — Unity зберігає текстури в нестисненому вигляді, і реальний розмір VRAM стає очевидним

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

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

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

Послуги, які ми пропонуємо
Показано 1 з 1Усі 1734 послуг
Оптимізація текстурних атласів мобільної гри
Середній
від 1 дня до 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

Ми часто бачимо, як неправильно упаковані текстури перетворюють гру на «важковаговика»: 300 МБ замість 80 МБ, а на старих Android-пристроях вилітає з SIGKILL через OOM. При цьому в редакторі все працює нормально — Unity зберігає текстури в нестисненому вигляді, і реальний розмір VRAM стає очевидним лише при профілюванні на девайсі. Наша команда за 5+ років роботи накопичила досвід на більш ніж 30 проєктах, де ми домагалися зниження споживання пам'яті на 50-70%.

Оптимізація текстурних атласів: ключові методи

Перша і найчастіша причина перевитрати пам'яті — формат за замовчуванням RGBA32. Якщо не задати Override для кожної платформи, Unity упакує текстури в нестиснений RGBA32. 1024×1024 в RGBA32 — 4 МБ VRAM. Ті ж дані в ASTC 6×6 — близько 250 КБ. Різниця в 16 разів. Відразу перевіряйте налаштування стиснення під кожну платформу.

Друга типова помилка — розмір атласу не кратний степеню двійки. GPU неефективно обробляє текстури 700×900. Unity видає попередження, але не виправляє автоматично. Не-POT текстури не стискаються більшістю форматів і займають більше пам'яті, ніж найближчий POT. Ми гарантуємо приведення всіх атласів до POT.

Третя проблема — прозорість там, де вона не потрібна. Якщо спрайт непрозорий, використовуйте RGB замість RGBA. Це легко налаштовується в імпорті.

Таблиця порівняння форматів стиснення

Платформа Формат Якість Застосування Економія пам'яті (vs RGBA32)
Android (сучасні) ASTC 6×6 висока всі текстури до 16 разів
Android (legacy, API < 23) ETC2 середня непрозорі; ETC2 RGB для alpha до 8 разів
iOS (A8+) ASTC 6×6 висока всі текстури до 16 разів
iOS (fallback) PVRTC низька тільки при крайній нестачі пам'яті до 6 разів

ASTC — адаптивний, підтримує будь-яке співвідношення сторін. Доступний на всіх пристроях з Android 5.0+ та iOS A8+. Для ігрових спрайтів 6×6 дає оптимальну якість/розмір. Для UI з дрібним текстом — 4×4. За якістю ASTC 6×6 в 2-3 рази перевершує PVRTC при тому ж розмірі.

ETC2 на Android потрібен лише для пристроїв старше п'яти років. Якщо аналітика показує частку таких пристроїв > 5%, враховуйте це.

Як правильно вибрати формат стиснення?

Вибір залежить від цільових пристроїв. Для більшості сучасних проєктів оптимальний ASTC 6×6. Якщо проєкт орієнтований на старі пристрої, використовуйте ETC2 для Android та PVRTC для старих iOS. Важливо задати Overrides у налаштуваннях імпорту для кожної платформи.

Чому важливо розбивати атласи за контекстом?

Правильна стратегія — розбивка за контекстом використання, а не за типом об'єкта:

  • ui-hud: елементи HUD, що відображаються постійно
  • ui-menus: кнопки, фони, іконки для меню (вивантажуються під час геймплею)
  • gameplay-player: спрайти гравця та анімації
  • gameplay-enemies-tier1: вороги першого рівня
  • gameplay-vfx: частинки, вибухи, ефекти

Така розбивка дозволяє вивантажувати невикористовувані атласи через Resources.UnloadUnusedAssets() або Addressables з явним Release. З єдиним атласом це неможливо. Один наш клієнт після реструктуризації 12 атласів скоротив пікову пам'ять на 35%.

Вплив порожнього простору

Unity SpriteAtlas залишає padding між спрайтами (за замовчуванням 4 px) для запобігання bleeding. На атласі 1024×1024 втрати площі можуть сягати 15-20%. Зменшіть padding до 2 px для спрайтів без субпіксельного рендерингу — це покращить пакування. Дивіться заповнення в Preview атласу. Якщо менше 70% — переробіть розбивку.

Процес роботи та терміни

Етапи робіт (під ключ, 3-6 днів)
  1. Аналітика: профілювання на реальному девайсі через Memory Profiler, виявлення топ-10 важких текстур.
  2. Проєктування: налаштування Overrides для Android/iOS, реструктуризація за контекстом, вимкнення Mip Maps для 2D-спрайтів.
  3. Реалізація: зміна атласів, перевірка POT-розмірів, зменшення padding.
  4. Тестування: фінальна перевірка на Android GPU Inspector або Xcode Metal System Trace, порівняння VRAM до та після.
  5. Документація: звіт з результатами та рекомендації щодо підтримки.

Таблиця типових результатів

Параметр До оптимізації Після оптимізації Зниження
VRAM під текстури ~300 МБ ~90 МБ 70%
Кількість текстур 120 120 без змін
Draw Calls на сцену ~200 ~150 25%

Цифри наведені для середньостатистичного проєкту. Ваш результат може відрізнятися.

Що входить у роботу

  • Повний аудит поточних текстур та атласів за допомогою Memory Profiler.
  • Налаштування Overrides стиснення для кожної цільової платформи.
  • Реструктуризація атласів за контекстом використання.
  • Оптимізація padding, Mip Maps та POT-розмірів.
  • Перевірка на реальних пристроях (Android та iOS).
  • Документація з рекомендаціями.

Вартість розраховується індивідуально після попереднього аудиту. Отримайте консультацію — ми оцінимо ваш проєкт безкоштовно.

Результат

Після оптимізації ви отримаєте зниження використовуваної текстурами пам'яті на 50-70%, зменшення Draw Calls за рахунок правильної упаковки та стабільну роботу на пристроях з 2-3 ГБ ОЗУ. Візуальна якість залишиться на колишньому рівні. Зв'яжіться з нами, щоб обговорити деталі.