Добавление звуков в модуль
Источник перевода - https://rusmnb.ru/index.php?action=article;topic=23493.0
Аудиосистема Bannerlord построена на фирменной аудиосистеме FMOD. Чтобы сохранить производительность звукового движка и сделать его доступным для всех, нам нужно было создать свой внутриигровой аудиопроигрыватель.
Ключевые элементы
- В файл ...\Modules\*ВАШ МОД*\ModuleData\module_sounds.xml вы прописываете названия своих звуковых файлов. В папку ...\Modules\*ВАШ МОД*\ModuleSounds вы помещаете свои новые аудиофайлы (.ogg, .wav).
В качестве примера можно посмотреть, как это реализовано у разработчиков в их модуле ‘Native’.
Базовое руководство
1. Скопируйте примеры файлов и папок из модуля ‘Native’в свой собственный модуль.
2. Добавьте свои новые звуки в папку ModuleSounds
3. Откройте файл module_sounds.xml в вашем модуле.
4. Просмотрите пример записи кода звуковых файлов в файле module_sounds.xml модуля ‘Native’.
5. Добавьте новые строки в файл module_sounds.xml своего мода.
6. Воспроизведите для проверки новое звуковые записи из кода.
Двигаемся дальше
Using module_sounds.xml (Помощь в создании файла module_sounds.xml):
<module_sound name="example/combat/hit" is_2d="true" sound_category="mission_combat" path="example_sound_modders.ogg" />
, где:
‘name’: любое уникальное имя, которое вы хотите. Это идентификатор вашего звука.
- Используется во время воспроизведения звука из кода.
- Используется для воспроизведения звука анимации, добавив к анимации свойство 'sound_code'.
‘is_2d’: (Звук является двухмерным "2D") Ставится значение "true" (верно), если пространственные свойства звука не будут использоваться. 3d звуки имеют свойства, как (position) расположение в пространстве, (velocity) скорость воспроизведения и т.д.
‘sound_category’: Все звуки должны быть отнесены к определенной категории, чтобы они правильно воспроизводились.
Доступные категории:
НАЗВАНИЕ | ОПИСАНИЕ | ПРИМЕР |
mission_ambient_bed | Двухмерные, зацикленные звуки окружения | Ветер, другие погодные явления |
mission_ambient_3d_big | Звуки, которые должны быть слышны издалека | Горящий замок |
mission_ambient_3d_medium | Звуки, которые должны быть слышны со среднего расстояния | Костры |
mission_ambient_3d_small | Звуки, которые должны быть слышны поблизости | Костры в лагере |
mission_material_impact | Звуки физических материальных воздействий | Удар металлического меча о каменную стену |
mission_combat_trivial | Слабые звуки урона в сражениях | Звук при получении низкого урона или вообще без урона |
mission_combat | Звуки урона в сражениях | Звук при получении стандартного или критического урона |
mission_foley | Различные шумовые эффекты (фоли) | Взмахи оружия, звук шагов, звуки движения животных |
mission_voice_shout | Крики людей/животных, которые должны быть слышны издалека | Боевые крики |
mission_voice | Звуки людей/животных | Хрюканье, удары по лицу |
mission_voice_trivial | Слабые звуки людей/животных | Лазание, прыжки |
mission_siege_loud | Громкие звуки осады | Валун, врезающийся в стену, стрельба катапульты, разрушение двери |
mission_footstep | Стандартные шаги | Шаги одиночных людей и мелких животных |
mission_footstep_run | Более громкие шаги, которые можно услышать издалека | Бег, или движение толпы |
mission_horse_gallop | Громкие звуки движения ездовых животных | Галоп лошадей и верблюдов |
mission_horse_walk | Стандартные звуки движения ездовых животных | Мягкий шаг лошадей и верблюдов |
ui | Двухмерные звуки для пользовательского интерфейса и уведомлений | Звук нажатия на кнопку, при всплывающем уведомлении, и т.д. |
alert | Псевдо-3d звуки для оповещения игрока со средней дистанции | |
campaign_node | Позиционные звуки для глобальной карты | Звуки ферм, морей, водопадов |
campaign_bed | Двухмерные звуки окружения для глобальной карты | Порывы ветра в пустыне, ветры на травяных пастбищах и т.д. |
‘path’: Имя звукового файла для воспроизведения [обязательно с его расширением]. Путь (Path) указывается относительно папки ModuleSounds вашего модуля. Вы можете создавать подпапки.
Пример кода в звуковом файле
int soundIndex = SoundEvent.GetEventIdFromString("example/voice/charge"); //to avoid string operations in runtime soundIndex can be cached.
if (playOneshot)
{
MakeSound(soundIndex, MainAgent.Position, false, true, -1, -1); //plays one shot sound at position with given parameters.
}
else
{
SoundEvent eventRef = SoundEvent.CreateEvent(soundIndex, Scene); //get a reference to sound and update parameters later.
eventRef.SetPosition(MainAgent.Position);
eventRef.Play();
}
У вас есть два способа воспроизведения звука:
- One Shot (Один выстрел). Лучшая производительность и меньше контроля за управлением. Выстрелил и забыл. Хорошо подходит для звуков, связанных с боем.
- Creating and holding (Создание и удержание ссылки). Худшая производительность. Контролируйте каждый параметр звука всякий раз, когда вы хотите его произвести. Обновление состояния во время паузы.
Комментариев 0
Посетители, находящиеся в группе Гости, не могут оставлять комментарии к данной публикации.