Уроки Unreal Engine

Unreal Engine 4. Учебник для начинающих, часть 7: Использование звуков и музыки

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

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

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

В этом уроке вы узнаете, как:

  • Воспроизводить звуки и зацикливать музыку;
  • Воспроизводить звуковой эффект в определенных точках анимации
  • Контролировать громкость звука
  • Регулировать громкость звука в зависимости от его расположения в 3D пространстве
  • Управлять громкостью музыки и звуковых эффектов при помощи пользовательского интерфейса

Обратите внимание: вы будете использовать Blueprints в этом уроке. При необходимости, освежите свои знания по этой теме, прежде чем продолжить.

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

Это занятие является частью серии, которая состоит из 10 уроков, посвященных Unreal Engine:

Начало работы

В первую очередь вам необходимо скачать стартовый проект и все материалы, необходимые для работы. Разархивируйте файл и откройте SkywardMuffin.uproject.

Для начала воспроизведения нажмите Play. Посмотрите, цель игры – прикоснуться к как можно большему количеству облаков, не падая. Используйте мышку, чтобы начать.

Игра немного расслабляет, не так ли? Чтобы усилить эти чувства первое, что вы сделаете — вставите спокойную фортепианную музыку.

Воспроизведение музыки

Перейдите в Content Browser и найдите там папку «Audio». Здесь находятся все звуки, которые вы будете использовать в этом уроке. Вы можете прослушать их, наведя курсор на файл, а затем щелкнув на появившемся значке воспроизведения.

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

Сейчас должно появиться новое окно Details – тут перейдите в раздел Sound Wave и включите Looping:

Затем вернитесь в главный редактор, а перетащите левой кнопкой мыши объект S_Music в окно Viewport:

Таким образом вы создали новый активный объект AmbientSound связанный с S_Music, который является источником звука. Этот объект будет автоматически включать S_Music при запуске игры.

Нажмите Play, чтобы посмотреть, как это выглядит на практике. прослушать музыку. Через 17 секунд (продолжительность музыки) трек повторится снова, т.к. теперь он зацикленный:

Теперь необходимо добавить звук шагов для кексика. Для этого вы будете использовать Animation Notify.

Что такое Animation Notify?

Этот параметр позволяет запускать событие в определенной точке анимации. Вы можете использовать эту возможность в зависимости от своих целей.  Например, вы можете создать Animation Notify для создания эффекта падения.

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

В этом занятии уроке вы будете использовать Animation Notifies чтобы настроить звук в каждый момент анимации.

Создание Animation Notifies

Перейдите в папку CharactersMuffin и откройте в редакторе файл SK_Muffin_Walk.

Посмотрите, над рабочей панелью находится область, которая называется Notifies. Светло-серая область — это дорожка уведомлений, именно тут вы будете создавать и управлять Animation Notifies.

Кадры 10 и 22 показывают момент, когда каждая нога кекса оказывается на земле. Вам нужно создать уведомление для обеих этих точек. Чтобы создать уведомление, щелкните правой кнопкой мыши на дорожке уведомлений и выполните действие Add NotifyPlay Sound. Теперь у вас есть новое уведомление под названием PlaySound.

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

Перемещение Animation Notifies

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

Сначала перейдите на временную шкалу, расположенную внизу рабочей панели. Нажмите кнопку воспроизведения и дождитесь, когда текущий кадр будет на отметке 10. Теперь нажмите на паузу и можете продолжить редактирование:

Указатель Animation Notifies отмечен красным цветом:

Переместите параметр PlaySound Notify на уровень красной отметки:

Воспроизведение звука шагов персонажа

Щелкните левой кнопкой мыши PlaySound, чтобы выбрать его, а затем перейдите на панель «Details». В разделе «Anim Notify» установите для «Sound» значение S_Footstep:

Вам нужно повторить этот процесс для второй ноги:

  • Создайте еще один Play Sound Notify
  • Переместите Notify в кадр 21
  • Установите звук уведомления S_Footstep

Теперь, когда анимация ходьбы достигает кадров 10 и 21, автоматически воспроизводится звук S_Footstep.

Закройте SK_Muffin_Walk и вернитесь в главный редактор. Чтобы посмотреть результат вашей работы, нажмите Play и не забудьте включить звук:

После повторного прослушивания шагов вы можете заметить, что при ходьбе используется один и тот же звук. Чтобы установить для каждого случая индивидуальный звук, необходимо использовать так называемые Sound Cue (звуковые метки).

Что такое Sound Cue?

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

Посмотрите, это пример Sound Cue, который использует Concatenator для последовательного воспроизведения трех звуков:

Если вместо этого вы используете узел Random, вы можете выбирать случайный звук каждый раз, когда активируется Sound Cue:

В этом уроке вы создадите и будете использовать Sound Cue, чтобы изменить высоту звука.

Создание Sound Cue

Для начала вернитесь в папку Audio. В качестве звукового эффекта вы будете использовать S_Pop, поэтому вам нужно будет создать для него новую звуковую метку. Чтобы это сделать, щелкните правой кнопкой мыши на S_Pop и выберите пункт Create Cue:

Теперь у вас есть новое свойство Sound Cue с названием S_Pop_Cue. Дважды щелкните S_Pop_Cue, чтобы открыть его в редакторе:

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

На графике вы увидите два узла: Wave Player: S_Pop и Output. Sound Cue будет воспроизводить все, что вы подключите к узлу Output (в этом случае он будет воспроизводить звук S_Pop). Вы можете прослушать Sound Cue, перейдя на панель инструментов и нажав Play Cue:

Изменение высоты звука

Чтобы изменить высоту звука, вам нужно использовать узел под названием Modulator. Создайте его и подключите следующим образом:

Теперь вам нужно определить диапазон необходимый для внесений изменений в высоте звука. Для этого выберите узел «Modulator» и перейдите на панель «Details». Посмотрите, тут есть две области, которые отвечают за высоту звучания: Pitch Min и Pitch Max. Значения меньше 1 указывают, что высоту звука можно уменьшить, и наоборот. Значение =1 указывает, что высота звука останется неизменной.

Для этого урока, необходимо чтобы высота звука могла регулироваться вверх. Установите Pitch Min = 1,0 и Pitch Max = 2,0.

Теперь, каждый раз, когда вы используете Sound Cue, звук будет иметь диапазон между обычным звучанием и удвоенной высотой.

Далее вам нужно настроить Sound Cue, когда игрок касается облака.

Воспроизведение звука

Вернитесь в главный редактор и перейдите в папку «Blueprints», тут вам нужно открыть BP_Cloud и функцию CloudTouched. Сейчас эта функция выполняется всякий раз, когда персонаж касается облака, так что это лучшее место для использования Sound Cue.

Для воспроизведения звука можно использовать два узла:

  • Play Sound 2D: Воспроизведение звука без затухания или изменения относительно положения объекта в пространстве (об этом в руководстве будет отдельный раздел). Используйте этот узел для звуков, которые не существуют в игровом мире, таких как музыка и озвучка пользовательского интерфейса.
  • Play Sound at Location: воспроизведение звука в определенном месте трехмерного пространства. Вы можете использовать этот узел, если хотите, чтобы звук менялся в зависимости от местоположения объекта и ориентации проигрывателя.

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

После этого установите для Sound значение S_Pop_Cue:

Теперь, когда кексик касается облака, будет воспроизводиться S_Pop_Cue.

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

Высота звука меняется, но он все еще не звучит так, как должен звучать в трехмерном пространстве. Чтобы это исправить необходимо распределить звук при помощи инструмента spatialize.

Что такое Spatialization?

Spatialization — это процесс, который отвечает за то, чтобы создавалось впечатление, что звук существует в трехмерном пространстве. Звуки, идущие слева, будут слышны в левом наушнике/колонке и наоборот.

Кроме того, параметр spatialization усиливает эффект полного погружения в игровой процесс. Например, в таких играх как Overwatch и Counter-Strike, пространственный звук может помочь определить местонахождение других игроков.

В этом уроке вы будете использовать параметр spatialization для настройки звука персонажа в зависимости от его местоположения.

Активация параметра Spatialization

Есть два способа включить spatialization для Sound Cue:

  • Sound Attenuation asset: этот объект содержит настройки, относящиеся к затуханию звука и его расположению в игровом пространстве. Вы можете назначить это свойство для разных звуков, если вам нужно, чтобы все они имели одинаковые настройки.
  • Override Attenuation: вместо использования затухания звука вы можете указать настройки в Sound Cue, чтобы создать настройки для отдельных звуковых эффектов.

В этом уроке вы будете использовать второй способ. Откройте S_Pop_Cue и перейдя к панели «Details», найдите раздел «Attenuation» и поставьте галочку рядом с пунктом «Override Attenuation»:

Чтобы проверить, включена ли функция spatialization нужно нажать на значок стрелки, который находится рядом с пунктом Attenuation Overrides.   Параметр Spatialize показывает, является ли в данный момент звук пространственным или нет:

Теперь закройте S_Pop_Cue и переходите к следующему шагу.

Воспроизведение звуков в 3D пространстве

Откройте BP_Cloud и создайте узел GetActorLocation, который вам необходимо соединить с выходом «Location» узла «Play Sound at Location»:

Теперь звук будет воспроизводиться в момент касания персонажем каждого облака.

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

Примечание: По умолчанию аудиоканалом является камера. Это означает, что вы услышите звуки с точки зрения расположения камеры.

Если вы хотите изменить угол направления звука относительно слушателей, вам нужно использовать узел Set Audio Listener Override.

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

Добавление звука дождя

Вместо использования отдельного узла для воспроизведения звука дождя вы можете использовать компонент Audio. Одним из преимуществ этого способа является то, что он будет автоматически запускаться в том месте, где расположена грозовая тучка.

Откройте BP_Cloud и перейдите на панель «Components», тут вам нужно добавить новый аудио компонент и назовите его RainAudio.

Теперь перейдите на панель «Details» и найдя раздел «Sound», измените название аудио на S_Rain.

Звук дождя должен звучать только при попадании на дождевые облака. Это значит, что вам нужно отключить RainAudio для обычных облаков. Для этого опуститесь вниз пока не увидите до раздел «Activation» и отключите параметр Auto Activate:

Теперь вам нужно активировать RainAudio для дождевых облаков, в этом вам поможет функция EnableRain. Эта команда выполняется, если облако действительно является дождевым. Откройте функцию EnableRain и добавьте выделенные на изображении узлы:

Настройка затухания звуков

Перейдите на панель «Components» и выберите «RainAudio». Перейдите на панель «Details» в раздел «Attenuation» и включите параметр Override Attenuation.

Эти настройки определяют распределение звука до конкретной цели или объекта. Для лучшего распределения аудио вы можете использовать два параметра:

  • Radius: максимальное расстояние, которое игрок может пройти, прежде чем звуки начнут затухать.
  • Falloff Distance: Расстояние, на которое игрок должен отойти, прежде чем звук станет тихим. Эта настройка идет в качестве дополнения к предыдущей функции, т.е. они действуют в последовательном порядке.

Посмотрите на пример ниже:

Когда игрок находится внутри внутреннего круга (определяется параметром Radius), громкость = 100%. Когда игрок движется от внутреннего круга к краю внешнего круга (определяется параметром Falloff Distance), громкость уменьшается до 0%.

Для этого урока вам нужно установить значения Radius=300 и Falloff Distance=400:

Это означает, что громкость звука будет равна 100%, когда объект находится на расстоянии менее 300 единиц от источника звука. Когда же расстояние от объекта приближается к значению 700 (300 + 400) единицам, громкость уменьшится до 0%.

Затухание звука

Переключитесь на график событий и найдите событие FadeOut, который находится на панели My Blueprint ⇒ Graphs.  Дважды щелкните по FadeOut в списке EventGraph.

Добавьте выделенные узлы, как указано на изображении ниже:

FadeOut будет выполняться каждый раз, как игрок коснётся облака. При этом, узел временной шкалы (FadeTimeline) будет выводить значение (альфа), в диапазоне от 1 до 0 в течение указанного промежутка времени. При использовании этого значения громкость RainAudio исчезнет.

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

Более подробно ознакомиться с Timelines вы можете в документации.

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

Это можно исправить с помощью параметра «Virtualize when Silent», который будет воспроизводить звук не зависимо от его громкости.

Нажмите Compile, чтобы сохранить результаты и закройте BP_Cloud. Перейдите в папку Audio и откройте S_Rain, тут вам нужно найти раздел Audio и включить функцию «Virtualize when Silent»:

Теперь S_Rain будет воспроизводиться даже если при отсутствии громкости звука. Закройте S_Rain, вернитесь в главный редактор и нажмите Play, чтобы посмотреть внесенные изменения в действии:

Что такое Sound Classes и Sound Mixes

Sound Classes — это простой способ группировки нескольких звуков. Например, вы можете сгруппировать всю музыку в одной группе, а звуковые эффекты в другой.

Чтобы настроить свойства Sound Classes (громкость, высоту звука и т. д.) Во время игры, вам нужно использовать Sound Mix.

Sound Mix – это своего рода таблица, каждая запись которой обозначает тип звука вместе с его настройками.

Посмотрите, как может выглядеть Sound Mix:

При таком использовании Sound Mix, каждый звук в группе Music будет воспроизводиться с половиной громкости, а каждый звук в группе Effects будет иметь двойную громкость звука.

Создание Sound Classes

В этом уроке вам понадобятся для работы два Sound Classes.  Перейдите в Content Browser найдите раздел Add New ⇒ Sounds ⇒ Sound Class. Измените название на S_Music_Class.

Создайте еще одну группу звуков и назовите ее S_Effects_Class:

Теперь вам необходимо распределить каждый звук по классам. Откройте S_Music и найдите раздел «Sound». Измените тип звука на S_Music_Class:

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

S_Footstep

S_Pop_Cue

S_Rain

Затем кликните правой кнопкой мыши по одному из выбранных элементов и проделайте следующие манипуляции: Asset Actions Bulk Edit via Property. Это откроет выбранные объекты в редакторе матрицы их свойств.

Редактор матрицы свойств позволяет одновременно вносить изменения во все свойства нужных вам объектов. Перейдите на панель «Details» и раскройте ветку «Sound». Чтобы выбрать класс звука, щелкните значок сетки справа от типа звука:

Теперь вам необходимо выбрать S_Effects_Class и закрыть редактор матрицы свойств. Все звуки теперь находятся в соответствующем звуковом классе.

Создание и настройка Sound Mix

Находясь в меню Content Browser нажмите Add New и выберите Sounds Sound Mix. Переименуйте Sound Mix в S_Volume_Mix.

Для управления громкостью каждого звукового класса вы можете использовать ползунки. В этом уроке уже имеется готовый виджет с двумя ползунками. Перейдите в папку пользовательского интерфейса и откройте WBP_Options:

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

Переключитесь в режим графика и перейдите на панель «My Blueprints». В разделе «Variables» выберите «MusicSlider» и перейдя на панель «Details» нажмите кнопку рядом с «On Value Changed»:

Таким образом вы создадите событие On Value Changed (MusicSlider), которое будет срабатывать всякий раз, когда вы перемещаете ручку ползунка.

Теперь вам нужно установить громкость для S_Music_Class в S_Volume_Mix. Для этого вы будете использовать узел Set Sound Mix Class Override, который позволяет указать точное значение звукового микса и класса звука. Если Sound Sound пока отсутствует в Sound Mix, он будет добавлен автоматически. Если он уже есть в Sound Mix, то он просто обновится.

Добавьте новый узел «Set Sound Mix Class Override» и установите для него следующие параметры:

Sound Mix Modifier: S_Volume_Mix

Sound Class: S_Music_Class

Fade in Time: 0 (это обеспечит быструю регулировку громкости).

Теперь соедините ваши узлы, как указано на изображении ниже:

Повторите шаги для EffectsSlider, только при этом измените выход In Sound Class на S_Effects_Class:

Теперь, когда значение ползунка изменяется, S_Volume_Mix будет регулировать громкость Sound Class.

Активация  Sound Mix

При управлении громкостью звука через пользовательский интерфейс лучше всего активировать Sound Mix при запуске игры. Таким образом Sound Class будет автоматически использовать настройку регулировки громкости из Sound Mix. Однако, чтобы упростить процесс также можно активировать Sound Mix внутри виджета.

Для этого вам необходимо создать новый узел Event Pre Construct:

Для активации Sound Mix используется узел Push Sound Mix Modifier, который вам нужно создать и подключить его к Event Pre Construct. После этого установите модификатор In Sound Mix на S_Volume_Mix:

Теперь, каждый раз, когда будет появляться WBP_Options, активируется S_Volume_Mix.

Чтобы сохранить результат работы, нажмите Compile и закройте WBP_Options. Нажмите Play, чтобы запустить игру, а затем нажмите клавишу M, чтобы вызвать меню настройки громкости. Отрегулируйте ползунки, чтобы изменить громкость каждого класса звука:

Что делать дальше?

Вы можете скачать готовый проект.

Теперь вы знаете, как импортировать и использовать звуки в Unreal Engine 4. Используя знания, полученные ранее вы можете создать свой эквалазер и другие эффекты.

Если вы хотите узнать больше об аудио системе, изучите документацию. Вы сможете делать такие классные вещи, как добавление реверберации и EQ.

Кроме этого следите на обновлением нового аудио движка!

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

Перевод
Оригинал на англ.
Show More

2 Comments

  1. В разделе «Создание Sound Classes» в абзаце «Затем этого правой кнопкой мыши по одном…» текст не согласуется. Исправьте, пожалуйста.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Back to top button