В процессе разработки игр аудио часто отходит на второй план. Ресурсы и время на его создание и настройку выделяются по остаточному принципу. Однако звуки и музыка — это мощные инструменты, которые могут значительно улучшить игровой опыт. Они обогащают обратную связь, отлично передают атмосферу и эмоции, а также помогают раскрыть символизм происходящего.
Самое важное, что даже самый лучший шедевр от талантливого звукорежиссера или композитора не сможет полностью раскрыть свой потенциал, если его не удастся органично интегрировать в игровой процесс. Здесь требуется учитывать как наличие виртуального пространства, так и общую интерактивность происходящего.
В NAU Engine мы включили в редактор как уже существующие в индустрии подходы, так и разработали свои инструменты для решения типовых задач, стабильно возникающих по ходу разработки.
Для того, чтобы звук появился в игре, нужно:
-
импортировать файлы в проект согласно общим правилам
-
добавить звуки в “контейнер”, сгруппировав их, и настроить общую логику их проигрывания,
-
создать на сцене объект с компонентом “эмиттер”, который будет воспроизводить содержимое контейнера,
-
создать на сцене объект с компонентом “слушатель”, который будет улавливать воспроизводимые звуки.
Ниже мы рассмотрим каждый из этапов, а также возможности, доступные разработчику, отвечающему за аудио-контент игры.
Импорт звуков
Путь аудио-контента в разработке начинается с его импорта. Nau Engine работает с форматами WAV и MP3. Для того, чтобы добавить нужные файлы в проект, нужно:
-
или нажать кнопку +Add (Добавить) в левом верхнем углу браузера проектов.
-
или перетащить ассеты из системного проводника в окно браузера в редакторе.
-
или через системный проводник перенести нужные файлы в папку проекта (в корневую директорию или подпапки)
Подробнее об импорте можно прочесть в статье документации. В итоге файл звука попадёт в папку проекта в виде сырого ассета. Теперь его можно использовать при настройке аудио-контейнера – абстрактного ассета, группирующего звуки и помогающего задавать для них базовую логику проигрывания.
Контейнер
Контейнер представляет собой ассет, в котором содержатся один или несколько аудиотреков, а также описывается логика их проигрывания.
Создать контейнер можно в любой папке вашего проекта. Для этого необходимо выбрать пункт "Аудио контейнер" в выпадающем меню, которое появляется:
-
при нажатии кнопки "+ Add" (Добавить);
-
при нажатии правой кнопкой мыши на свободное пространство в браузере проекта.
Выделив контейнер, вы откроете его настройки в инспекторе. В список можно добавить один или несколько импортированных файлов, при этом один и тот же звук можно добавить несколько раз.
Затем вы можете настроить параметры воспроизведения общего содержимого контейнера, используя выпадающие меню. Доступны следующее типы воспросизведения контейнера:
-
Sequence (По порядку) - проигрывает все звуки по порядку
-
Random (Случайно) - проигрывает один случайный звук
-
Shuffle (Перемешать) - проигрывает все звуки в случайном порядке
-
Mix (Соединить) – соединяет звуки в контейнере воедино
И отдельные файлы в списке, и контейнер целиком можно проигрывать, нажимая на кнопку воспроизведения audio_play (проигрывать автоматически).
Добавление на сцену
Чтобы добавить в игру звук, на сцене необходимо создать объекты со следующими компонентами: “эмиттер”, отвечающий за воспроизведение звука, и “слушатель”, который будет его воспринимать.
В некоторых случаях аудио не привязано к определенной точке пространства, например, фоновая музыка или ambient-звуки. В таких ситуациях расположение объектов с компонентами не имеет особого значения. Однако в большинстве случаев расположение звуков в пространстве играет важную роль. Например, если персонаж перемещается по лесу, в котором поют птицы и журчит река, то неправильное расположение эмиттеров, отвечающих за звуки чириканья и текущей воды, может нарушить ощущение полного погружения в игру.
Общее правило: для объекта, представляющих аватар игрока на сцене, назначайте компонент “слушатель”. А вот компонент “эмиттер” с соответствующим контейнером в настройках стоит добавлять на “звучащие” объекты.
В эмиттере можно:
-
добавить ссылку на контейнер, который будет проигрываться
-
указать, будет ли звук играться при запуске сцены, или его нужно активировать (например из скриптов),
-
указать, будет ли звук зациклен при проигрывании,
-
настроить будет ли звук привязан к пространству (3D) или нет (2D), а также в первом случае задать форму и размер этого пространства.
Вы также можете взаимодействовать с контейнерами напрямую через код, связывая их с логикой событий.
После того как сцена будет готова, вы можете проверить её общее звучание, запустив Play mode. Не бойтесь экспериментировать и наслаждайтесь творческим процессом!