Ми створюємо спрайтові атласи для 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 тижні |
Вартість розраховується індивідуально, виходячи з обсягу асетів і кількості платформ. Оцінимо ваш проект безкоштовно. Зв'яжіться для консультації.






