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

Мы часто видим, как неправильно упакованные текстуры превращают игру в «тяжеловес»: 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 ГБ ОЗУ. Визуальное качество останется на прежнем уровне. Свяжитесь с нами, чтобы обсудить детали.