В работе мы не будем использовать известные middleware-инструменты для звука (Wwise, Fmod), а обойдёмся штатными инструментами Unreal Engine 4.
Общий план работы
Всю работу можно разбить на несколько основных этапов:
- Концепт — думаем над вопросами: как мы будем делать звук? Как будем внедрять?
- Саунд-дизайн в аудио-секвенсоре — готовим все необходимые wav-файлы.
- Саунд-дизайн в Unreal Engine 4 — внедряем wav-файлы, делаем ассеты, крепим к анимациям.
Далее обо всём по порядку.
1. Концепт
Игра делается в дизель-панк стиле, значит мы будем использовать механические звуки. Никакой электроники или sci-fi элементов не должно быть. Это не робот, это именно броня. Внутри находится человек. Человек окружён механизмами и системами.
Озвучиваемая броня — это мощная штука в игре. Звук явно не должен быть миниатюрным или няшным. Когда мы видим такого персонажа, мы должны понимать, что это парень серьёзный.
Посмотрим внимательнее на персонажа — он в шлеме, у него есть ранец с некими системами, предположим что в них находится жидкость, сама броня достаточно подвижна — много механических деталей и конструкций. Используем это в качестве основных категорий звуков:
- Голос.
- Ранец.
- Металлические/механические звуки.
Для голоса будем использовать стандартное человеческое дыхание, но смешаем его с водной составляющей, обработаем для придания эффекта “шлема”. Для ранца будем использовать также водные и кислотные составляющие. Для механики/метала используем металические скрежеты, серво-приводы и всякие механические шебуршания.
Внедрять в проект будем стандартными средствами Unreal Engine — с помощью Sound Cue и их креплению к соотвествующим анимациям.
2. Саунд-дизайн в аудио-секвенсоре
Для саунд-дизайна я использую Ableton Live, потому что у него в комплекте уже идут очень простые и интересные плагины для аудио-манипуляций, а сам дизайн программы ориентирован на высокую скорость работы с аудио.
Для исходных материалов мы планировали записывать звуки сами. Но, посчитав стоимость достойного оборудования, комнаты для записи, время на саму запись и обработку материала, пришли к выводу что это для нас будет следующим этапом. Пока что ограничимся материалом из аудио-библиотек. Исключение — это голос. После пробных дублей стало понятно, что мы сможем записать его сами.
2.1. Голос
Для записи голоса я использовал отечественный микрофон Oktava MK-012 с капсюлем от MK-101. Он недорогой и, учитывая то что мы будем серьёзно искажать полученный материал, качество записи нам не так важно. Вот что получилось в результате записи:
Вот так звучит обработанный материал:
Суть обработки заключается в использовании вокодера. Мы просто смешиваем в нём голос с водной основой (водные пузыри) и дальше уже обрабатываем каждый канал по вкусу. Подробную схему обработки с моими настройками можно посмотреть здесь:
2.2. Ранец
Для ранца мы используем следующие материалы:
- Воздушный пар (steam).
- Водные пузыри — пробрасываем связь с голосом.
- Синтезатор Analog с булькающим звуком — для дополнительной окраски. На синтезаторе используем только ноту ля (А-1), т.к. основная тональность в игре ля-минор. Конечно, эта составляющая мало слышима и скорее работает на каком-то подсознательном уровне, но лучше что бы и здесь было всё впорядке.
- Лёгкие электрические искры.
- Шипение кислоты.
Кидаем всё в один котёл, обрабатываем, получаем такие звуки:
Подробную схему обработки с моими настройками можно посмотреть здесь:
2.3. Механика/металл
Главная часть из всего дизайна — даёт понять, что мы имеем дело с железной бронёй. Здесь никаких особых примудростей нет, всё сделано стандартными слоями (лэйеринг) с минимумом эффектов (эквалайзер). Как пример такой работы, можно посмотреть смерть персонажа. Сначала слышим удар (попадание абстрактного “чего-то”), далее скрежет заваливающейся массы брони и падение. Вот как это выглядит в секвенсоре (видны слои исходных сэмплов):
Вот как это звучит:
После того как все wav-файлы отрендерены, загоняем их в звуковой редактор (я использую Adobe Audition), редактируем на чистовую (отрезаем тишину в конце, убираем возможные артефакты). Все файлы делаем 44.1kHz, 16 bit, mono. Получаем пак звуковых файлов, готовых к загрузке в Unreal Engine 4.
2. Саунд-дизайн в Unreal Engine
Теперь наша задача воссоздать проделанную работу в секвенсоре, но уже инструментами Unreal Engine. Импортируем заготовленные wav-файлы, создаём ассеты Sound Cue с названиями, соответсвующими нашим событиям. В данной работе я разделил звуки брони, ранца и голоса по трём отдельным Sound Cue ассэтам. Это связано с тем, что в нашей системе нэйминга аудиофалов все шаги и голоса лежат отдельно. Сливать всё в один ассэт не логично, хотя в данном случае озвучки брони это было бы удобным. Будем придерживаться существующей системы.
При создании Sound Cue основным инструментом являются следующие звуковые компоненты (Sound Nodes):
- Modulator — модулирует каждую итерацию звука по высоте тона и громкости.
- Random — выбирает случайным образом один сэмпл из всех предложенных.
Вот как выглядит ассэт шагов нашей тяжёлой брони:
Здесь мы видим и Random (выбирает из 4-х сэмплов) и Modulator (модулирует выбранные сэмпл случайным образом). Также видим два разделённых пака шагов — у одного в имени файла просто «harm», у второго «harm1». Это произошло, потому что предполагались две разных тяжёлых брони в игре, озвученных чуть-чуть по разному. По техническим причинам пока что остаётся одна озвучка, но сделанное разделение сохраняется (возможно в будущем этот момент реализуется). «harm» — это общие низкочастотные части шагов, а «harm1» — это более высокочастотные части. Для второй брони файлы «harm1» поменяются на «harm2» (визуально вторая броня более «кольчужного типа», как раз здесь это учитывается).
Далее полученные ассэты шагов мы крепим к соответсвующим анимациям. Например, крепление к анимации бега выглядит так:
В завершении предлагаю ещё раз пересмотреть все получившиеся ассэты:
На видео:
- Правая часть экрана — ассэт анимации и строка времени с проставленными звуковыми ассэтами.
- Левая часть экрана — открытые звуковые ассэты, используемые в данной анимации.
По тому, как загораются связи в левой части экрана можно проследить какой wav-файл сыграл в данный момент времени.
Надеюсь, эта статья будет полезна всем, кто работает с Unreal Engine. Спасибо за внимание!
Комментарии (9)
Loxmatiymamont
08.12.2015 15:15+3Мне водные звуки покоя не дают — у него в шлеме аквариум чтоли?
headshotlab
08.12.2015 15:35+1Я предполагаю, что шлем как-то связан с системой ранца. Мы остановились на том что эта какая-то водная система. Т.е. он дышит, но мы слышим дыхание через некие «водные-фильтры». Впрочем, всё может поменятсья, если арт-директор всё перелопатит и будет принят новый концепт. Пока что так.
FrozmatGames
09.12.2015 07:50Мне кажется проблема в дизайне костюма как таковом. Потому что звуки вполне «стимпанковские» если можно так выразится. А вот дизайн такого закрытого шлема с горящими глазами подразумевает что внутри стоит монитор, типа как у железного человека. Что на стимпанк не похоже, это что-то футуристическое. То есть звуки не соответсвуют картинке. Я бы, на свой вкус, добавил бы звук резины при движение, так как не похоже что у персонажа есть какие-то сервамоторы. Больше похоже на бронированный костюм водолаза (особенно по булькающим звукам). И возможно не хватает механических звуков пулемёта при движение. Там вроде как ящик с патронам сзади, как минимум он точно должен громыхать. Есть некоторые моменты в анимации, когда нет вообще никаких звуков, что опять же немного противоречит картинке. Такой массивнный персонаж бесшумно двигаться не может.
headshotlab
09.12.2015 08:48Про сам дизайн костюма не могу прокомментировать, тут не моя зона ответственности. В этой игре очень много референсов, наверняка этот вариант не просто так оставлен (были ещё другие). Материал по используемым референсам сейчас так же готовится на сколько я знаю. Согласен, что похоже на костюм водолаза. Про резину интересный момент, я запишу себе в фидбэки, когда будем делать ревизию звука, попробуем поставить. Про механические звуки при движение (фоли) тоже согласен. Я очень хотел бы их сделать, но в плане фоли нужна определённая система: меняется оружие — меняется звук, меняется тип передвижения — меняется интенсивность звука. Если всё таки дойдёт до реализации отдельного пака звуков на вторую тяжёлую броню — то смена звуков фоли так же будет зависеть и от этого. Это относится и к персонажам без тяжёлой брони (бряцанье амуниции при беге). Поэтому пока что да, промежутки между движениями не заполнены. Задача лежит в области «приятных доделок», до которой нам ещё идти не мало. Пока что делаем только основное. Спасибо за мнение!
Lelik13a
09.12.2015 09:02+1Какой то звук «полый» получился, как будто нет никого в костюме.
headshotlab
09.12.2015 10:34Мне так не кажется, вы смотрите видео или отдельно звуки слушаете? По-моему на видео всё в порядке.
Lelik13a
09.12.2015 11:57+1Видео смотрел, но настаивать не буду — шибко это всё субъективно. Возможно некоторое эхо на сцене с миниганом создало такое впечатление.
RealFLYNN
Спасибо за интересную статью! Хотелось бы узнать больше про озвучку окружения: как в движке игры работать с источниками звука, находящимися на переменном расстоянии от слушателя, иногда за стенкой\ в дальнем конце коридора — и как готовить такие семплы.
headshotlab
Сделаю это темой следующей статьи. Надо подумать как это проще всего рассказать. Если быть кратким, то в UE4 есть тип аудио-ассетов «attenuation». Внутри этих ассетов задаются пространственные параметры звука — на каком расстоянии он начинает угасать, по какой кривой и нужно ли применять НЧ-фильтр. Далее нужную аттенюацию указываем в Sound Cue (в Details). Потом просто перетаскиваем Sound Cue на сцену (он конвертится в Ambient Sound Actor) и видим как источник звука (такая колоночка), так и его аттенюацию (по умлочанию это сфера). Сэмплы на такие вещи лучше готовить в wav 44.1kHz 16-bit (это стандарт анрила) в mono. Стерео здесь ни к чему, т.к. источник точечный, нужно лишь поставить на уровень реверберацию (отдельный тип ассетов), что бы эти моно-источники более-менее детектились бинаурально. А вот если вы кидаете на уровень общий эмбиент-луп или музыку, то её уже в стерео и без указания аттенюации. Так она будет везде и всегда.