31 July 2014

Смешиваем любимые биты в программе Unity 5.0

Game developmentUnity3D
Original author: Wayne Johnson
Работа над звуком – одно из главных направлений в подготовке Unity 5.0. После того, как стало понятно, над какими функциями придется попотеть, мы включили звук в список первоочередных задач.
Чтобы всё было на мази, нам пришлось вернуться назад и расставить акценты над теми областями звука, которые были бы задействованы в Unity. Чтобы вы могли соединить сколько угодно хороших, качественных звуков в своих играх, нам нужно было определиться с кодеками и убедиться, что такая схема действительно будет работать. Я постараюсь расписать все нюансы в более подробной статье, ну а пока расскажу вам о нашем первом звуковом аддоне к Unity 5.0, AudioMixer.

Шаг первый

Если вы используете Unity, ваш звук не может быть плохим. Или так себе. Он просто обязан быть лучшим! Потому что помимо прочной основы для работы с ним в будущем, у вас появляется кое-что еще – новая супер функция, которая доказывает, что мы не растрачиваемся по мелочам и делаем все, чтобы вооружить вас до зубов на войне со звуком.
В последующих релизах мы будем совершенствовать все больше областей работы со звуком. Иногда это будут незначительные изменения, вроде устранения багов в существующем наборе функций, который уже показал себя с лучшей стороны. Некоторые будут посерьезней, как например возможность создавать потрясающие интерактивные звуки с полным погружением и контролировать весь звуковой ландшафт целиком.

Почему AudioMixer?

Ответить на этот вопрос довольно просто – раньше эта функция была недоступна. В прошлом все звуки проигрывались на AudioSource, где вы могли добавить различные эффекты в качестве Components, а потом смешать все игровые звуки в AudioListener и включить их в звуковой ландшафт.
В качестве решения мы выбрали AudioMixer, и чтобы не тыкать пальцем в небо, мы решили сделать больше, и собрали воедино множество функций, которые можно найти в хорошо известных вам приложениях Digital Audio Workstation.

Звуковые категории



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

Микширование в Unity

Это и есть основная цель AudioMixer – с его помощью пользователи могут осуществлять контроль над набором всех звуков в игре. Таким образом, все звуки, которые проигрываются в сцене, включаются в один, два, сколько угодно AudioMixer’ов, которые разбивают их по категориям и уже потом редактирует.



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

DSP

Но это не еще все! Каждая AudioGroup может содержать кучу разных DSP аудио эффектов, которые активируются один за другим по мере прохождения сигнала через AudioGroup.

Это уже интересно, правда? Теперь вы не только можете создавать пользовательские схемы трассировки и применять микширование к отдельным категориям. Вы можете распределять какие угодно клевые DSP штуки по всей длине сигнала, добавлять любые эффекты и наслаждаться неограниченной властью над звуковым ландшафтом. Можете даже добавить пустую дорожку, чтобы обработать только определенную часть сигнала.

Но что если вам недостаточно встроенных эффектов Unity? Раньше это решалось с помощью возврата скрипта OnAudioFilterRead и только, что позволяло напрямую самостоятельно обрабатывать аудио сэмплы у вас в скриптах. Этого хватает для простеньких эффектов и разработки ваших собственных фильтров. Но иногда для увеличения погружения в игру вам может захотеться скомпилировать нужные эффекты самостоятельно, ведь правда? Отныне вы можете прописывать и такие комплексные эффекты, как настраивание свертки эхо или многополосный EQ.



Спешим обрадовать, теперь Unity поддерживает настраиваемые эффекты DSP плагина. А это значит, что пользователи могут писать свои собственные DSP, а может быть даже использовать Asset Store, чтобы обмениваться супер креативными идеями с другими. Перед вами открывается целый мир новых возможностей, как например создание своего движка или управление другими звуковыми приложениями вроде Pure Data. Эти настраиваемые DSP плагины могут запросить поддержку сайдчейн и использовать нужную информацию из любого фрагмента микса! Супер!

Одно из интересных новшеств при работе с набором эффектов в AudioGroup – это то, что вы можете использовать затухание, где вам хочется. Можете даже довести сигнал до +20dB (мы поработали и над этим). Воспользуйтесь встроенным измерителем VU в режиме проверки, чтобы посмотреть, как именно видоизменяется сигнал в момент затухания.



Вместе с нелинейным DSP, Sends / Receives и нашей новой фишкой Ducking (которую я подробно опишу ниже в статье), вы получаете супер мощный инструмент по контролю над аудио сигналом через микс.

Смена атмосферы в игре

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

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



Можете даже использовать сохраненные снэпшоты в каком угодно порядке, создавая новые комплексные состояния, и применять их как вам вздумается.

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

Разнонаправленные сигналы

Sends


Помимо уже доступной в Unity вставки DSP эффектов, вы можете вставить “Send” в любую часть микса. Таким образом, вы можете качественно отправить звуковой сигнал туда, где вы оставили “Send”, и решить, какой объём сигнала вы хотите задействовать.

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

Вот только куда уходит ответвленный сигнал? В последней версии Unity, Send применяется вкупе с двумя другими функциями: Receives и Volume Ducking.

Receives

…довольно простые элементы обработки. Это такие же вставки, как и все остальные эффекты, и они всего лишь собирают все ответвленные аудио со всех Send’ов, которые до того отобрали и перемешали их, и уже все это передают к следующему эффекту в AudioGroup.

Разумеется, если речь идет о группах эффектов или моменте затухания в AudioGroup, вы можете вставить Receives куда угодно. Это дает вам огромную свободу действий в плане того, когда задействовать ответвленный сигнал в миксе.

Volume Ducking

Помимо всего прочего, Sends взаимодействуют со вставками Volume Ducking. Так же как и в случае с Receives, эти элементы можно вставлять параллельно с другими DSP эффектами в любое место в миксе.

Когда Send нацелен на вставку Volume Ducking, он во многом ведет себя так же как и протокол компрессора сайдчейн, а это значит, что вы можете задействовать сайдчейн из любого места в миксе и уже оттуда перенаправить затухание звука куда угодно!

Что это значит для тех, кто не в теме? Представьте, что вы заняты микшированием звуков для своего шутера и вам очень хочется оглушить игрока звуками перестрелки и взрывов. Ну, это разумно, но как насчет такой ситуации: вот вы подходите к не игровому персонажу на поле боя и пытаетесь прислушаться к его глубокомысленному бормотанию. И… не можете ничего разобрать. Volume Ducking позволит вам динамично понижать громкость отдельных сегментов микса (в данном случае, звуки артиллерии), целиком и полностью, совершенно при этом не затрагивая другие сегменты (разговор персонажей). Просто используйте Send из AudioGroup, в которой содержится диалог персонажей, и перенаправьте его в Volume Ducking в AudioGroup, содержащую звуки поля боя.

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

Ну а самое клевое, так это то, что вы можете сделать все это в редакторе, не создавая при этом ни строчки кода!

Вместо заключения

И хотя я только поверхностно обрисовал возможности AudioMixer в этой статье, надеюсь, этого достаточно, чтобы заинтересовать народ в работе со звуком в Unity 5.0.

Отныне и впредь мы будем приближать будущее звуковой обработки в играх, и снабжать вас набором инструментов для создания первосортного звукового ландшафта!

От переводчика: по прежнему рад вопросам и критике, а так же пожеланиям по темам переводов про Unity
Tags:звукаудиозвукорежиссуразвуковой дизайнгеймдевгеймдизайн
Hubs: Game development Unity3D
+15
10.9k 71
Comments 4
Top of the last 24 hours