Звук шагов в AAA-играх
Привет, меня зовут Александр Хилько. Я основатель школы звука XSSR Academy, а также ведущий аудиодизайнер на проекте World of Tanks.
Сегодня я хочу поговорить о том, как создаются звуки перемещения персонажа в AAA-играх.
Для игр, в которых вы управляете персонажем с видом от первого и от третьего лица, очень важно слышать обратную связь перемещения персонажа. Вы слышите звуки движения на протяжении всей игровой сессии. Поэтому очень важно, чтобы они были правильно сделаны, не раздражали и давали правильную обратную связь.
Я большой поклонник серии The Last of Us. И во второй части мне очень понравились звуки шагов, дыхания, обмундирования и оружия. Я решил разобраться, как работают звуковые системы в The Last of Us 2 и попробовать повторить эти системы у себя на компьютере.
Система шагов
Для начала я записал геймплей, где ходил и бегал по закрытому помещению без посторонних звуков. Закинул фрагмент видео в секвенсор и увидел, что шаги состоят из звука, когда персонаж наступает на пятку и затем, когда ставит носок обуви. Это время составляет порядка 130 миллисекунд для движения шагом.
Конечно, для разных поверхностей меняются звуки характерные для этого материала. Например, когда наступаем в лужу, звучит ещё звук шлепка о воду. Когда персонаж бежит, то расстояние между звуками пятки и носка составляет около 70 миллисекунд.
Причём звук носка меняет свою громкость, а при беге в звуке пятки больше низких частот. При повороте персонажа слышны шаркающие звуки. Вся эта система звуков меняется не мгновенно, а плавно под действием приходящих из игры параметров.
Я создал на Unity демонстрационную сцену. В аудиодвижке Wwise подключил базовую систему шагов для ходьбы и бега.
Также разделил шаги на слой пятки и носка. Ещё добавил дополнительный слой, когда мы убираем ногу. Это добавляет большего реализма в звук. Нога немного шаркает. А на повороте персонажа добавил звуки скольжения ноги по поверхности.
Так как я непрограммист, то я очень ограничен во входных данных от игрового движка. Из Unity я управляю параметрами, которые делают систему шагов работающей естественно. В основном параметры InputMagnitude и InputVertical.
Магнитуда - это длина от нулевых координат до конечной точки вектора. В моём прототипе этот параметр равен нулю, когда персонаж стоит, а когда бежит. InputVertical - это скорость перемещения персонажа. Параметр равен 1, когда персонаж достигает максимальной скорости для шага, или для бега.
Система дыхания
Если вернуться к референсу The Last of Us 2, можно заметить, что к системе шагов подмешена система дыхания. Персонаж дышит непросто, а дыхание, как в реальной жизни, меняется в зависимости от физической нагрузки. Чем больше прилагает усилий, тем интенсивнее меняется дыхание.
Эту же систему я реализовал в Wwise. Сначала я записал своё дыхание для состояния покоя, имитировал ходьбу, а также бег.
Каждое из состояний я записал в нескольких интенсивностях, чтобы учесть, что я могу находиться в состоянии покоя, но моё дыхание не нормализовалось ещё после бега.
Так как я непрограммист, я решил сделать систему нагрузки на дыхательную систему реализовать внутренними параметрами Wwise. Когда мы начинаем бег, нагрузка растёт не мгновенно, а постепенно. Таким же образом как это происходит реальной жизни. А когда силы заканчиваются, дыхание должно стабилизироваться. Наши лёгкие начинают активно качать кислород и потом постепенно стабилизируются. Параметр стресса я полностью смоделировал в Wwise.
Вот так система дыхания звучит в изоляции от всех звуков.
Кстати, в звуке шагов я решил сделать так, чтобы когда персонаж наступает в лужу, обувь не мгновенно высыхала, а постепенно. Таким образом, когда мы выбегаем из лужи или воды, звук воды постепенно исчезает. Этот приём очень хорошо виден в одной из моих любимых игр - Inside.
Звуки одежды
И самая простая система - это звуки обмундирования. Тут всё несложно. Я на персонажа в локтях разместил коллайдеры, и когда они пересекают туловище, звучит трение ткани. Так же как и в жизни. Ну и чем интенсивнее мы двигаем руками, тем громче и резче звук одежды. То есть когда мы замедляемся и останавливаемся, звук становится тише и мягче.
Казалось бы, звуки шагов это всего лишь проигрывание сэмпла, когда нога касается земли, но когда хочешь добиться максимального качества звука, приходится думать и о физике процесса.
Звучание системы движения персонажа
Я планирую в декабре мастер-класс на тему создание системы движения персонажей, который буду проводить в своей школе. Мы с командой решили публиковать наши мастер-классы и стримы на площадке спонср.ру. Сейчас там уже более 10 стримов, мастер-классов и интервью. Здесь вы найдёте мастер-классы по реверс-инжинирингу и синтезу, по Unreal, по музыкальной форме саундтреков.
Загляните в наши планы до конца года, уверен, вы найдёте для себя интересный контент.
Спасибо за внимание!
Всё это, конечно, здорово. Но без самих звуков добиться качества ААА никак не выйдет, а в свободном доступе ве эти звуки (пятка, носок, скольжение) да по разным поверхностям ещё попробуй найди...
Так зачем искать в свободном доступе, если ноги и обувь есть у всех. Это записывается элементарно
https://www.reddit.com/r/gamedev/comments/n4vhcs/150gb_of_high_quality_sound_effects_for_game/ мб кому надо
Интересно, что скажите на счёт попроще подхода. Давно рассматривал код на github двух проектов, одна игра Final Station, другую не вспомню. Ну т.е. 2д, sideview, персонаж ходит с одной скорость/анимацией.
В Final Station автор вызывает звук касания о землю при каждом шаге, меняя ему pitch в пределах небольших значений. Сам звук кратковременный.
В другой игре, уже другой автор, использовал звук шагов с большей длительностью, где звучит 3-5 шагов. Этот звук проигрывается во время состояния движения в петле и там тоже есть воздействие на pitch.
Я спрашивал у одного знакомого, как бы он сделал. Он ответил, что второй вариант. Так не нужно плодить кучу мелких звуков, а есть в одном маленьком треке набор, главное знать с какого места запускать, чтобы синхронизироваться с шагом в анимации.
Так как какой подход лучше? И от чего зависит выбор? Конечно, очень интересно мнение других, не только автора статьи.
(Забыл. В первом варианте, каждый шаг-звук - это новый источник на сцене (скорее всего пул), а второй вариант - это один источник на сцене)
Вариант Final Station каноничнее и лучше, т. к не зависит от скорости анимации, а значит не создаёт дополнительной работы, которая может возникать при синке длинных аудио дорожек с анимациями.
Плюс, он проще и сам по себе даёт больше свободы.
Воздействие на pitch (часто ещё и на volume), через рандом позволяет разбавить однообразие звуков (сделав из условных 3 звуков шагов 10-15 вариантов).
Если у тебя куча мобов, то подход один, если только герой - то уже подход может быть другой, если делаешь на мобилки или ПК - тоже может по разному получится.
Комментарий недоступен