[CRYENGINE EaaS] Работа с Wwise: Добавление своих звуков в CRYENGINE EaaS
Примечание: Это один из самых первых уроков по Wwise для CRYENGINE EaaS, сейчас он немного устарел, но основы всё ещё актуальны.
CRYENGINE EaaS можно приобрести в Steam.
Официальный сайт Wwise.
Скачать установочный Wwise и проект с реализацией подключения всех основных звуков к CRYENGINE EaaS.
Урок рассчитан на тех, кто уже просмотрел все основные уроки по Wwise на их официальном канале: http://www.youtube.com/user/AudiokineticWwise
Ещё желательно посмотреть урок по разбору демки игры Limbo (прекрасный платформер):
Данный урок показывает ключевые основы без каких-либо углублений в дебри. Про дебри (RTPC, 3D звук, затухание звука и прочее), может быть, будет в другой раз. В тоже время, эти знания очень доступны и пара дней изысканий решат проблемы понимания ключевых вещей.
Все ниже изложенное в статье показано в этом видео:
I. Качаем специальное DLС для CRYENGINE EaaS, в котором содержится актуальный установочный Wwise и пример проекта с реализацией подключения звуков к CRYENGINE EaaS
II. Старт
1. Запускаем Wwise; создаём новые проект, нажав на кнопку New...
2. Называем проект (любое удобное название без пробелов и кириллицы)
3. Выбираем путь для размещения проекта
4. Проект должен располагаться в директории движка: CRYEGINE/GameSDK/Sounds ВАЖНО: Папка проекта должна обязательно называться: wwise_project. В ней будут хранится исходники звуков и различные их настройки. ВАЖНО: Файлы проекта должны находится именно в папке wwise_project, а не в какой-то папке внутри wwise_project. В противном случае звуковые триггеры не будут отображаться в Audio Controls Browser (в движке).
5. Убираем все галки. Это расширения функционала, которые можно подключить при надобности, но в нашем случае они не пригодятся. Так же стоит учесть, что почти все расширения платные.
6. Подтверждаем
III. Предупреждение по лицензии:
Тут нам сообщают, что для Evaluation версии есть ограничение в 200 звуков на звуковой банк.
Закрываем это сообщение.
Чтобы снять ограничение по количеству звуков нужно приобрести коммерческую лицензию. Audiokinetic предлагают несколько вариантов получения коммерческой неограниченной лицензии:
1. Единоразовый платёж (на начало 2016 года он составлял 750$);
2. Отчисление 1% роялти с продаж вашего продукта.
Подробности можно почитать тут: https://www.audiokinetic.com/licensing/free-limited-commercial/
Так же стоит учитывать, что чтобы начинать продажи своего продукта с ограничением 200 звуков, нужно подать заявку на получение бесплатной ограниченной инди лицензии Wwise. Это можно сделать на официальном сайте: https://www.audiokinetic.com/licensing/faq/
IV. Работа с Wwise, импорт звуков.
1. Создадим виртуальную папку для удобства размещения звуков и дальнейшей работы с ними. Для примера создам папку Events и в нём папку Metal_1
Кликаем ПКМ на Default Work Unit; в появившемся меню выбираем New Child; в выпадающем списке выбираем Virtual Folder; называем созданную папку Events; создаём ещё одну папку, которая будет размещаться в созданной папке Events - кликаем ПКМ на папке Events и проделываем те же операции для создания папки; называем её Metal_1. Должно получится так:
2. Создадим звуковые контейнеры Sound SFX, в каждом из которых будет содержаться нужный нам звук.
Примечание: Контейнер Sound SFX создаётся автоматически при импорте звука, но для наглядности я решил расписать ручной вариант.
Кликаем ПКМ на нашем виртуальной папке Metal_1; выбираем New Child / Sound SFX Создаём столько, сколько нужно. Я создал три штуки для трёх звуков:
3. Готовим нужные нам звуки. Для это их необходимо конвертировать в формат .WAV 44100 или 48000 Гц, для объёмного звучания звуки должны быть стерео. Wwise работает только с .WAV. Конвертировать можно через бесплатную и простую программу для обработки звуков Audacity - http://audacity.sourceforge.net/
4. Импортируем нужные нам звуки (звуковые файлы) в подготовленные контейнеры Sound SFX (у меня это metal_bang_a, metal_bang_b и metal_creak_short). Для этого выделяем звуковой файл и перетаскиваем в нужный нам контейнер:
Подтверждаем импорт:
Проделываем ту же операцию для остальных звуков, размещая их в контейнерах Sound SFX.
5. Необходимо конвертировать наши звуки. Настроим параметры конвертации (эта операция проводится единожды для проекта, потом конвертация будет занимать всего четыре клика):
А) Выделяем наши контейнеры со звуками; Б) Выбираем вкладку Source Settings; В) Жмём кнопку Edit Г) В появившемся окне Conversion Settings Editor настраиваем параметры для платформы Windows: в Channels выбираем Stereo; Д) В Sample Rate выставляем то значение, c которым конвертировали .WAV-файлы. Я конвертировал с 44100 Гц (движок так же поддерживает 48000 Гц); Е) В Format выбираем Vorbis; Ё) В Quality выставляем на 9 или на любое значение, которое вам нужно. Далее поясню что это значит; Ж) При нажатии в Quality кнопки Edit появится окно настройки Vorbis Encoder Parameters, там увидим Quality Factor, чуть правее него показан битрейт. Меняем число Quality Factor и наблюдаем за изменением битрейта. На мой взгляд, 160 кб/сек вполне достаточно для игр, при этом существенно экономится память; З) Подтверждаем
6. Теперь непосредственно проводим конвертацию наших звуков:
А) Выделяем наши звуки в табличке Audio Sources; Б) Жмём на них ПКМ и выбираем Convert...; В) В появившемся окошке Audio File Conversion выбираем платформу Windows; Г) Подтверждаем — конвертация ЗАВЕРШЕНА.
Не стоит пугаться, такая продолжительная операция по настройке делается единожды на проект, далее конвертация будет проводится всего в четыре клика. Пример:
1 Выделяем наши импортированные звуки 2 Кликаем ПКМ и жмём на Convert... 3 Выбираем платформу 4 Подтверждаем — конвертация завершена с ранее предустановленными настройками.
V. Работа с Wwise, создание событий (Event), которые будут методом активации проигрывания звука в движке:
1. Переключаемся на вкладку Events 2. Для удобства и чтобы не запутаться создадим ту же иерархию виртуальных папок, что у наших звуковых контейнеров. Для этого разворачиваем свиток Events; кликаем ПКМ на Default Work Unit; создаём иерархию виртуальных папок, у меня это Events и Metal_1 3. Далее создадим сами события (events), которые будут запускать импортированные звуки в движке. Для этого кликаем ПКМ на папке, в которой хотим разместить события (events); выбираем New Child, а там уже Play.
Создаём столько событий, сколько создали контейнеров со звуками. У меня их три и я создал три события: Play_metal_creak_short, Play_metal_bang_a, Play_metal_bang_b. Назвать можно как угодно, но лучше также, как и контейнеры, чтобы не запутаться. Получилось следующее:
Дальше необходимо установить связь между событием (Event) и контейнером (Sound SFX). Для этого нужно:
1. Выделить событие, кликнув по нему ЛКМ и переключиться на вкладку Audio 2. Выделить контейнер со звуком и перетащить его в слот Objects
Проделываем эту операцию для каждого события. Должно получиться так, что каждый контейнер (Sound SFX) будет привязан к соответствующему событию (Event).
Проверяем правильность привязки:
1. Выбираем наше событие 2. Жмём кнопку Play — нужный звук отработал, значит всё нормально.
VI. Создание банка звуков — Sound Banks. Это ключевая вещь, в которой осуществляется хранение звуков и их настроек в компактном виде.
1. Переключаемся на вкладку SoundBanks 2. Кликаем ПКМ на Default Work Unit и создаём SoundBank. Я назвал его my_game_sounds
Далее нужно поместить наши звуки в созданный банк:
Два раза кликаем ЛКМ на созданном банке; откроется окно SoundBank Editor. Нам нужно поместить туда наши звуки, для этого:
1. Переключаемся на вкладку Audio, при этом окно SoundBank Editor должно остаться открытым 2. Выделяем наш основной виртуальную папку (Event) с нашими звуками и перетаскиваем в окно SoundBank Editor. Всё то, что связано с папками и содержащимися в них контейнерами со звуками, будет перенесено в SoundBank.
Примечание: Вместо отдельной папки можно поместить Default Work Unit и всё что в нём было создано окажется в SoundBank. Особой разницы нет, просто порой могут содержаться некие экспериментальные образцы и захламлять ими банк не хочется, в этом случае лучше будет перемещать только нужные виртуальные папки.
В SoundBank Editor во вкладке Edit проверяем всё ли нам нужно было перемещено в SoundBank. На скриншоте видно, что все созданные мною виртуальные папки, события (Events) и импортированные звуки успешно помещены в SoundBank. Закрываем окно SoundBank Editor.
На завершающем этапе манипуляций в Wwise необходимо сгенерировать созданный ранее SoundBank. Для начала укажем путь размещения для сгенерированного SoundBank, для этого проделаем следующее:
1. Жмём Project 2. Выбираем Projects Settings 3. В открывшемся окне выбираем вкладку SoundBanks 4. Выбираем путь для размещения сгенерированного SoundBank. Так как работаем исключительно с Windows, то выбираем путь только для этой платформы 5. Указываем путь до GameSDK/Sounds. Здесь создаём папку wwise, именно с таким названием и никаким другим. Выбираем её 6. Подтверждаем
Эту операцию нужно проделать единожды для проекта. Для нового проекта придётся повторить.
Сгенерируем SoundBank. Это действие запакует всё то, что мы сделали в один файл с расширением .bnk. Делается это так:
1. Открываем вкладку SoundBanks; кликаем ПКМ на созданном SoundBank (в моём примере это my_game_sounds) 2. Выбираем Generate SoundBank(s) from current platform 3. Откроется окно Generating SoundBanks – Completed; в нём показано, что всё сгенерировалось успешно; закрываем.
ГОТОВО. Сохраняем проект и можно закрывать Wwise.
В папке GameSDK/Sounds/Wwise должно получится примерно такое:
Кроме выделенных файлов с расширением .bnk нам ничего не нужно, лишнее можно удалить.
VII. Интеграция в движок. Чтобы наш SoundBank был загружен в движке необходимо проделать следующее: 1. В папке GameSDK найти GameData.pak 2. Открыть его архиватором 3. Проследовать в папку Libs\GameAudio 4. Найти в папке GameAudio файл g_atl_preloads.xml (этот файл отвечает за загрузку звуковых банков при запуске движка) 5. Создаём иерархию папок в папке GameSDK: Libs\GameAudio 6. Копируем в созданную папку GameAudio файл g_atl_preloads.xml 7. Открываем g_atl_preloads.xml блокнотом или его аналогами и прописываем название нашего звукового банка.
Примечание: Содержимое g_atl_preloads.xml может отличаться от того, что представлено на скриншоте, но суть та же. Разобраться в иерархии и сделать по аналогии не должно составить проблемы.
8. Сохраняем изменения
Подключение в движке: 1. Запускаем движок 2. Загружаем любой уровень 3. В верхней панели открываем View/Open View Pane/Audio Controls Browser (ACB)
4. В открывшемся окне создаём папки с такой же иерархией, с какой они были ранее созданы в Wwise. Это не обязательно, но поможет избежать путаницы.
5. Я создал основную папку my_game_sounds и в нrq воссоздал иерархию из Wwise. В списке справа должны быть все те события (Events), что были созданы и помещены в SoundBank в Wwise. У меня это: Play_metal_creak_short, Play_metal_bang_a, Play_metal_bang_b. В движке они называются триггерами (Trigger) — обозначены зелёным значком.
Перетаскиваем триггеры (события) в папку слева.
После завершения перетаскивания сохраняем результат нажатием кнопки Save All.
ГОТОВО!
Теперь звуки можно использовать на уровне.
Всё выше описанное показано в видео:










