Звук шагов в AAA-играх

Привет, меня зовут Александр Хилько. Я основатель школы звука XSSR Academy, а также ведущий аудиодизайнер на проекте World of Tanks.

Сегодня я хочу поговорить о том, как создаются звуки перемещения персонажа в AAA-играх.

Создание своего прототипа системы движения на Unity

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

Я большой поклонник серии The Last of Us. И во второй части мне очень понравились звуки шагов, дыхания, обмундирования и оружия. Я решил разобраться, как работают звуковые системы в The Last of Us 2 и попробовать повторить эти системы у себя на компьютере.

Система шагов

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

Послушайте начиная со второй минуты

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

Звук шагов в AAA-играх

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

Я создал на Unity демонстрационную сцену. В аудиодвижке Wwise подключил базовую систему шагов для ходьбы и бега.

Пример системы шагов на аудиодвижке Wwise Александр Хилько
Пример системы шагов на аудиодвижке Wwise Александр Хилько

Также разделил шаги на слой пятки и носка. Ещё добавил дополнительный слой, когда мы убираем ногу. Это добавляет большего реализма в звук. Нога немного шаркает. А на повороте персонажа добавил звуки скольжения ноги по поверхности.

Так как я непрограммист, то я очень ограничен во входных данных от игрового движка. Из Unity я управляю параметрами, которые делают систему шагов работающей естественно. В основном параметры InputMagnitude и InputVertical.

Прототип в Unity Александр Хилько
Прототип в Unity Александр Хилько

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

Система дыхания

Если вернуться к референсу The Last of Us 2, можно заметить, что к системе шагов подмешена система дыхания. Персонаж дышит непросто, а дыхание, как в реальной жизни, меняется в зависимости от физической нагрузки. Чем больше прилагает усилий, тем интенсивнее меняется дыхание.

Эту же систему я реализовал в Wwise. Сначала я записал своё дыхание для состояния покоя, имитировал ходьбу, а также бег.

Записанные звуки моего дыхания Александр Хилько
Записанные звуки моего дыхания Александр Хилько

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

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

Система дыхания собранная на Wwise Александр Хилько
Система дыхания собранная на Wwise Александр Хилько

Вот так система дыхания звучит в изоляции от всех звуков.

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

Звуки одежды

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

Звук шагов в AAA-играх

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

Звучание системы движения персонажа

Я планирую в декабре мастер-класс на тему создание системы движения персонажей, который буду проводить в своей школе. Мы с командой решили публиковать наши мастер-классы и стримы на площадке спонср.ру. Сейчас там уже более 10 стримов, мастер-классов и интервью. Здесь вы найдёте мастер-классы по реверс-инжинирингу и синтезу, по Unreal, по музыкальной форме саундтреков.

Загляните в наши планы до конца года, уверен, вы найдёте для себя интересный контент.

Спасибо за внимание!

190190
38 комментариев

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

Ответить

Так зачем искать в свободном доступе, если ноги и обувь есть у всех. Это записывается элементарно

13
Ответить

Интересно, что скажите на счёт попроще подхода. Давно рассматривал код на github двух проектов, одна игра Final Station, другую не вспомню. Ну т.е. 2д, sideview, персонаж ходит с одной скорость/анимацией.
В Final Station автор вызывает звук касания о землю при каждом шаге, меняя ему pitch в пределах небольших значений. Сам звук кратковременный.
В другой игре, уже другой автор, использовал звук шагов с большей длительностью, где звучит 3-5 шагов. Этот звук проигрывается во время состояния движения в петле и там тоже есть воздействие на pitch.
Я спрашивал у одного знакомого, как бы он сделал. Он ответил, что второй вариант. Так не нужно плодить кучу мелких звуков, а есть в одном маленьком треке набор, главное знать с какого места запускать, чтобы синхронизироваться с шагом в анимации.

Так как какой подход лучше? И от чего зависит выбор? Конечно, очень интересно мнение других, не только автора статьи.

(Забыл. В первом варианте, каждый шаг-звук - это новый источник на сцене (скорее всего пул), а второй вариант - это один источник на сцене)

3
Ответить

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

Плюс, он проще и сам по себе даёт больше свободы.

Воздействие на pitch (часто ещё и на volume), через рандом позволяет разбавить однообразие звуков (сделав из условных 3 звуков шагов 10-15 вариантов).

2
Ответить

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

Ответить

Комментарий недоступен

1
Ответить