2D-арт та анімація
Мобільна гра з 200 анімаціями персонажів займає 800 МБ тільки на текстурах. APK відхиляє Google Play через розмір. При цьому половина анімацій — варіації одного й того ж руху з незначними відмінностями. Це класична проблема команд, які вибирали frame-by-frame анімацію там, де скелетна дає кращий результат із долею розміру.
Що входить у послугу
- Концепт-арт та ілюстрації — персонажи, оточення, UI-елементи
- Спрайт-анімація — frame-by-frame, включаючи Aseprite-пайплайн
- Скелетна анімація — Spine, DragonBones
- 2D-ефекти — particle-based, shader-based, анімовані текстури
- Оптимізація атласів — TexturePacker, Unity Sprite Atlas, упаковка для конкретних платформ
Spine: скелетна анімація в деталях
Spine (Esoteric Software) — де-факто стандарт скелетної анімації для 2D ігор. Альтернатива — DragonBones (безплатний, менший набір функцій) та нативний 2D Animation package у Unity (зручна інтеграція, але слабший за Spine по набору інструментів).
Скелетна vs Frame-by-frame: коли що вибирати
| Критерій | Скелетна (Spine) | Frame-by-frame (Aseprite) |
|---|---|---|
| Розмір даних | Малий (кості + ваги) | Великий (кадри як зображення) |
| Гнучкість блендингу | Висока | Відсутня |
| Виразність | Залежить від риггера | Повна художня свобода |
| Час виробництва | Довгий rigginг, швидкі ітерації | Кожна анімація з нуля |
| Підходить для | Персонажи, UI, створіння | Пікселе-арт, особливий стиль |
Правило, яке працює на практиці: якщо у персонажа більше 15 унікальних анімацій — Spine економічніший за розміром та часом ітерацій. Якщо проект стилістично вимагає frame-by-frame (пікселе-арт, ротоскопування, мультиплікаційний стиль з навмисними артефактами) — Aseprite.
Mesh Deformation у Spine
Одна з ключових можливостей, що відрізняє Spine від простого скелета. Mesh deformation дозволяє деформувати полігональну сітку поверх спрайту через ваги вершин — персонаж гнеться органічно, одяг складається, щоки надуваються.
Workflow:
- У Spine створюємо mesh на спрайті (Tools > Mesh > Edit Mesh)
- Призначаємо ваги вершин до костей (Weights mode)
- Встановлюємо кількість вершин на основі потрібної детальності деформації — більше вершин = плавніша деформація, але вища обчислювальна вартість
Path Constraints — ще один потужний інструмент: кість слідує по кривій. Використовується для хвостів, волосся, щупалець, мотузок — будь-яких елементів, які повинні гнутися органічно.
IK Constraints у Spine працюють через двох- або трьохкісткову ланцюжок. Для кінцівок це обов'язково: аніматор рухає IK target (позицію ладоні), а ланцюжок плече-передпліччя-кисть автоматично вишиковується. Без IK анімування кінцівок у FK — значить тратити вдвічі більше часу.
Інтеграція Spine в Unity
Офіційний Spine-Unity runtime — платний (входить у ліцензію Spine), активно підтримується. Компоненти:
-
SkeletonAnimation— основний компонент для анімації -
SkeletonMecanim— інтеграція з Animator Controller Unity (зручно для переиспользування Mecanim-логіки) -
SkeletonGraphic— для Canvas/UI (рендерится через CanvasRenderer, не через MeshRenderer)
Важливо для продуктивності: SkeletonAnimation створює окремий Mesh per instance. При 50+ персонажах на екрані це 50 draw calls мінімум (без батчингу). Рішення — SkeletonAnimation Batching через SubmeshSeparator + GPU instancing, або обмеження кількості одночасно видимих Spine-об'єктів.
Spine Events — механізм синхронізації: подія в анімації (footstep, attack_hit, spawn_particle) диспатчиться в Unity-код через AnimationState.Event. Правильна архітектура: Spine Event → UnityEvent → звук/партикл/логіка. Не хардкодити синхронізацію за часом — анімація може сповільнюватися через timeScale.
Sprite Atlas та оптимізація текстур
Кожен окремий спрайт у Unity створює окремий draw call. 100 UI-іконок без атласу = 100 draw calls тільки на UI. Sprite Atlas упаковує спрайти в єдину текстуру, дозволяючи батчити draw calls для об'єктів, які використовують один атлас.
TexturePacker vs Unity Sprite Atlas
TexturePacker (CodeAndWeb) — зовнішній інструмент, більш гнучкий у настройці упаковки. Підтримує множество алгоритмів упаковки, trim прозорих пікселів, extrude країв для запобігання bleeding, експорт у специфічні формати платформ (PVRTC для iOS, ETC2 для Android).
Unity Sprite Atlas (вбудований) — зручен для Addressables та динамічної загрузки. Два режими: Master Atlas (повний контроль) та Variant Atlas (зменшена версія для low-end пристроїв через Scale Factor).
Практичні правила упаковки:
- Групувати по сцені/екрану: все, що видно одночасно — в одному атласі. Інакше atlas не допомагає з батчингом
- Максимальний розмір атласу: 2048x2048 для мобільних, 4096x4096 для PC. Більше — ризик проблем на старих GPU
- Trim прозорих пікселів: обов'язково. Спрайт із великими прозорими полями впустую займає місце в атласі
- Padding: 2-4 пікселі між спрайтами запобігають texture bleeding при mipmapping та UV filtering
Формати стиснення текстур
| Платформа | Рекомендований формат | Примітка |
|---|---|---|
| Android | ETC2 (RGB) / ETC2 RGBA8 | Апаратне прискорення на всіх сучасних Android |
| iOS | ASTC 4x4 / 6x6 | ASTC універсален: якість + розмір |
| PC/Console | DXT5 (BC3) | Або BC7 для високої якості |
| WebGL | DXT5 + fallback | Перевірити підтримку через SystemInfo |
Для атласів із великою кількістю дрібних спрайтів та гострих країв — ASTC 4x4 переважніший за ASTC 6x6 (менше артефактів на дрібних деталях).
2D-ефекти
Particle System (Shuriken) — для більшості 2D-ефектів вбудованої достатньо. Для 2D важливо: Renderer Mode = Billboard або Horizontal Billboard, Simulation Space = World для ефектів, які не повинні рухатися з персонажем.
Visual Effect Graph (VFX Graph) в URP — GPU-based particles, підходить для складних ефектів із тисячами частинок. Для мобільних — обережно, вимагає Compute Shaders (не всі пристрої підтримують).
Shader Graph для 2D: dissolve-ефекти, outline через SDF, distortion (вода, heat shimmer), анімовані UV (лава, вода). Sprite Lit Shader + кастомні ноди в Shader Graph — стандартний шлях для 2D у URP.
2D Animation Package (нативний Unity): PSDImporter для імпорту шарів із Photoshop як окремих спрайтів, Sprite Skin для скелетної анімації всередині Unity без Spine. Підходить для простих персонажів з обмеженою кількістю анімацій — якщо команда не хоче купувати ліцензію Spine.





