Створення 2D-анімації персонажів у Spine для ігор
Spine — стандарт 2D-скелетної анімації в геймдеві не тому, що він єдиний, а тому що він вирішує дві проблеми одночасно: якість анімації та економія ресурсів. Один набір текстурних ассетів, анімований через скелет та меші, дає гладку анімацію при розмірі даних у кілька сотень кілобайт проти мегабайтів спрайтових листів для аналогічної якості.
Але Spine — інструмент з порогом входження. Погано настроєний скелет, неправильні меші або крива ваги дають «гумових» персонажів, Z-fighting між шарами частин тіла та краш в runtime при деяких комбінаціях скінів.
Проектування скелета
Скелет — основа всього. Помилки на цьому етапі неможливо виправити без повної перебудови: неправильна ієрархія костей, неправильне розміщення pivot-точок, відсутність кості там, де потрібна додаткова степінь свободи.
Ієрархія костей. Класична ієрархія для humanoid: root → pelvis → spine → chest → (neck → head), (shoulder.L → upper_arm.L → forearm.L → hand.L), ніга симетрично. Важлива деталь: root bone повинен бути на рівні землі, не в центрі персонажа — інакше footplant через IK буде працювати некоректно.
IK-ланцюжки. Для ніг (footplant) та рук (interaction with objects) обов'язкові IK-ланцюжки. У Spine це IK Constraint: target кість + chain з 1 або 2 костей + параметр bend direction. Без IK руки та ноги при русі тіла «плавають» — ступні не залишаються на землі, руки не тримають предмети переконливо.
Кількість костей. Більше — не значить краще. Для мобільних ігор оптимум: 20–40 костей для гуманоїда. 60+ костей починають давати помітний CPU overhead в Spine Runtime, особливо при великій кількості персонажів на екрані одночасно.
Меші та привязка ваги
Прямокутні parts (без mesh-деформації) — для простих персонажів casual-ігор. Mesh-деформація потрібна там, де важлива органічність: одяг, волосся, м'які частини тіла. Без mesh одяг при русі виглядає дерев'яно — частини рухаються як жорсткі об'єкти.
Привязка ваги (weights) — найбільш копітка частина. Кожна вершина меша отримує вплив від однієї або кількох костей з сумарною вагою = 1.0. Неправильні ваги: кінцівка при русі тягне за собою шматок тіла через надто високу вагу на сусідню кість. Правильні ваги — плавний перехід впливу між костями, без «затисків» та розривів.
Інструмент Spine Weights — розфарбування ваги кістю, аналогічно Weight Painting у Blender. Для складних персонажів це 2–4 години роботи на одну фігуру.
Анімації: ключові типи для ігор
Idle. Найважливіша анімація — гравець дивиться на неї більшу частину часу. Idle повинна бути живою: тихе дихання через slight chest movement, subtle weight shift. Довжина: 60–120 кадрів при 24fps, loop повинен бути непомітним (pose на початку та кінці — однакова з matching velocity tangents).
Walk / Run cycle. Класична задача. У Spine оптимально робити як separate animation та blend через код, а не через mix. Walk cycle: 16–24 кадра при 24fps для cartoon-стилю, 24–32 кадра для реалістичного. Footplant — ступня не ковзає по землі — досягається через IK constraint та careful timing.
Hit / Death / Attack. Коротенькі, читаємі, з чітким anticipation перед ударом. Антиципація у 3–5 кадрів перед атакою робить анімацію «телеграфуємою» — гравець бачить намір до удару. Це важливо і для responsiveness керування, і для fair gameplay.
Spine Runtime: інтеграція в Unity
Spine Unity Runtime — офіційний плагін, оновлюється для кожної версії Spine. Критично: версія Spine Editor та версія Runtime повинні збігатися (major.minor). Невідповідність версій — бінарні дані .skel несумісні, персонаж не завантажується.
SkeletonAnimation vs SkeletonMecanim — два режими. SkeletonAnimation — прямого керування через Spine API (SetAnimation, AddAnimation). SkeletonMecanim — через Unity Animator Controller з звичайною State Machine та Blend Tree. Для складних персонажів з безліччю станів SkeletonMecanim зручніше, тому що переиспользует всі інструменти Unity Animator.
Draw calls. Кілька Spine-персонажів на екрані — кілька draw calls, якщо у них різні атласи. Об'єднання атласів через Spine Atlas Packer (або TexturePacker Spine export) скорочує draw calls: всі персонажі одного типу рисуються за один pass.
Етапи виробництва
- Reference та style guide — наскільки cartoon vs realistic, діапазон рухів
- Part splitting — нарізка арту на частини по костям
- Скелет — ієрархія, pivot-точки, IK-ланцюжки
- Mesh binding — створення мешей для деформуючих частин, привязка ваги
- Базові анімації — idle, walk, run
- Геймплей-анімації — attack, hit, death, спеціальні
- Експорт та інтеграція — збірка атласу, тест в двигуні
| Масштаб | Строк |
|---|---|
| Простий персонаж (casual, без mesh, 5–8 анімацій) | 1–2 тижні |
| Стандартний персонаж (mesh, IK, 10–15 анімацій) | 3–5 тижнів |
| Складний головний герой (mesh deform, skin variants, 20+ анімацій) | 6–10 тижнів |
Вартість визначається складністю персонажа та кількістю анімацій.





