Добавление звуков в ваш модуль (Устарело)
Звуковая система Bannerlord построена на основе проприетарной звуковой системы FMOD. Чтобы сохранить производительность звукового движка, сделав его при этом доступным для всех, нам понадобилось создать промежуточный слой.
Ключевые элементы
- Файл
...\Modules\*YOUR_MOD*\ModuleData\module_sounds.xml, куда вы добавляете пользовательские определения для своих собственных звуков - Папка
...\Modules\*YOUR_MOD*\ModuleSounds, куда вы помещаете аудиофайлы (.ogg,.wav)
Примеры можно увидеть в модуле ‘Native’.
Базовое руководство
- Скопируйте примеры файлов и папку в свой собственный модуль
- Добавьте новые звуки в папку ModuleSounds
- Откройте файл module_sounds.xml вашего модуля
- Вы увидите категории звуков, пример кода для воспроизведения звуков и примеры записей module_sound в исходном файле module_sounds.xml
- Добавьте новую запись в 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’: Указывает, не будут ли использоваться пространственные свойства звука. У 3D-звуков есть такие свойства, как позиция, скорость и т. д.
- ‘sound_category’: Все звуки должны быть отнесены к категории, чтобы правильно маршрутизировать их через наши каналы. Доступные категории:
- mission_ambient_bed (2D-зацикленные окружающие звуки, например базовый ветер)
- 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 (2D-звуки для интерфейса и уведомлений)
- alert (Псевдо-3D звуки для оповещения игрока со среднего расстояния)
- campaign_node (Позиционные звуковые узлы для карты мира, ферм, морей, водопадов)
- campaign_bed (2D окружающие звуки для карты мира, порывы ветра в пустыне, ветер на пастбищах и т. д.)
- ‘path’: Звуковой файл, который будет воспроизводиться. Путь указывается относительно папки ModuleSounds вашего модуля. Вы можете создавать дочерние папки.
Пример воспроизведения звука из кода
int soundIndex = SoundEvent.GetEventIdFromString("example/voice/charge"); //чтобы избежать строковых операций во время выполнения, soundIndex можно кэшировать.
if (playOneshot)
{
MakeSound(soundIndex, MainAgent.Position, false, true, -1, -1); //воспроизводит одиночный звук в указанной позиции с заданными параметрами.
}
else
{
SoundEvent eventRef = SoundEvent.CreateEvent(soundIndex, Scene); //получить ссылку на звук и обновлять параметры позже.
eventRef.SetPosition(MainAgent.Position);
eventRef.Play();
}У вас есть два способа воспроизведения звука:
- Одиночное воспроизведение (One Shot) Лучшая производительность, меньше контроля. Запустил и забыл. Хорошо подходит для звуков, связанных с боем.
- Создание и хранение ссылки Худшая производительность. Контроль над каждым параметром звука в любой момент. Например, пауза, обновление позиции.
Эта страница переведена с помощью ИИ и может содержать неточности. Оригинал на английском языке является основным источником.
