[Перевод] Dead Cells: использование 3D-конвейера для 2D-анимации

image


Можно сказать, что девиз почти всех инди-разработчиков — это «Большие мечты при ограниченных ресурсах». Когда я начал работать над первой игрой Motion Twin для Steam Dead Cells, эта фраза стала и моим девизом.

Меня зовут Тома Вассёр, в течение целого года я был единственным художником Dead Cells. Я занимался дизайном и анимациями каждого аспекта игры. В одиночку мне пришлось создавать графический стиль, персонажей, монстров, анимации, спецэффекты (FX) и большинство фонов Dead Cells… Пока, к счастью, мне на помощь не пришёл мой злой брат-близнец Генель Массе. Количество художников Dead Cells удвоилось.

Однако нехватка рабочих рук в нашем секторе является частой ситуацией, поэтому я расскажу, как мне удалось не сойти с ума, работая в одиночку всё это время (конечно же, если я ещё не умер и это всё не иллюзия).


Я начинал с рисования очень простого листа моделей в стиле двухмерного пиксель-арта, который затем использовал как основу для создания персонажа и его скелета в 3D (с помощью 3DS Max), после чего импортировал его в формате filmbox. 3D-модели были очень простыми и они скорее всего заставили бы кровоточить глаза любого опытного 3D-художника.

fe300f89f31299732f6422fabe468053.gif


Но если в игре рост персонажа составляет всего 50 пикселей, то трата кучи времени и энергии на 3D-модель кажется не особо эффективной.

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

9fea3054095af7860576a5d9349a8361.gif


ec7f44d47951766314ff079a17e5b635.jpg


Теперь нам нужно научить модель двигаться. Анимации Dead Cells, как и 2D-анимации, основаны на ключевых кадрах. После того, как анимация становится убедительной с как можно меньшим количеством кадров, я добавляю между ключевыми кадрами интерполированные кадры. То есть наши анимации атак по сути являются анимациями поз, и мы используем VFX, чтобы придать им ощущение движения, силы и мощи.

2d6eadf3ab864ef10429b26b6821671a.gif


49765848b51181c9e08017c683debba9.jpg


38fffb537c9a47abe944342f4f5e2c5b.jpg


На этом этапе бОльшая часть работы уже сделана. Мы экспортируем каждый кадр созданной с помощью 3D-скелета анимации в .png вместе с её картой нормалей, что позволяет нам рендерить объём с помощью простейшего toon-шейдера.

7d19b84ca7c2bc6ab8cf86285c654020.png


1083b328bdc87c509ed1392b7e5347c7.gif


Экспорт всей анимации в виде последовательности кадров позволяет нам использовать один-два режима смешивания, усиливающих эффектность анимации.

ypaekmppmcnl9a_8ilch2o63gaq.gif


Разумеется, программистам геймплея никогда не удаётся сделать ничего правильно с первого раза… Они постоянно меняют подходы. Хотя на самом деле так и должно быть. В моём случае процесс переделки был довольно прост и требовал мало времени. Если у вас есть проблемы с таймингами, то их можно устранить перемещением ключевых кадров по таймлайну. Можно также без проблем изменить позу.

Допустим, это оружие оказалось слишком мощным, и мы хотим замедлить анимацию атаки, чтобы немного его ослабить.

478bfec859708322f146c67fba27ccef.gif


Чтобы порадовать программиста (да и себя, ведь мне не придётся выбрасывать всю сделанную работу), мы просто переместим ключевые кадры и изменим позу в соответствии с новыми таймингами.

5fd490a78dc9447f3fd9d7aa2a85a8cd.gif


48cce5a25eb11d06e4fcb79854df68eb.gif


f13d3464950f3dcc3867fd479ec23aea.gif


На самом деле, все эти переделки в целом заняли меньше времени, чем создание GIF для статьи, но, возможно, я просто не очень хорош в работе с GIF.

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

f25514512746f48c5e1c4fd691099552.gif

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

292a95fe620931d2937462b2239af0f8.gif


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

Я попал в индустрию видеоигр в 2008 году, несколько лет работал над казуальными и F2P-играми, которые так и не были изданы, в французской компании, которой уже нет. Я начал рисовать пиксель-арт только в 2013 году, когда меня наняли в Motion Twin, где я работал над пятью играми: Brutal Teenage Crisis, Green Witch, FAFI 360, Uppercup Football и Monster Hotel. Я очень удивлюсь, если вам известно хотя бы одно из этих названий.

Чтобы объяснить контекст, я скажу, что когда мы начали в 2015 году разработку первой итерации Dead Cells, это был мой первый проект такого масштаба. Могу без стыда признаться, что я не был (да и сейчас не являюсь) опытным аниматором и по сей день чувствую себя новичком в пиксель-арте. Оглядываясь назад, могу сказать, что это очень хорошо повлияло на получившийся стиль Dead Cells, потому что я никогда не ощущал себя ограниченным условностями и традициями стиля «олдскульного пиксель-арта».

Чтобы справиться с нехваткой ресурсов и достичь необходимого уровня качества, нам пришлось искать процесс/конвейер/что угодно для получения красивого пиксель-арта без рисовки вручную. Мы стремились создать качественную игру, не тратя неразумное количество времени и энергии на процесс разработки.

С художественной точки зрения нам требовалось следующее:

  • Множество разнообразных фонов с красивым освещением и декорациями.
  • Мощные анимации, придающие бою нервное ощущение, похожее на игры в стиле beat«em-all.
  • Кучи отвратительных монстров.
  • Изобилие оружия, влияющего на стиль геймплея.


Описанный мной выше процесс работы в 3D для Dead Cells на самом деле основывался на другом проекте. В 2015 году Матьё Капдегель (один из разработчиков Dead Cells), Йоан Лаулан (также работавший над Dead Cells в должности звукорежиссёра) и я объединились, чтобы поучаствовать в Ludum Dare 32. В результате у нас получилась игра ScarKrow, точнее, сделанный за 72 часа прототип игры. Он стал первым свидетельством того, что мы хотим создать быстрый и жестокий платформер. Однако на рисование качественных анимаций в Flash у меня уходило слишком много времени, а получаемые результаты не соответствовали нашим ожиданиями.

Однако на тот момент мы уже увидели некоторый потенциал в этой концепции, а Motion Twin всегда была компанией, в которой эксперименты всегда поддерживаются, даже если из них ничего не выходит. После Ludum мы потратили добрых три недели на разработку ScarKrow и уже тогда я понял, что не смогу выдерживать нужный темп, работая в традиционном режиме.

Вдохновившись King of Fighters, Blazblue, а позже и последним Guilty Gear, мы решили делать в основном 3D-анимацию. Такой способ дал нам следующие преимущества:

  • Не нужно перерисовывать каждый кадр
  • Возможность использования одной анимации для разных моделей
  • Автоматическая генерация интерполированных кадров для получения плавной анимации
  • Быстрые и простые переделки для соответствия анимаций геймплею


Благодаря такому рабочему процессу нам удалось достичь 30 FPS в анимациях и сэкономить кучу времени. Если хотите посмотреть, как это работает, то прототип можно бесплатно скачать отсюда.

Для использования того же процесса в Dead Cells нам пришлось решить пару проблем. Во-первых, для ScarKrow мне приходилось рисовать во всех кадрах тени вручную. Такого затратного процесса нам удалось избежать благодаря созданию системы освещения, учитывающей этот фактор. Кроме того, Dead Cells, в отличие от ScarKrow, была игрой в стиле пиксель-арта, поэтому нам пришлось создать инструмент для «пикселизации» персонажей. Мы заранее знали, что он пригодится, потому что позволили себе поэкспериментировать с этим в прошлом. Именно поэтому рекомендую вам экспериментировать.


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

При создании нового оружия в Dead Cells мы можем буквально за пару минут сменить десятки таймингов анимации. И мы можем учитывать мнение сообщества фанатов игры, невзирая на время, необходимое для внесения изменений.

Разумеется, процесс работы с 3D-моделями имеет собственные недостатки. Нам пришлось искать способ рендеринга 3D-модели в пиксель-арте низкого разрешения. Мы решили эту проблему, использовав при рендеринге моделей в низком разрешении техники cell shading и без применения сглаживания, но нам не удалось, например, решить проблему мерцающих пикселей. Да, мы можем устранять их вручную, но весь смысл такого процесса заключается в скорости…, а мы предпочитаем тратить время на дизайн концептов! Меня всегда раздражало и будет раздражать низкое качество деталей, но мы решили, что важнее всего анимации, и берём на себя всю ответственность за свой выбор. Движение — это главное.

Я надеюсь, что это краткое описание нашего процесса работы с анимациями Dead Cells поможет вам в следующих проектах. Но самый важный урок, как мне кажется заключается не в подробностях нашей работы, а в том, что хорошо продуманный рабочий процесс может принести проекту успех.

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

© Habrahabr.ru