Создание атласов 2D-спрайтов для графики игр

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

От иммерсивных приложений до игровых миров и 3D-сцен

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

Посетить персонализированный сайт
Показано 1 из 1 услугВсе 242 услуг
Создание атласов 2D-спрайтов для графики игр
Простая
~2 рабочих дня
Часто задаваемые вопросы
Наши компетенции
Какие этапы разработки игры?
Последние работы
  • image_games_mortal_motors_495_0.webp
    Разработка игры для компании Mortal Motors
    671
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Пошаговая стратегия в фэнтези сеттинге With Fire And Sword
    860
  • image_games_second_team_604_0.webp
    Разработка игры для компании Second term
    490
  • image_games_phoenix_ii_606_0.webp
    3D-анимация — тизер для игры phoenix 2.
    533

Создание атласов 2D-спрайтов для графики игр

Sprite Atlas — один из немногих инструментов оптимизации в 2D-разработке, который влияет одновременно на производительность рендеринга и скорость загрузки. Десять отдельных спрайтов в папке — десять текстурных биндингов при отрисовке. Те же десять спрайтов в одном атласе — один биндинг. На мобильном устройстве разница в draw calls между «без атласов» и «с правильными атласами» — 3–10×.

Но атлас — не просто «сложить текстуры в одну большую». Неправильно составленный атлас даёт артефакты, memory waste и не снижает draw calls так, как должен.

Техническая база: TexturePacker

TexturePacker — стандартный инструмент для создания спрайтовых атласов в геймдеве. Поддерживает все актуальные движки: Unity, Godot, Cocos2d, Phaser. Ключевые настройки, которые определяют качество атласа:

Algorithm. MaxRects BestShortSideFit — лучшая упаковка для большинства проектов (максимальное использование пространства текстуры). Basic — быстрее, но хуже упаковка. Для продакшн-атласов — MaxRects.

Padding. Расстояние между спрайтами в атласе. Без padding — bleeding артефакты: при рендеринге спрайта захватываются пиксели соседнего спрайта. Стандарт: 2px padding. При использовании мипмапов — 4–8px (мипмапы смешивают соседние пиксели на нижних уровнях).

Rotation. Разрешить TexturePacker поворачивать спрайты на 90° для лучшей упаковки. Движок должен поддерживать это (Unity Sprite Atlas — да, некоторые старые движки — нет).

Power of Two. Финальный атлас должен иметь размеры кратные степени двойки: 512×512, 1024×1024, 2048×2048. GPU кэшируют текстуры power-of-two эффективнее. Нестандартный размер (например 1000×800) на некоторых GPU приводит к автоматическому апскейлу до ближайшей степени двойки — memory waste.

Группировка спрайтов в атласы

Самое важное решение: какие спрайты объединить в один атлас.

Правило одного draw call. В один атлас объединяются спрайты, которые рендерятся одновременно. UI-элементы главного меню — один атлас. Анимационные кадры одного персонажа — один атлас. Тайлы одного биома — один атлас. Смешивать UI, персонажей и тайлы в один «общий» атлас — антипаттерн: увеличивает размер текстуры без снижения draw calls.

Лимит размера атласа. 2048×2048 — безопасный максимум для mobile. 4096×4096 поддерживается на большинстве современных Android/iOS устройств, но есть исключения (старые бюджетные Android). Превышение максимального размера текстуры для устройства = краш или degraded fallback.

Анимационные атласы. Спрайт-лист (все кадры анимации в одном атласе) — стандарт для frame-by-frame анимаций. TexturePacker Sprite Sheet Export создаёт атлас + JSON/XML с координатами каждого кадра. Unity Sprite Editor читает этот JSON через Custom Physics Shape или через автоматическую нарезку по Sprite Editor.

Форматы сжатия текстур

Формат хранения текстуры в атласе — критичный выбор для производительности:

Платформа Формат Особенности
iOS ASTC (4×4 или 6×6) Лучшее качество/размер для iOS A8+
Android (современный) ETC2 (RGB) / ETC2 RGBA GLES 3.0+, поддерживается 95%+ устройств
Android (legacy) ETC1 + отдельный альфа-канал Для очень старых устройств
PC/WebGL DXT1 / DXT5 Стандарт для desktop
Универсальный RGBA32 Без сжатия, максимальное качество, максимальный размер

RGBA32 для финального продакшн-билда — ошибка. 2048×2048 RGBA32 = 16МБ видеопамяти. Та же текстура в ASTC 4×4 = 2МБ. Разница × количество атласов в игре = проблема с памятью на мобильных.

В Unity Platform-specific overrides для Texture Importer позволяют задать разные форматы для iOS и Android без дублирования ассетов.

Атлас в Unity: Sprite Atlas Asset

Unity Sprite Atlas (с Unity 2017+) — нативный инструмент без сторонних плагинов. SpriteAtlas asset создаётся в Project → Create → 2D → Sprite Atlas. Добавляются папки или отдельные спрайты в Objects for Packing. Unity автоматически пакует атлас при билде.

Важный нюанс: спрайты должны иметь настройку Packing Tag или быть добавлены непосредственно в Sprite Atlas — иначе они пакуются как отдельные текстуры. Смешение атласных и неатласных спрайтов в одном UI Canvas — draw call разрывается.

Late Binding (Unity 2020+): атлас загружается только при первом использовании содержащегося в нём спрайта, а не при старте сцены. Критично для больших игр с многими атласами — снижает время загрузки начальной сцены.

Типичные артефакты и их причины

  • Bleeding (пикселизация края): padding = 0 или мипмапы без увеличенного padding
  • Пустое место в атласе (>20%): неоптимальный алгоритм упаковки или несовместимые по размеру спрайты
  • Draw calls не снизились: спрайты из разных атласов в одном Canvas или рендер-батче
  • Артефакты поворота: движок не поддерживает rotation, но TexturePacker включил его

Этапы работы

  1. Аудит текущих ассетов — список всех спрайтов, размеры, форматы, наличие атласов.
  2. Группировка — распределение спрайтов по атласам по правилу одного draw call.
  3. Упаковка — TexturePacker с правильными параметрами под платформу.
  4. Формат сжатия — настройка под iOS/Android/PC.
  5. Интеграция — импорт в движок, настройка Sprite Atlas, проверка draw calls (Frame Debugger).
  6. Профилирование — до и после атласов, подтверждение снижения draw calls.
Масштаб Срок
Аудит и реструктуризация атласов существующего проекта 2–5 дней
Создание полного сета атласов для нового проекта (до 500 спрайтов) 1–2 недели
Оптимизация + настройка платформенных форматов + документация 2–4 недели

Стоимость определяется объёмом ассетов и количеством поддерживаемых платформ.