Створення атласів 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 тижні

Вартість розраховується індивідуально, виходячи з обсягу асетів і кількості платформ. Оцінимо ваш проект безкоштовно. Зв'яжіться для консультації.