Риггинг та анімація персонажів мобільних ігор
Художник здав фінальний арт персонажа. Шари PSD акуратно розділені: торс, голова, ліва рука, права рука, ноги. Відкриваєш Spine 2D — і починається справжня робота: правильно розставити іерархію костей так, щоб при blend між run та attack не вивернути плечо наизнанку, а mesh деформація на одязі не давала артефактів на граничних пікселях.
Іерархія костей та типові помилки
Новичків у риггінгу робять плоску іерархію: всі кості від root. Результат — при повороту стегон нога не тягнеться, доводиться анімувати кожну кість окремо. Правильний ланцюг: root → pelvis → spine → chest → shoulder_l → arm_l → forearm_l → hand_l. Тоді поворот chest тягне все вище, і аніматор управляє позою через кілька ключових костей, а не двадцять.
Weights painting — місце, де губиться тиждень. Для мобільних персонажів максимум 2–3 influences на вертекс (у Spine: Max Bones Per Vertex в налаштуваннях mesh). Більше — GPU skinning на мобілі починає просідати. На Mali-G57 різниця між 2 та 4 influences при 10 персонажах на екрані — близько 3мс на кадр. Мало, але при 30 FPS бюджет — 33мс, і їх мало.
IK проти FK — принципіальний вибір для кожної кінцівки. Ноги персонажа, який ходить по рівній поверхні — FK, простіше та передбачуваніше. Ноги персонажа, який адаптується до нерівного рельєфу — IK через IK Constraint у Spine з Bend Direction по ситуації. Руки в атаці — FK (потрібен контроль дуги). Рука, що тримається за поверхню — IK.
Робочий процес Spine 2D
Spine 4.x — основний інструмент для складних персонажів. Робочий процес:
Розбийте PSD на окремі PNG через скрипт Photoshop або Aseprite, розташуйте у папці. У Spine створіть skeleton, імпортуйте зображення як slots. Розташуйте кості суворо за іерархією, починаючи з root у центрі маси персонажа.
Mesh створіть лише там, де потрібна деформація: одяг, волосся, плащі. Жорсткі елементи (меч, щит, металеві деталі) — без mesh, просто attachment. Менше вертексів у mesh — менше роботи GPU.
AnimationState у Spine Runtime дозволяє мікшування анімацій через tracks: track 0 — базова анімація тіла (idle/run/jump), track 1 — анімація рук (attack/block/reload). Mix Duration 0,15–0,2 секунди для гладкого переходу без pop.
PathConstraint — відмінна річ для хвостів, мотузок, косів. Створіть path (path attachment) по потрібній кривій, привяжіть кості до нього. Анімуйте лише точки path, а не кожну кість. На 10–12 костях хвоста економить значний час.
Оптимізація атласу та runtime
Після фіналізації анімацій упакуйте текстури через Spine's Atlas Packager. Правила:
- Максимальний розмір атласу — 2048×2048, краще 1024×1024 для mid-range
-
Bleedувімкнено — прибирає артефакти на границях спрайтів - Формат: PNG → конвертуйте в ASTC/ETC2 при імпорті в Unity
У Unity використовуйте компонент SkeletonAnimation з Spine Unity Runtime. AnimationState.SetAnimation для переключення анімацій, AddAnimation для черги. UpdateTiming = InUpdate — стандарт, не змінюйте без причини.
Object pooling обов'язковий: не робіть Instantiate ворогів щоразу, переіспользуйте через SkeletonAnimation.ClearState() + Initialize(true) при поверненні у пул.
Unity 2D Animation як альтернатива
Для простих персонажів з 5–8 костями — Unity 2D Animation Package (com.unity.2d.animation) достатньо. PSD Importer читає файли Photoshop напряму, шари стають спрайтами, Sprite Skin добавляє деформацію.
Анімуйте через стандартний Unity Animator. Blend Tree для run/walk/sprint за швидкістю. Пакет Animation Rigging — якщо потрібен runtime IK для ніг.
Переваги підходу: немає зовнішнього runtime, менше залежностей, стандартні Unity інструменти. Недоліки: mesh деформація слабше, ніж у Spine, немає потужного змішування через tracks.
Етапи та сроки
Робота починається з технічного завдання: список станів кожного персонажа, вимоги IK, цільові пристрої, обмеження draw calls. Без цього ТЗ → риггинг → огляд із game designer → анімація базових станів → інтеграція в movimento → профілювання → фінальна полірування.
Простий персонаж (10 костей, 5–7 анімацій): від одного тижня. Складна hero unit з 20+ анімаціями, IK, attachment swapping та повним набором VFX: до трьох місяців. Вартість розраховується індивідуально після аналізу списку персонажів та вимог до анімаційного дерева.







