Новая звуковая система (замена OpenAL)
IMPORTANT
Статус: WIP
Минимальная версия: 2.0
Обзор
Система заменяет устаревшую звуковую подсистему OpenAL / OpenAL Soft на современную аудиосистему с более точным пространственным позиционированием, улучшенным микшированием и расширенными возможностями обработки звука без использования сторонних библиотек для работы со звуком. Что даёт возможность писать собственные фильтры и делать более точные манипуляции со звуком.
Для реверберации используется Resonance Audio
Dev: SteamAudio (Phonon)
В коде есть первичная реализация SteamAudio (Phonon). Если кто-то захочет попробовать его, как альтернативу Resonance Audio, то может отключить #define DISABLE_STEAM_AUDIO.
Реализовано:
- HRTF
- Алгоритмический Reverb (без геометрии)
Основные изменения
1. Динамическая компрессия (Dynamic Range Compression)
Раньше:
- Отсутствовала встроенная система управления динамическим диапазоном
- Звук рендерился в u8 (диапазон от 0 до 256) [1 байт]
Сейчас:
- Добавлена опциональная динамическая компрессия, работающая поверх финального микса
- Обработка выполняется и рендерятся во float (диапазон от 0.0 до 10.0) [4 байта]
- Пользователь может регулировать степень компрессии
Преимущества:
- Улучшение слышимости тихих звуков
- Защита от клиппинга на громких пиках
- Более ровный и стабильный баланс громкости
2. Качество звука и требования к контенту
Раньше:
- OpenAL Soft сглаживал многие артефакты автоматически
Сейчас:
- Требуется ручная подготовка аудиоматериала
- Инструментарий IX-Ray SDK не исправляет дефекты
Требования к .wav:
- Частота: 44100 Гц.
- Чистый старт и конец без шумов.
- По желанию fade-in / fade-out.
- Рекомендуется предварительная обработка (Reaper, Audition, RX).
3. Частота дискретизации
- Звуковая система работает на фиксированной частоте 44100 Гц
- Файлы с другой частотой не поддерживаются
4. Лимиты одновременных звуков
Раньше:
- Лимит 256 слотов
- При переполнении — звуки пропадали
Сейчас:
- Поддерживается до 4096 звуков одновременно
- Позволяет создавать более плотные и насыщенные акустические сцены
5. Система реверберации
EFX (старая система)
- Тип: Preset-Based Auxiliary Reverb
- Модель: Стандартные пресеты OpenAL (комната, туннель, холл)
- Ограничения:
- Ограниченное соответствие реальной акустике
- Минимальная адаптация под уровень
- Все звуки применяли реверберацию, даже находясь за пределами действия зоны
Resonance Audio (новая система)
Тип:
Параметрическая алгоритмическая реверберация (Parametric Algorithmic Reverb)Подход:
- Resonance Audio автоматически вычисляет параметры реверберации (RT60, затухание, частотную характеристику) на основе:
- размеров области
- материалов
- расположения источников и слушателя
- Сами хвосты реверберации генерируются алгоритмически, без свёртки и без FDN
- Ранние отражения имитируются упрощённой геометрической моделью помещения
- Resonance Audio автоматически вычисляет параметры реверберации (RT60, затухание, частотную характеристику) на основе:
Преимущества:
- Контекстно-зависимое звучание
- Автоматическая подстройка под окружающую среду
- Лёгкая интеграция, минимум ручной настройки
- Звуки вне зоны реверберации не применяют на себя семплинг, а играются как есть
Сравнение систем реверберации
| Параметр | EFX (OpenAL) | Resonance Audio |
|---|---|---|
| Тип | Пресетная алгоритмическая | Параметрическая алгоритмическая |
| Ранние отражения | Пресеты | Моделирование геометрией |
| Поздняя реверберация | Алгоритмическая | Алгоритмическая, параметры рассчитываются автоматически |
| Реализм | Средний | Высокий (адаптация под окружение) |
| Адаптивность | Низкая | Высокая |
| Настройка | Ручная | Практически автоматическая |
6. Sound Debug Info
Реализован инструментарий для визуализации информации о звуках на сцене. Отображает:
- Звуковые слоты
- Используемые звуковые файлы
- Реверб зоны на локации
Рекомендации для модмейкеров
1. Подготовка аудио
- Использовать чистые
.wav44100 Гц - Делать fade-in/fade-out для всех файлов
- Убирать щелчки, обрезанные хвосты и шумы
- Проверять финальный результат через игру или
Play In Editorв IX-Ray SDK
2. Учёт динамической компрессии
- Проверять громкость на разных уровнях DRC
- Не злоупотреблять максимальной громкостью
- Балансировать источники вручную
3. Работа с реверберацией (Resonance Audio)
- Назначать правильные материалы поверхностям (это в целом полезная практика для работы в X-Ray SDK)
- Настраивать базовые пресеты в
Shader Editor - Устанавливать пресет в соответствии с ожидаемой интенсивностью для зоны (Для тестов подойдёт
Play In Editorрежим)
Технические примечания
- Для хранения используется кодек Vorbis.
- Конвертация выполняется через инструменты IX-Ray SDK.