Каша из топора-7: как создается аналог мобильной ролевой игры Darkest Dungeon

Руководитель студии Ole Pole Виталий Мороз написал цикл материалов о том, как создается игра Vikings Dungeon — любительская мобильная версия ролевой игры Darkest Dungeon.

В седьмом выпуске аниматор Полина Жилевич расскажет, как она анимировала персонажей, и покажет, что из всего этого получается.

В закладки

Содержание

Первая часть

Вторая часть

Третья часть

Четвертая часть

Пятая часть

Шестая часть

Полина Жилевич,
аниматор студии Ole Pole

Привет, я Полина, я аниматор!

По образованию архитектор, по профессии — тоже, увлекаюсь 3D-графикой, закончила курсы 3D-анимации в учебном центре «Полигон». Это увлечение и познакомило меня с Виталием. Первые полгода я работала над проектом удаленно, но недавно мы получили возможность собираться вместе и трудиться вживую, поэтому теперь я нахожусь в состоянии легкой эйфории. Поделюсь с вами своим восторгом и расскажу про создание анимации и о проблемах, возникавших в ходе работы.

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

Первое знакомство с 2D-анимацией произошло благодаря программному софту Spine. Признаюсь, что с более понятным и удобным инструментарием мне еще не приходилось сталкиваться, — поэтому принцип работы освоила очень быстро. Следующим этапом стало тесное взаимодействие с художницей Аней и адаптацией её скетчей под возможности скелетной анимации. Вот тут возникла первая проблема: очень сложно было донести информацию, что все части тела персонажа должны быть прорисованы полностью, даже если их не видно в первоначальной позе. После получения перса вновь без куска руки или еще более важной части тела, лучшим решением оказалось рисовать схемы вместо словесной инструкции «расчленёнки».

{ "items": [{"title":"\u0421\u0445\u0435\u043c\u044b \u00ab\u0440\u0430\u0441\u0447\u043b\u0435\u043d\u0435\u043d\u043a\u0438\u00bb","image":{"type":"image","data":{"uuid":"b54a2e2e-9cb8-4df7-91b5-97429c1db6b7","width":1387,"height":899,"size":355692,"type":"jpg","color":"","external_service":[]}}},{"title":"\u0418\u043d\u0441\u0442\u0440\u0443\u043a\u0446\u0438\u044f \u0434\u043b\u044f \u00ab\u0440\u0430\u0441\u0447\u043b\u0435\u043d\u0435\u043d\u043a\u0438\u00bb","image":{"type":"image","data":{"uuid":"22f787b3-a1a4-4778-99f4-e8ab0f084aa2","width":1840,"height":1999,"size":783263,"type":"jpg","color":"","external_service":[]}}},{"title":"\u0421\u0431\u043e\u0440\u043a\u0430 \u043f\u0435\u0440\u0441\u043e\u043d\u0430\u0436\u0435\u0439 \u0432 Spine","image":{"type":"image","data":{"uuid":"774377f3-7e38-49df-9aef-87689814d5ce","width":974,"height":677,"size":393926,"type":"jpg","color":"","external_service":[]}}}] }

Далее дело пошло значительно лучше: арт-отдел нашел общий язык, и первый персонаж обрел еще более придурковатый и характерный вид после его «оживления».

Косичкин — он был первый, я его никогда не забуду:

Мы решили делать все базовые движения, в отличии от игры-первоисточника, анимациями. Но вот уже первый персонаж оказался очень не пластичен для удара молотом — способности вращения руки почти на 360° у него не было.

Следующим персонажем Аня нарисовала Шамана, который получился очень подходящим для анимации, и работать над ним было одно удовольствие.

По счастливой случайности, у меня дома завалялся простой и удобный Wacom, который больше не мог терпеть свою бесхозность. Добавление владения графическим планшетом в список умений (не без помощи и советов художника) очень помогло в оптимизации процесса Photoshop-Spine (Аня-Полина), и жизнь стала лучше.

Вскоре процесс более или менее автоматизировался, но промежуточный этап сборки персонажа по частям вручную был весьма рутинным и скучным делом. Наш программист поведал о существовании скрипта, с помощью которого в Spine импортируется персонаж с правильным расположением слоев, и части тела у него растут сразу из нужных мест. И жизнь заиграла ещё более яркими красками. Если раньше я шарахалась от слова script, то теперь прочувствовала все его величие.

Анимации персонажей в момент подведения первых итогов разработки игры:

После первой публичной презентации, на которой мы получили не очень лестные отзывы, лишились части команды. Но те, кто остался, с новыми силами приступили к переделке игрового арта. Я помню удрученное лицо Ани после вердикта на полную переделку, бодрое настроение геймдизайнера Макса и мое уж очень нестабильное состояние, когда приняли решение делать анимацию персонажей непосредственно в Unity. Причина смены софта заключалась в том, что программист Игорь жаловался на кривой импорт Spine-Unity, а именно:

● проблемы с визуальным оформлением частей, которые изначально были скрыты, а должны были появляться в определенных анимациях;

● белая обводка по контуру частей тела;

● не работало изменение drew order при анимации.

(как оказалось позже, с приходом другого, опытного программиста Макса, эти проблемы были ложные)

Большой печалью была невозможность использования всех фишек и няшек Spine, из-за старой крякнутой версии, которую мы использовали: mesh, IK и edit curves. В Unity меня сразу привлекло наличие кривых, которые делают анимацию плавной.

При необходимости мы подумали анимировать ткань с помощью 3Ds Max и модификатора Skin — этот способ нам показал преподаватель «Полигона» Кирилл Грушевич, который разделял с нами свое рабочее пространство — с середины июля мы стали работать в аудиториях на полный рабочий день. Из-за работы «в офисе», сразу поменялся формат общения, взаимодействия команды, скорость и производительность — в сторону улучшения, само собой.

По сравнению со Spine, Unity не была столь приветлива. Нужно было снова собирать персонажа по частям, а основные неудобства причинял rotate — руки и ноги вечно крутились не в ту сторону, которую надо, требовалась постоянная корректировка через кривые. Все проблемы были решаемы, просто требовали больше времени и сил, но на выходе получался вполне приемлемый итог.

Магичка в Unity:

Также в июле к нам присоединился новый опытный программист Макс, который четко объяснил, что нужно возвращаться в Spine — это один из лучших инструментов, предназначенных для игровой 2D-анимации. Потестив старые спайновские анимации, он не выявил никаких проблем с импортом. Противоречивые чувства возникли в моем организме: с одной стороны радость даже от одного упоминания слова Spine, c другой:

Переборов «усеагульную млявасць i абыякавасць да жыцця» (белорусскоязычное выражение, обозначающее «всеобщая вялость и безразличие к жизни» — прим. автора) после этого драматического события, пришлось переделывать. Пути назад уже не было.

Одним из самых неожиданных персонажей оказался Болотник. Сколько дискуссий, споров, и даже «рефов» в доказательство своей правоты было представлено геймдизайнерами на этого персонажа. Часто мы использовали «живые» референсы, когда Макс или Виталик показывали например, как копейщик правильно должен бить копьем — к счастью, в случае с Болотником обошлось без показов на натуре.

Ну а вот как теперь выглядят и двигаются некоторые наши персонажи.

Копейщик — получение урона:

Песта — получение урона:

Магичка — удар:

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

Вот как оно все теперь выглядит в сборе:

Ну и в в завершении поделюсь радостной новостью: мы наконец купили легальный Spine со всеми его прелестями. Это был целый ритуал, когда мы торжественно жали кнопку Pay. После этого я целый день восторгалась и отвлекала Макса от работы, чтобы он посмотрел, как я теперь умею.

А наша Аня не перестает удивлять уникальными персонажами, которые сразу же попадают в свежий Spine:

#опыт

{ "author_name": "Николай Чумаков", "author_type": "editor", "tags": ["\u043e\u043f\u044b\u0442"], "comments": 6, "likes": 8, "favorites": 1, "is_advertisement": false, "subsite_label": "gamedev", "id": 1956, "is_wide": false }
{ "id": 1956, "author_id": 773, "diff_limit": 1000, "urls": {"diff":"\/comments\/1956\/get","add":"\/comments\/1956\/add","edit":"\/comments\/edit","remove":"\/admin\/comments\/remove","pin":"\/admin\/comments\/pin","get4edit":"\/comments\/get4edit","complain":"\/comments\/complain","load_more":"\/comments\/loading\/1956"}, "attach_limit": 2, "max_comment_text_length": 5000 }

6 комментариев 6 комм.

Популярные

По порядку

Написать комментарий...

Николай Костоправ

2

болотник, выходит, практикует тот самый секретный стиль боя на писюнах

Ответить

Evgeny Eliseev

0

Очень странно, что для названия семи статьей дневников разработчиков одной игры используется название другой игры :/

Ответить

Станислав Дашкевич

Evgeny
1

Надо было начало читать. Как они набрали людей и стали думать =)

Ответить

Макс Семенов

0

Все анимации у нас берутся с живых людей, поэтому они столь достоверны :).

Если серьезно - судьба этой пасхалки еще не решена, но думается возрастной рейтинг для нас важнее.

Ответить

Vitaly Moroz

0

Только спустя две недели узнал, что оказывается, эта часть уже опубликована ))
Что ещё раз подтверждает что на прошедшем девгамме пати были что надо :D

Ответить

Станислав Дашкевич

Vitaly
0

Тебя же до девгамма Сергеем звали :D

Ответить
0

Прямой эфир

Подписаться на push-уведомления
[ { "id": 1, "label": "100%×150_Branding_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox_method": "createAdaptive", "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfl" } } }, { "id": 2, "label": "1200х400", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfn" } } }, { "id": 3, "label": "240х200 _ТГБ_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fizc" } } }, { "id": 4, "label": "240х200_mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "flbq" } } }, { "id": 5, "label": "300x500_desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "ezfk" } } }, { "id": 6, "label": "1180х250_Interpool_баннер над комментариями_Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "ffyh" } } }, { "id": 7, "label": "Article Footer 100%_desktop_mobile", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjxb" } } }, { "id": 8, "label": "Fullscreen Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjoh" } } }, { "id": 9, "label": "Fullscreen Mobile", "provider": "adfox", "adaptive": [ "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fjog" } } }, { "id": 10, "label": "Native Partner Desktop", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyb" } } }, { "id": 11, "label": "Native Partner Mobile", "provider": "adfox", "adaptive": [ "phone" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fmyc" } } }, { "id": 12, "label": "Кнопка в шапке", "provider": "adfox", "adaptive": [ "desktop", "tablet" ], "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fdhx" } } }, { "id": 13, "label": "DM InPage Video PartnerCode", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox_method": "createAdaptive", "adfox": { "ownerId": 228129, "params": { "pp": "h", "ps": "clmf", "p2": "flvn" } } }, { "id": 14, "label": "Yandex context video banner", "provider": "yandex", "yandex": { "block_id": "VI-250597-0", "render_to": "inpage_VI-250597-0-1134314964", "adfox_url": "//ads.adfox.ru/228129/getCode?pp=h&ps=clmf&p2=fpjw&puid1=&puid2=&puid3=&puid4=&puid8=&puid9=&puid10=&puid21=&puid22=&puid31=&puid32=&puid33=&fmt=1&dl={REFERER}&pr=" } }, { "id": 15, "label": "Плашка на главной", "provider": "adfox", "adaptive": [ "desktop", "tablet", "phone" ], "adfox": { "ownerId": 228129, "params": { "p1": "byudo", "p2": "ftjf" } } }, { "id": 17, "label": "Stratum Desktop", "provider": "adfox", "adaptive": [ "desktop" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvb" } } }, { "id": 18, "label": "Stratum Mobile", "provider": "adfox", "adaptive": [ "tablet", "phone" ], "auto_reload": true, "adfox": { "ownerId": 228129, "params": { "pp": "g", "ps": "clmf", "p2": "fzvc" } } } ]