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

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

Від імерсивних застосунків до ігрових світів і 3D-сцен

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

Відвідати персоналізований сайт
Показано 1 з 1 послугУсі 242 послуг
Створення атласів 2D-спрайтів для графіки ігор
Проста
~2 робочих дні
Часті питання

Наші компетенції

Які етапи розробки гри?

Останні роботи

  • image_games_mortal_motors_495_0.webp
    Розробка гри для компанії Mortal Motors
    683
  • image_games_a_turnbased_strategy_game_set_in_a_fantasy_setting_with_fire_and_sword_603_0.webp
    Покрокова стратегія у фентезі сеттингу With Fire And Sword
    862
  • image_games_second_team_604_0.webp
    Розробка ігри для компанії Second term
    491
  • 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 тижні

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