Pull to refresh

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

Reading time6 min
Views28K
Original author: Thomas Vasseur
image

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

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

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

3D-конвейер для быстрого создания качественных анимаций и новых моделей


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


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

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



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




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



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


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

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


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




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

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



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


Наверно, это самый полезный небольшой трюк в нашем рабочем процессе, позволивший мне сэкономить сотни часов работы.

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


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

Я попал в индустрию видеоигр в 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 поможет вам в следующих проектах. Но самый важный урок, как мне кажется заключается не в подробностях нашей работы, а в том, что хорошо продуманный рабочий процесс может принести проекту успех.

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

Tags:
Hubs:
If this publication inspired you and you want to support the author, do not hesitate to click on the button
Total votes 27: ↑26 and ↓1+25
Comments31

Articles