Части тел и брызги крови: как и зачем разработчики добавляют «расчленёнку» в игры

Embedded Image

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

Мы пообщались с Александром Магомедовым, нашего преподавателя программы по 3D-анимации, и Александром Балакшиным, автором курса программирования GameCode — чтобы понять, как работает «расчленёнка» и какие специалисты её реализуют. А заодно выяснили, почему многим так нравится гипертрофированная жестокость на экране.

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

Затем, уже в самом геймплее, сразу после удара «целая» модель незаметно подменяется на две расчленённые — с телом и конечностью отдельно.

Отрывается, к примеру, рука: новый кусок руки «рождается» и летит по траектории, заданной движком. А та рука, которую мы нарезали при подготовке, прячется.

Embedded Image

3D-аниматор, преподаватель XYZ School

Отдельная модель руки в Gears of War

Другой, более «честный» способ «разрубить» персонажа в игре — процедурный разрез. Он требует математических операций над моделью — нужно уравнением задать плоскость, которая её разрежет. Хотя в Unreal Engine для этого уже есть готовый функционал — Procedural Mesh с методом Slice Procedural Mesh.

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

Embedded Image

геймплей-программист, преподаватель курса GameCode

После разреза вершины «обрубков» соединяются в плоскости на местах разреза, чтобы в их «мешах» не было видно дыр — именно так работает разрубание в Metal Gear Rising: Revengeance.

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

Для «скелетного» расчленения достаточно одного «целого» персонажа — если у него правильно подобрана текстура, программисту будет достаточно оценить место удара и его силу, чтобы «отделить» нужную конечность с помощью кода.

«Полный» отстрел руки в Soldier of Fortune

Разработчики Dead Rising 3 усложнили этот подход. Они создали «маску разрезания», работа которой похожа на маски в 2D и 3D-редакторах — при нанесении урона по зомби она скрывает ту часть тела, на которую пришёлся удар.

«Маска разрезания» из Dead Rising 3

К тому же, разработчики присвоили моделям зомби так называемые «локаторы разреза» и «локаторы массы». Первые обозначают начало и конец потенциальных линий разреза конечностей, а вторые отвечают за изменения центра массы при нанесённом уроне. Так что поведение зомби естественно меняется в зависимости от того, какие части тела он потерял.

Система «расчленёнки» из Dead Rising 3

Также в Dead Rising 3 у зомби есть «подкожная» модель, которая обнажается при ударах. Она общая для всех мертвецов — будь то мужчина, женщина, худой человек или полный.

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

«Подголова» и варианты голов зомби в Dead Rising 3

В играх на месте разрезов обычно повисают куски плоти, которую нужно анимировать. По словам Александра Магомедова, который работал в том числе над Mortal Shell, с точки зрения анимации куски плоти мало чем отличаются от тряпок — их либо анимируют вручную, либо задают базовые движения, а затем сдвигами ключевых кадров — основных поз анимации, над которой идёт работа — доводят до желаемого результата.

Помимо геймплейного «разрубания» в играх встречаются срежиссированные моменты с потерей конечностей. Например, в The Witcher 3 есть эффектные добивания, где Геральт «шинкует» противников, а некоторые «фаталити» из Mortal Kombat показывают такое детальное «расчленение», что внедрить его в игровой процесс было бы очень сложно, так как в них много дорогих и нестандартных анимаций с очень детальными внутренностями. Особенно в этом отличился Нуб Сайбот в последних частях серии: после его добиваний противник превращается в груду обрубков.

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

Часто приходится анимировать «остатки» героя после потери конечностей — к примеру, он может потерять ноги. Тогда нужно создать его движение ползком или другую анимацию, которая будет учитывать эту ситуацию и подходить персонажу.

Зомби без ног в Half-Life 2

А ещё разработчики добавляют всполохи крови и отлетающую плоть в местах удара или разрыва. Но эти «куски» не существуют в игровом пространстве как объекты вроде ящиков или бочек. Сегодня их создают с помощью спецэффектов.

В последнее время их отрисовывают с помощью VFX-систем, а симуляцию стараются выносить на GPU. Время жизни данных объектов отнюдь не бесконечно, а сохранять их точное местоположение обычно не нужно.

Embedded Image

геймплей-программист, преподаватель курса GameCode

К примеру, кровь в Mortal Kombat 11 делали в Houdini — разработчики смогли добиться реалистичного поведения жидкости с помощью собственного подхода на основе формата Alembic, который впервые появился в киноиндустрии. NetherRealm благодаря ему смогли экспортировать оптимизированные эффекты крови из сторонних утилит в движок, что позволило не нагружать устройство игрока. Метод оптимально распределяет «брызги» по полигонам и использует библиотеку состояний жидкости.

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

Embedded Image

ведущий технический художник NetherRealm

Источник цитаты: https://80.lv/

А Франсиско Гарсиа-Обледо использует Blender в работе над самыми разными проектами, и так он делал и брызги крови для ремастера Assassin’s Creed 3. Для начала он создавал в программе сцену с двумя объектами — «пускателем» жидкости и массой произвольной формы, удар с которой наиболее эффектно разбрызгивал кровь вокруг.

Базовая сцена в Blender

Затем он импортировал застывший брызг в движок и после этого в Substance Designer создавал для него шейдер постепенного исчезновения. Но в таком виде в анимации слишком много неестественно прямых линий — в реальности кровавые брызги редко принимают правильные геометрические формы. Поэтому Франсиско модифицировал текстуру так, чтобы процесс выглядел более натурально.

Загрузка в движок после работы над шейдером

В итоговом варианте текстуры получилось три карты: карта нормалей из Blender, которая даёт красивый результат в статике, карта нормалей из Substance Designer, которая добавляет красивые границы брызга, и ещё одна карта, которая отвечает за анимацию «проявления».

Карты нормалей — это RGB изображения, где каждый из каналов (красный, зелёный, синий) интерпретируется в X, Y и Z координаты нормалей поверхности. Красный канал пространства касательных карты нормалей отвечает за ось X (нормали направленны влево или вправо), зелёный — за ось Y (нормали направлены вверх или вниз) и синий — за ось Z (нормали направлены прямо от поверхности). Подробно о картах нормалей мы писали в отдельном руководстве.

Также Франсиско с помощью модификации карт нормалей добавил «брызгу» процедурные границы, а с помощью искажения финальной развёртки добавил крови эффект «покачивания», который в движении делает её более реалистичной.

Финальный «кровавый брызг» из Assassin’s Creed 3

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

По мнению Томма Хьюлетта, продюсера серии Silent Hill, «приятность» жестоких механик объясняется потребностью в адреналине. В прошлом он играл очень важную роль в жизни людей — к примеру, внезапный прилив сил мог спасти человека от диких животных или помочь справиться с болью. Со временем опасностей стало меньше, и все привыкли к более спокойному поведению, но потребность в подобных эмоциях осталась. Игровые разработчики это понимают и используют во благо пользовательского опыта.

God of War специально сделан так, чтобы вы почувствовали себя мачо-задирой. Как и Бэтмена, Джека Бауэра или Билла Райзера, ничто не беспокоит Кратоса. Он никогда не боится. Вы покупаете экшен-игры ради этого ощущения.

Embedded Image

продюсер серии Silent Hill

Источник цитаты: https://www.gamasutra.com/

Кратос с оторванной головой Гелиоса

К похожим выводам пришли и в маркетинговом агентстве iStrategyLabs. По их словам, реальная драка гарантирует прилив адреналина, но удовольствие — вряд ли. Однако в играх человек понимает, что он в безопасности, так что получает только приятные эмоции.

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

Адреналин — точка G любого игрока. По мере эволюции человека он обеспечивал работу инстинкта самосохранения, так как заставлял вести себя осторожнее и повышал болевой порог. В процессе превращения людей в офисных рабочих, пользователей Facebook и обозревателей Amazon роль адреналина в нашей жизни стала более абстрактной.

автор Gamasutra и IGN

Источник цитаты: https://www.gamasutra.com/

При создании этого материала помогли преподаватели в XYZ School — каждый по своей специализации.

Александр Балакшин — автор курса по программированию GameCode.

Александр Магомедов — автор годовой программы по 3D-анимации.

До 30 апреля все курсы у нас можно приобрести со скидкой 20% — если вам интересно освоить какую-либо из этих профессий, переходите по ссылке.

Комментарии: 0