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

Мы создаём спрайтовые атласы для 2D-игр — это даёт снижение draw calls в 3–10 раз на мобильных устройствах. Десять отдельных спрайтов в папке — десять текстурных биндингов при отрисовке. Те же десять спрайтов в одном атласе — один биндинг. На мобильном разница в производительности колоссальна. Наш о

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

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

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
    1005
  • 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

Мы создаём спрайтовые атласы для 2D-игр — это даёт снижение draw calls в 3–10 раз на мобильных устройствах. Десять отдельных спрайтов в папке — десять текстурных биндингов при отрисовке. Те же десять спрайтов в одном атласе — один биндинг. На мобильном разница в производительности колоссальна. Наш опыт — 5+ лет в геймдеве и десятки проектов — подтверждает: правильный атлас сокращает время загрузки на 40% и экономит до 70% draw calls.

Но атлас — не просто «сложить текстуры в одну большую». Неправильно составленный атлас даёт артефакты, 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 (начиная с версии, поддерживающей Sprite Atlas) — нативный инструмент без сторонних плагинов. SpriteAtlas asset создаётся в Project → Create → 2D → Sprite Atlas. Добавляются папки или отдельные спрайты в Objects for Packing. Unity автоматически пакует атлас при билде.

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

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

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

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

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

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

Стоимость рассчитывается индивидуально, исходя из объёма ассетов и числа платформ. Оценим ваш проект бесплатно. Свяжитесь для консультации.