Риггинг и анимация персонажей мобильной игры
Художник сдал финальный арт персонажа. Слои в 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 — основной инструмент для сложных персонажей. Workflow:
Разбиваем 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 секунды для плавного перехода без попинга.
PathConstraint — отличная вещь для хвостов, верёвок, кос. Создаём путь (path attachment) по нужной кривой, привязываем кости к нему. Анимировать нужно только точки пути, а не каждую кость. На 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 — стандарт, не меняем без причины.
Пул объектов обязателен: не создаём 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 package — если нужен runtime IK для ног.
Плюс подхода: нет внешнего runtime, меньше зависимостей, стандартные Unity tools. Минус: mesh deformation слабее, чем в Spine, и нет такого мощного смешивания через tracks.
Этапы и сроки
Работа начинается с технического задания: список состояний каждого персонажа, требования к IK, целевые устройства, ограничения по draw calls. Без этого ТЗ → риггинг → review с геймдизайнером → анимация базовых состояний → интеграция в движок → профилирование → финальная полировка.
Простой персонаж (10 костей, 5–7 анимаций): от недели. Сложный hero-unit с 20+ анимациями, IK, attachment swapping и полным набором VFX: до трёх месяцев. Стоимость рассчитывается индивидуально после анализа списка персонажей и требований к анимационному дереву.







