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

Мы часто видим проекты, где текстурные атласы настроены по умолчанию. Результат — 40–100 МБ лишней памяти и разрушенный batching. В одном из проектов казуальной игры UI-атлас в RGBA32 занимал 64 МБ только на одной сцене. После нашей оптимизации — 8 МБ. В этой статье мы расскажем, как правильно оптим

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

Другие услуги студии

VR/AR/MR приложения на заказ

Впечатляйте клиентов и обучайте команду в виртуальной реальности

Разработка игр на Unity

От идеи до релиза — игры, которые запоминаются

3D-моделирование и анимация

Оживим ваш продукт в объёмной графике и анимации

VR-тренажёры промышленного оборудования

Тренируем операторов на технике без риска и простоя

AR-инструкции для производства

Пошаговые подсказки прямо на оборудовании — без бумаги

Safety-тренажёры

Отработка ЧС и техники безопасности без выхода на объект

VR/AR-тренинги

Обучаем персонал сервису, адаптации и soft skills в VR

Обучающие викторины

Проверка знаний в формате игры — легко и без стресса

Корпоративные видеоинструкции

Понятные ролики для обучения сотрудников и клиентов

Геймификация бизнес-процессов

Мотивируем команду через игровые механики в KPI и HR

Приложения для инфокиосков

Интерактивные экраны для магазинов, стендов и офисов

VR/AR-инсталляции

Wow-эффект для брендов на выставках, ивентах и в шоу-румах

Виртуальные выставки и музеи

Ваша экспозиция доступна из любой точки мира — 24/7

Event-квесты и брендированные игры

Запоминающиеся игры для конференций и клиентских ивентов

Часто задаваемые вопросы

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

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

Мы часто видим проекты, где текстурные атласы настроены по умолчанию. Результат — 40–100 МБ лишней памяти и разрушенный batching. В одном из проектов казуальной игры UI-атлас в RGBA32 занимал 64 МБ только на одной сцене. После нашей оптимизации — 8 МБ. В этой статье мы расскажем, как правильно оптимизировать текстурные атласы для мобильных игр.

Почему атласы — узкое место мобильной оптимизации?

Sprite Atlas в Unity — инструмент понятный, но его неправильная настройка стабильно прибавляет десятки мегабайт к памяти приложения и убивает batching. Типичная ошибка: разработчик включил Sprite Atlas, сложил все UI-спрайты в один атлас, доволен — Draw Calls упали с 80 до 12. Но забыл включить Include in Build в настройках. В итоге атлас генерируется в Edit Mode, но в Release-билде каждый спрайт загружается отдельной текстурой.

Другая история: атлас настроен правильно, batching работает, но размер 2048×2048 RGBA32 — это 16 МБ только на одну текстуру без mipmaps. На устройстве с 2 ГБ RAM суммарный UI-атлас из 4 листов съедает 64 МБ. При переключении языков — все 4 листа в памяти одновременно.

Какой формат сжатия выбрать для атласов?

Это самая недооценённая часть оптимизации. Разработчики часто оставляют RGBA32 или RGBA16 для всех текстур, не задумываясь.

ASTC — стандарт для современных мобильных устройств. Поддерживает блочное сжатие с настраиваемым качеством: ASTC 4×4 даёт высокое качество при 8 bpp, ASTC 8×8 — приемлемое качество при 2 bpp. Для атласов UI используем ASTC 4×4 или 6×6. Для фоновых текстур без мелких деталей — ASTC 8×8. По сравнению с RGBA32, ASTC 6×6 уменьшает размер в 6 раз при почти незаметной потере качества.

ETC2 — fallback для устройств без поддержки ASTC. Поддерживает альфа-канал. Для старых проектов с низким уровнем API всё ещё актуален.

PVRTC — форматы для iOS (PowerVR GPU). Требует текстур квадратной формы со стороной в степень двойки. Если атлас 1024×512 — PVRTC применить нельзя без изменения размера.

Официальная документация Unity по форматам сжатия

Реальный кейс: казуальная игра-пазл, Android+iOS. UI-атласы занимали 128 МБ в памяти (RGBA32, 4 листа 2048×2048). После переключения на ASTC 6×6 для iOS и ETC2 для Android: 128 МБ → 22 МБ. Качество на экране телефона — неотличимо. Время загрузки UI-сцены снизилось с 1,8 с до 0,4 с (в 4,5 раза быстрее).

Сравнение форматов сжатия:

Формат bpp Качество Совместимость
ASTC 4×4 8 отличное iOS A7+, Android с поддержкой ASTC
ASTC 6×6 4 хорошее та же
ETC2 4 хорошее Android (широко)
PVRTC 4bpp 4 среднее iOS (PowerVR)
RGBA32 32 эталон все
Пример расчёта экономии памяти

Если атлас размером 2048×2048 RGBA32 занимает 16 МБ без mipmaps, то при переключении на ASTC 6×6 (4 bpp) размер снижается до 2 МБ. Для четырёх таких атласов экономия составляет 56 МБ.

Стратегия разбиения атласов

Не все спрайты в один атлас — это путь к проблемам. Правильная стратегия:

По сцене/экрану. Спрайты, которые используются только в меню — в атлас menu_atlas. Спрайты геймплея — в gameplay_atlas. Общие элементы (кнопки, рамки, иконки) — в common_atlas. Это позволяет выгружать неиспользуемые атласы при смене сцены.

По частоте использования. Hotpath-спрайты (HP-бар, прицел, таймер) всегда в памяти → core_hud_atlas. Редкие экраны (настройки, магазин) — выгружаются через Addressables при закрытии.

Ограничение размера листа. 2048×2048 — максимум для мобильных. Часть устройств не поддерживает 4096×4096 для сжатых форматов. В Sprite Atlas Settings устанавливаем Max Texture Size = 2048.

Дубликаты. Unity Addressables Analyze → Check Duplicate Bundle Dependencies обнаруживает спрайты, попавшие в несколько атласов. Типичная причина: shared-спрайт (иконка валюты) использован и в меню, и в геймплее без явного указания атласа.

Почему mipmaps вредны для UI?

Для UI-атласов mipmaps отключаем. UI рендерится в Screen Space, объекты не удаляются от камеры — mipmaps бесполезны и увеличивают размер текстуры на 33%. В Texture Import Settings: Generate Mipmaps = false.

Для игровых текстур (3D-объекты, задний план в 2D с масштабированием) — mipmaps обязательны. Без них aliasing и завышенный texture fetch bandwidth.

Пошаговая настройка атласа для мобильной игры

  1. Импортируйте спрайты с настройками: Max Size = 2048, Compression = ASTC 6×6 (или ETC2 для fallback), Generate Mipmaps = false.
  2. Создайте Sprite Atlas (V2): Assets → Create → Sprite Atlas.
  3. В Inspector: Type = Master, Include in Build = true, Allow Rotation = true, Tight Packing = true, Padding = 4.
  4. Добавьте спрайты в Objects for Packing.
  5. Разделите по сценам: создайте отдельные атласы для menu, gameplay, common.
  6. Для управления памятью используйте Addressables: отметьте атласы как Addressable и выгружайте при смене сцены.
  7. Проверьте дубликаты через Addressables Analyze.

Процесс работы над оптимизацией

  1. Аналитика. Собираем профили памяти и draw calls на целевых устройствах. Используем Unity Profiler, RenderDoc, GameAnalytics.
  2. Аудит атласов. Оцениваем текущую стратегию, форматы, размеры, дубликаты.
  3. Проектирование. Разрабатываем новую архитектуру атласов с разбивкой по сценам и частоте использования.
  4. Реализация. Перенастраиваем атласы, сжимаем текстуры, интегрируем Addressables.
  5. Тестирование. Проверяем память, производительность, качество на устройствах с 2 ГБ RAM и ниже.
  6. Деплой. Фиксируем настройки в Version Control, документируем workflow.

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

  • Аудит текущих атласов с отчётом по памяти, draw calls и рекомендациями.
  • Разработка стратегии разбиения под целевую платформу.
  • Настройка сжатия (ASTC, ETC2, PVRTC) с контролем качества.
  • Интеграция Addressables для выгрузки атласов.
  • Документация по поддержке атласов в проекте.
  • Обучение команды работе с новой системой.
  • Пост-релизная поддержка в течение месяца.
Масштаб задачи Ориентировочные сроки
Аудит атласов + отчёт 1–2 дня
Переработка атласной стратегии (1 платформа) 3–7 дней
Полная оптимизация для Android + iOS 2–4 недели
Интеграция с Addressables 2–3 недели

Мы гарантируем качество: наш опыт — более 10 проектов с оптимизацией под мобильные устройства. Оценим ваш проект бесплатно — свяжитесь для аудита. Закажите оптимизацию атласов и получите до 80% экономии памяти без потери качества.