Почему никто не говорит о Live2D? Мы сделали в нем анимацию для рогалика...

Как мы использовали Live2D для 8‑направленной 2D‑анимации в ChocoDIE на Unity.

Почему никто не говорит о Live2D? Мы сделали в нем анимацию для рогалика...

Казалось бы, костная анимация достаточно популярная техника для инди-игр. Правильно реализовать и она очень хорошо выглядит в 2D играх!

Но еще в начале разработки мы быстро столкнулись с тем, что на рынке почти нет подходящих нам программ. Первыми на ум приходят Spine и DragonBones, но если к первому мы вернемся позже, то я не очень понимаю поддерживается ли DragonBones вообще? У него какие-то проблемы с экспортом и программа не очень приятна в использовании. Что по поводу внутренних инструментов Unity? О БОЖЕ НЕТ!

В общем рано или поздно нам бы пришлось столкнуться с Live2D.

Зачем нам все это нужно?

Мы разрабатываем игру ChocoDIE – рогалик с пулями, рейдами, базостроением и большим количеством конфетных жителей. Все они должны быть подвижными и яркими, а главное – общий набор костных анимаций можно удобно использовать на сгенерированных персонажах.

Почему никто не говорит о Live2D? Мы сделали в нем анимацию для рогалика...

Но у нашей игры есть еще одна особенность..! Вместо нас сражаются наши подчиненные, а стоят они вокруг главного героя. Но реализуем игру мы в 2D-графике, поэтому направление их взгляда должно хорошо читаться. А это в свою очередь значит, что нам придется прибегнуть к 8-way анимации...

Почему никто не говорит о Live2D? Мы сделали в нем анимацию для рогалика...

Именно поэтому мы не можем использовать Spine..! Там просто нет подходящих инструментов, которые позволят нам “крутить” подчиненных со стороны движка. Здесь же вообще никак не настроить workflow по быстрому созданию восьми-направленных костных анимаций.

И тут на помощь приходит Live2D.

Параметры.

Когда лид нашей команды рассказала про то, как работают параметры в Live2D, мне сразу стало понятно, что это может сработать.

Объясняю: в Spine довольно лаконичный процесс создания анимаций. Внутри модели ты расставляешь кости, в ней же лежат анимации, где ты перемещаешь кости по своему желанию.

Интерфейс Spine
Интерфейс Spine

Но как нам внутри одной модели расположить восемь скелетов? Мы можем менять прозрачность разных скелетов, как бы переключаясь между ними. Но движок не сможет просто так переключать прозрачности. И мне, как аниматору, будет неудобно делать столько анимаций внутри одной модели.

В Live2D же поверх костей и прозрачностей появляется абстракция – параметры!

Что если мы сделаем параметр “Angle”? Правильно – мы можем привязать к нему переключение скелетов. Внезапно вся эта суматоха с 8-ью скелетами становится очень простой – движку достаточно отправлять в параметр “Angle” угол взгляда персонажа и скелет легко переключается.

Вертим персонажа

It’s getting better

Неужели, чтобы сделать анимацию бега, мне придется анимировать каждый из 8 скелетов? Какой отстой...

Но Live2D опять же решает эту проблему! Как? Параметры!

Ведь была бы готовая модель, в которой движения каждой части тела в КАЖДОМ скелете привязаны к параметрам, все что нам оставалось бы, это анимировать параметры. Нам не пришлось бы работать со всеми восемью левыми ногами, достаточно подвинуть параметр L.Leg Raise и все направления синхронизируются как самые профессиональные танцоры!

Синхронизация наклона

Фактически самой сложной работой в таком подходе является подготовка модели, потому что нужно представить в голове, как поднятая рука будет выглядеть спереди, сбоку и подобное. Ну а еще это очень много костей, у меня подготовка модели заняла 2 недели!

Демонстрация персонажа

Зато теперь создание анимаций просто моментальное, почти под каждое взаимодействие в игре мы быстро подготавливаем анимации, и она работает НА ВСЕХ ПЕРСОНАЖАХ независимо от версии модели! Чудесно.

Вопросы оптимизации

Удивительно, но никаких трудностей с оптимизацией не возникает. Казалось бы, каждая модель содержит в себе по восемь скелетов, но интеграция в Unity легко выдерживала тест сотнями моделями без падения фпс. В игре же вряд ли даже больше 20 будет одновременно на экране. Кто-нибудь знает, как это работает?

Кроме того SDK от Live2D в целом делает процесс встраивания моделей и анимаций в Unity довольно несложным процессом. Мы постоянно улучшаем и дорабатываем модели, а анимации продолжают работать на них всех без каких либо проблем.

Результат

Это очень неинтуитивно, но программа, традиционно ассоциирующаяся с Vtuber’ами и talk-sprite’ами оказалась очень удачным решением для самих игровых персонажей.

Если кого интересуют детали реализации, то спрашивайте! В интернете почему-то беспредельно мало материала о костной анимации, особенно восьми-направленных.

Кроме того не стесняйтесь добавлять ChocoDIE в вишлист. Из вкусного там будут не только персонажи! ^__^

13
9 комментариев