Q2PRO-X: подробное руководство по звуку
Просмотр документа на сайте Q2PRO-X. Оригинальный файл можно скачать из окна сайта.
Q2PRO-X 1.2
Q2PRO-X: подробное руководство по звуку
DMA, OpenAL, HRTF, реверберация и практическая настройка
Русское издание
28 апреля 2026
q2pro-x.com
Оглавление
- Зачем нужен этот документ
- 1. Короткая карта: что есть в Q2PRO-X по звуку
- 2. Где всё это находится в меню
- Guided menu
- Classic Q2PRO-X menu
- 3. Базовая модель: как вообще устроен звук в Q2PRO-X
- 3.1 Что такое DMA в контексте Q2PRO-X
- 3.2 Что такое OpenAL в контексте Q2PRO-X
- 4. Самая важная развилка: DMA или OpenAL
- Когда обычно стоит выбрать DMA
- Когда обычно стоит выбрать OpenAL
- 5. s_enable: главный переключатель режима
- Что делает
- Когда применять
- Практический совет
- 6. Общая теория: частота, формат, точность, ресемплинг
- 6.1 Что такое sample rate / output rate
- 6.2 Что такое sample format
- 6.3 Что такое resampler
- 7. Настройки, которые касаются и DMA, и OpenAL
- s_volume
- s_khz
- s_sampleformat
- s_ambient
- s_mute_when_inactive
- ogg_enable
- ogg_volume
- ogg_shuffle
- soundinfo
- snd_restart
- 8. Что доступно только или в первую очередь в DMA
- s_driver
- s_mixahead
- s_swapstereo
- s_resampler
- Когда DMA имеет смысл сейчас
- 9. Что доступно только в OpenAL
- Список ключевых OpenAL-only возможностей
- 10. al_profile: разница между OpenAL Q2PRO-X и R1Q2-like
- Что это вообще такое
Q2PRO-X: подробное руководство по звуку
Зачем нужен этот документ
У Q2PRO-X звуковая подсистема заметно богаче, чем у "обычного Quake 2 клиента", но из-за этого она и сложнее для понимания. Здесь собрана практическая и теоретическая документация по текущему состоянию звука в Q2PRO-X:
- какие вообще есть звуковые режимы;
- чем отличаются DMA и OpenAL;
- какие параметры доступны в каждом режиме;
- какие из них применяются сразу, а какие требуют snd_restart;
- что такое HRTF, бинауральный звук, реверберация, decay, diffusion, crossfeed и остальные параметры;
- чем отличается OpenAL Q2PRO-X от режима R1Q2-like;
- как настроить звук под разные сценарии: колонки, наушники, соревновательная игра, "иммерсивный" режим.
Документ написан как пользовательский справочник, а не как внутренняя developer-note.
1. Короткая карта: что есть в Q2PRO-X по звуку
В Q2PRO-X сейчас есть три уровня работы со звуком:
- s_enable 0
Звук полностью выключен.
- s_enable 1 = software (DMA)
Классический программный микшер клиента.
Это "традиционный" режим Quake 2: клиент сам микширует PCM-аудио и отдаёт его в системный звуковой драйвер.
- s_enable 2 = OpenAL
Современный 3D backend с пространственным позиционированием, HRTF, бинауральным слоем, акустикой помещений, дополнительными профилями, OpenAL-resampler'ом и расширенным набором runtime-настроек.
По умолчанию в текущем Q2PRO-X звуковой backend — `OpenAL`.
2. Где всё это находится в меню
Guided menu
Основной путь:
- Options
- Sound & Acoustics...
Дальше внутри:
- OpenAL & acoustics...
- headphone 3D sound...
- weapon / player volumes...
- voice chat... — это уже голос, а не основной игровой звук, но он тоже зависит от OpenAL
Дополнительно часть связанных вещей есть в:
- Quick Setup...
- Online Play Setup...
Classic Q2PRO-X menu
Основной путь:
- Q2PRO-X
- sound & acoustics
- binaural / 3D
- sound volumes
Также рядом доступна:
- legacy sound setup...
Это важно: часть старых базовых cvar и music-настроек по-прежнему исторически живёт в legacy-странице или в консоли, даже если основные современные настройки уже вынесены на Q2PRO-X-страницы.
3. Базовая модель: как вообще устроен звук в Q2PRO-X
3.1 Что такое DMA в контексте Q2PRO-X
В контексте Q2PRO-X слово DMA не означает "магически лучший старый звук" и не означает "железный 3D".
Здесь это классический путь:
- клиент сам микширует все звуки;
- выбирает формат, частоту, resampler;
- пишет готовый PCM-поток в системный звуковой драйвер.
Плюсы:
- простой и предсказуемый;
- ближе к "классическому" ощущению клиента;
- меньше сложных пространственных и акустических слоёв;
- удобен, если нужен максимально консервативный звук без HRTF и room acoustics.
Минусы:
- нет OpenAL-слоя;
- нет современной акустики помещений;
- нет OpenAL HRTF / binaural режима;
- нет OpenAL-resampler'ов;
- меньше гибкости в пространственной обработке.
3.2 Что такое OpenAL в контексте Q2PRO-X
OpenAL — это отдельный аудио backend/API для пространственного звука.
В Q2PRO-X он используется не только как "другой драйвер", а как полноценный фундамент для:
- пространственного позиционирования источников;
- разных моделей затухания по расстоянию;
- HRTF;
- бинаурального режима для наушников;
- EFX/room acoustics;
- разделения routing'а по типам источников;
- OpenAL-specific resampler'ов.
Плюсы:
- современный пространственный звук;
- полезен для наушников;
- даёт тонкую настройку акустики;
- позволяет сильнее адаптировать звук под соревновательный и immersive-сценарии.
Минусы:
- сложнее;
- при плохой настройке можно сделать звук "слишком обработанным";
- часть параметров требуют snd_restart;
- некоторые вещи зависят от возможностей runtime'а OpenAL Soft.
4. Самая важная развилка: DMA или OpenAL
Когда обычно стоит выбрать DMA
Выбирай DMA, если ты хочешь:
- максимально простой и классический путь;
- минимум дополнительных слоёв обработки;
- звук "как можно ближе к старому клиентскому ощущению";
- не использовать HRTF, бинауральный режим и room acoustics.
Типичный сценарий:
- игра через колонки;
- хочется консервативный звук;
- не нужен современный 3D headphone-слой.
Когда обычно стоит выбрать OpenAL
Выбирай OpenAL, если ты хочешь:
- пространственный звук сильнее контролировать;
- использовать наушники и HRTF;
- включать room acoustics / reverb;
- пользоваться sound profiles;
- использовать бинауральный слой;
- иметь доступ ко всем современным Q2PRO-X sound-функциям.
Типичный сценарий:
- игра в наушниках;
- нужен максимум spatial-информации;
- хочется тонко настраивать acoustic feeling;
- нужен встроенный voice chat Phase 1 — он тоже требует OpenAL для передачи и приёма.
5. s_enable: главный переключатель режима
Что делает
s_enable выбирает backend:
- 0 = no sound
- 1 = software (DMA)
- 2 = OpenAL
Когда применять
Если меняешь s_enable, практически всегда нужно:
- либо нажать restart sound... в меню;
- либо выполнить в консоли:
snd_restart
Практический совет
Если ты не уверен, с чего начать:
- начни с OpenAL, если играешь в наушниках;
- начни с DMA, если хочешь максимально простой и классический звук.
6. Общая теория: частота, формат, точность, ресемплинг
Перед конкретными cvar полезно понимать базовые аудиотермины.
6.1 Что такое sample rate / output rate
Это частота дискретизации аудиопотока — сколько "снимков" аудиосигнала в секунду выводится на устройство.
Примеры:
- 11 kHz
- 22 kHz
- 44 kHz
- 48 kHz
- 96 kHz
Чем выше частота:
- тем выше потенциальная точность передачи высоких частот;
- тем больше объём вычислений и трафика внутри backend'а;
- тем выше требования к железу и runtime-пути.
В Q2PRO-X это cvar:
- s_khz
Важно:
- s_khz — это запрашиваемая частота;
- фактическая частота может отличаться;
- проверять реальный результат нужно через:
soundinfo
6.2 Что такое sample format
Это формат представления одного аудиосэмпла.
В текущем Q2PRO-X важны:
- auto
- s16
- float32
s16
Классический 16-битный PCM.
Плюсы:
- максимально совместим;
- привычный и лёгкий;
- обычно достаточно для Quake 2.
Минусы:
- меньше headroom;
- ниже внутренняя точность при сложной обработке.
float32
32-битный floating-point формат.
Плюсы:
- больше внутренний запас по уровню (headroom);
- меньше риск грубого накопления ошибок при сложной обработке;
- полезен, если есть несколько слоёв обработки и хочется более аккуратный runtime-путь.
Минусы:
- зависит от поддержки backend'а/runtime'а;
- если runtime не умеет float32, будет fallback.
Это cvar:
- s_sampleformat
После изменения нужен:
snd_restart
6.3 Что такое resampler
Ресемплер — это алгоритм, который пересчитывает звук из одной частоты/формы представления в другую.
Это нужно, когда:
- исходный WAV/звук хранится в одной частоте;
- backend/устройство работает в другой;
- клиент должен конвертировать звук без грубых артефактов.
Плохой resampler может дать:
- зернистость;
- "ступеньки";
- грязноватый верх;
- менее приятный transient response.
Более качественный resampler может дать:
- более гладкий результат;
- менее грубые артефакты;
- более "чистый" звук.
Но:
- он может стоить больше CPU;
- на практике разница сильнее заметна на некоторых типах звуков, а не на всех.
7. Настройки, которые касаются и DMA, и OpenAL
Ниже — общие параметры, которые полезно знать независимо от backend'а.
s_volume
Главная master-громкость игры.
Текущее базовое значение в коде:
- 0.7
Это общий уровень звука, поверх которого уже работают более узкие громкости категорий.
s_khz
Запрашиваемая частота вывода.
Обычно доступны:
- 11
- 22
- 44
- 48
- 96
Практически:
- 44 или 48 — базовый разумный выбор;
- 96 — уже скорее опция "хочу максимально высокую частоту и понимаю, что делаю".
s_sampleformat
Предпочтительный формат:
- auto
- s16
- float32
Хороший практический выбор:
- auto, если не хочется думать;
- float32, если используешь OpenAL и хочешь современный высокоточный вывод.
s_ambient
Управляет ambient-звуками.
Значения:
- 0 = нет
- 1 = да
- 2 = только звуки самого игрока
Это полезно, если хочется снизить "шум карты", но не убить полностью полезные звуки.
s_mute_when_inactive
Если окно игры не в фокусе (Alt+Tab, клик в другое окно), движок заглушается.
Значения:
- 0 = не глушить
- 1 = глушить
Практически это очень полезная QoL-настройка.
ogg_enable
Включает фоновую музыку OGG.
ogg_volume
Громкость музыки относительно общей громкости.
ogg_shuffle
Случайный порядок музыки.
Эти cvar не меняют боевой positional audio, но влияют на общую звуковую среду.
soundinfo
Очень полезная диагностическая команда.
Используй её, чтобы увидеть:
- какой backend реально активен;
- какую частоту и формат реально открыло устройство;
- что в итоге получилось после auto/fallback.
snd_restart
Главная команда "перезапустить sound backend".
Она нужна после большинства крупных sound-переключений:
- engine backend;
- output format;
- HRTF-режимов;
- OpenAL profile;
- части binaural-настроек.
8. Что доступно только или в первую очередь в DMA
s_driver
Это выбор DMA-драйвера.
На Windows обычно встречаются:
- dsound = DirectSound
- wave = Windows waveform audio
- sdl = SDL2 audio
Если cvar пустой, идёт автоопределение.
Практический смысл:
- чаще всего это трогают только если есть проблемы с совместимостью;
- обычному игроку обычно достаточно auto.
s_mixahead
Это размер упреждения микширования.
По-человечески:
- насколько заранее движок готовит кусок звука вперёд.
Если значение меньше:
- потенциально ниже задержка;
- но выше риск дёрганий, пропусков, crackle на слабой системе.
Если значение больше:
- стабильнее;
- но выше ощущаемая задержка.
Практический диапазон:
- примерно 0.05 .. 0.3
Это особенно характерный DMA-параметр.
s_swapstereo
Меняет местами левый и правый каналы.
Работает только в DMA.
Нужен крайне редко:
- если у пользователя реально перепутаны каналы на уровне схемы/железа/виртуального устройства.
s_resampler
Это DMA-resampler.
Значения:
- legacy
- linear
- cubic
Что они означают
legacy
Старый, самый простой путь.
Плюсы:
- максимально "как раньше";
- минимальный риск неожиданного изменения характера звука.
Минусы:
- обычно худшее качество пересчёта.
linear
Линейная интерполяция.
Компромисс:
- лучше, чем legacy;
- не слишком дорогая;
- часто разумный середняк.
cubic
Кубическая интерполяция.
Обычно:
- самый "гладкий" из DMA-вариантов;
- лучше на более высоких частотах и при чувствительности к артефактам;
- может стоить чуть больше вычислений.
Когда DMA имеет смысл сейчас
DMA логичен, если ты хочешь:
- максимально классический режим;
- без HRTF;
- без room acoustics;
- без OpenAL-specific voicing;
- с ручным контролем через s_mixahead, s_driver, s_resampler.
9. Что доступно только в OpenAL
Всё ниже — это уже главный reason выбрать OpenAL.
Список ключевых OpenAL-only возможностей
- al_profile
- al_sound_profile
- al_hrtf
- al_resampler
- al_reverb / al_eax
- вся семья al_reverb_*
- вся семья al_eax_*
- вся семья al_binaural_*
- al_resampler_list
- al_reverb_info
- al_reverb_reload
- al_binaural_info
10. al_profile: разница между OpenAL Q2PRO-X и R1Q2-like
Это одна из важнейших настроек всего sound-стека.
Что это вообще такое
al_profile — это не "громкость" и не "качество", а поведенческий профиль OpenAL-звука.
Сейчас он имеет два основных режима:
- 0 = Q2PRO-X
- 1 = R1Q2-like
Теория: почему профили вообще отличаются
Даже если оба режима используют OpenAL, они могут отличаться по:
- модели затухания по расстоянию;
- работе world loops;
- ощущению "пространственной уверенности" источников;
- общей подаче звука.
То есть это не "один и тот же OpenAL, только другой флажок".
Это два разных voicing-подхода поверх OpenAL backend'а.
Q2PRO-X profile
Основная идея:
- современный Q2PRO-X-путь;
- linear-distance voicing;
- richer room-acoustics stack;
- лучше стыкуется с современной Q2PRO-X акустикой, routing'ом и профилями.
Под капотом это ближе к:
- AL_LINEAR_DISTANCE_CLAMPED
Практически:
- удобен, если хочешь пользоваться room acoustics;
- хорошо сочетается с al_sound_profile;
- ощущается как "текущая современная подача Q2PRO-X".
R1Q2-like profile
Основная идея:
- приблизить OpenAL-звучание к классической школе R1Q2.
Под капотом это ближе к:
- AL_INVERSE_DISTANCE_CLAMPED
Практически это даёт более "классическое" ощущение затухания:
- звук по расстоянию ведёт себя иначе;
- world loops и spatial presentation ближе к старому стилю;
- многим игрокам именно такой вариант кажется более "читабельным" или "привычным".
Что выбрать
Выбирай Q2PRO-X, если:
- хочешь современный базовый профиль;
- собираешься включать room acoustics;
- хочешь пользоваться curated sound profiles;
- не стремишься именно к "как в R1Q2".
Выбирай R1Q2-like, если:
- тебе важен классический характер OpenAL-подачи;
- ты исторически привык к R1Q2;
- тебе именно этот voicing легче читать.
Практический совет
Если не знаешь, с чего начать:
- попробуй al_profile "Q2PRO-X" на колонках или универсальной настройке;
- попробуй al_profile "R1Q2-like" для соревновательного чтения звука;
- сравни на одной и той же карте и в одном и том же сценарии, а не "по памяти".
После смены профиля нужен:
snd_restart
11. al_sound_profile: готовые акустические профили
Что это такое
al_sound_profile — это high-level пресет.
Он нужен, чтобы не крутить вручную весь лес параметров реверберации и routing'а.
Вместо десятка ручек ты выбираешь общую "характерную подачу".
Текущие значения:
- custom
- competitive
- balanced
- immersive
- cinematic
- cathedral
Важная логика
Эти профили не управляют всем подряд.
Они в основном управляют акустическим слоем:
- al_reverb
- al_eax_preset
- al_reverb_lerp_time
- al_eax_wet
- al_eax_local_wet
- al_eax_occlusion
- explosion/transport wetness
- tuning-параметрами reverb
И при этом не должны переопределять:
- al_hrtf
- al_profile
- al_resampler
- s_resampler
- s_enable
- s_khz
- s_sampleformat
То есть sound profile — это акустический пресет, а не "смена всего звукового мира".
Как выбирать по смыслу
competitive
Минимум лишнего ambience-feeling, максимум сухой читаемости.
Подходит для:
- PvP;
- когда важна полезная информация, а не "красота пространства".
balanced
Компромиссный режим.
Подходит для:
- большинства игроков;
- если не хочешь ни слишком сухо, ни слишком "кинематографично".
immersive
Сильнее подчёркивает ощущение пространства.
Подходит для:
- спокойной игры;
- карт, где хочется почувствовать среду.
cinematic
Ещё больше акцента на эффектность.
cathedral
Специально сильно выраженный, почти демонстрационный режим.
Подходит не для "честной соревновательной читаемости", а для ощущения масштабности.
custom
Режим, в который система возвращается, если ты начинаешь крутить параметры вручную.
12. HRTF: что это такое и как это работает
Теория: что такое HRTF
HRTF = Head-Related Transfer Function.
По-простому:
- это модель того, как звук меняется из-за формы головы, ушей и тела человека, прежде чем попасть в левое и правое ухо.
В реальной жизни звук спереди, сзади, сверху, снизу и сбоку попадает в уши не одинаково:
- меняется задержка между ушами;
- меняется спектр;
- одни частоты частично ослабляются;
- другие усиливаются.
Именно из-за этого мозг умеет понимать направление.
Что даёт HRTF в игре
Если ты играешь в наушниках:
- HRTF может сильнее отделить левое/правое;
- улучшить ощущение фронт/тыл;
- сделать сцену менее "плоской";
- повысить пространственную разборчивость.
Когда HRTF особенно полезен
- в наушниках;
- при хорошем positioning;
- если играешь на соревновательный слух.
Когда HRTF может не понравиться
- на колонках;
- если конкретная HRTF-модель звучит для твоих ушей "неестественно";
- если тебе нравится максимально сухой и привычный стереообраз.
Cvar
- al_hrtf
Значения:
- off
- auto
- on
Практически:
- off — принудительно выключить;
- auto — пусть runtime сам решает;
- on — принудительно включить.
Обычно после изменения:
snd_restart
Базовый совет
- колонки: чаще всего al_hrtf off
- наушники: чаще всего al_hrtf on или auto
13. Бинауральный звук: что это такое и чем он отличается от просто HRTF
Теория: что такое бинауральный звук
Бинауральный звук — это способ подготовить аудио так, чтобы в двух каналах (левый и правый наушник) возникало убедительное ощущение 3D-пространства.
Главная идея:
- у тебя физически только два канала;
- но за счёт правильной обработки мозг получает подсказки о направлении, глубине и иногда даже о высоте источника.
Важное различие
HRTF — это один из механизмов, из которых строится бинауральный результат.
То есть:
- не всякий "3D headphone mode" = просто один флажок HRTF;
- бинауральный слой может включать ещё и:
- режим stereo-encoding;
- crossfeed;
- качество HRTF-процессинга;
- filter size;
- app-local OpenAL Soft tuning.
Как это реализовано в Q2PRO-X
В Q2PRO-X бинауральный режим — это не отдельный самописный DSP-движок, а тонкий control-layer поверх OpenAL Soft.
То есть:
- OpenAL остаётся фундаментом;
- бинауральный слой — это продвинутая настройка headphone-oriented rendering.
Основные cvar
- al_binaural
- al_binaural_profile
- al_binaural_encoding
- al_binaural_hrtf_mode
- al_binaural_hrtf_size
- al_binaural_crossfeed
al_binaural
Главный переключатель.
Значения:
- 0 = off
- 1 = auto
- 2 = on
al_binaural_profile
Готовые пресеты:
- custom
- default
- auto
- deep
- cinematic
Эти пресеты управляют именно binaural-слоем, а не room acoustics.
al_binaural_encoding
Режим stereo-encoding.
Варианты:
- auto
- basic
- hrtf
- uhj
Что это значит по смыслу
basic
Самый базовый стереорежим.
hrtf
Явно ориентированный на HRTF-базированный headphone rendering режим.
uhj
Специфический способ двухканальной передачи пространственной информации, исторически связанный с Ambisonics/B-format-подходами.
Для обычного пользователя это не "обязательный лучший режим", а продвинутая опция для экспериментов.
После смены encoding нужен:
snd_restart
al_binaural_hrtf_mode
Качество/режим обработки HRTF.
Варианты:
- default
- full
- ambi1
- ambi2
- ambi3
Это уже advanced-тюнинг.
al_binaural_hrtf_size
Размер HRTF-фильтра.
Варианты:
- 0 = runtime default
- 32
- 64
Теория:
- больший фильтр может дать более сложную и "богатую" обработку;
- но это не всегда автоматически "лучше";
- иногда важнее естественность, а не максимальная сложность.
al_binaural_crossfeed
Теория: что такое crossfeed
При прослушивании через колонки левое ухо частично слышит и правую колонку, а правое — левую.
В наушниках этого естественного "перекрёстного подмешивания" нет: каналы слишком жёстко разделены.
Crossfeed — это управляемое частичное подмешивание каналов, чтобы:
- уменьшить неестественную "разорванность" по краям;
- сделать сцену более естественной;
- уменьшить утомляемость на некоторых наушниках.
Возможные значения:
- 0 .. 6
Где:
- 0 = выкл
- выше = больше crossfeed
Практически:
- если сцена кажется слишком "распиленной" на L/R — можно добавить немного crossfeed;
- если нужна максимальная жёсткая directional separation — держать низко или выключить.
14. Реверберация / room acoustics: что это такое
Теория: что такое реверберация
Реверберация — это не "эхо" в грубом бытовом смысле.
Это совокупность множества отражений звука от поверхностей:
- стен;
- пола;
- потолка;
- предметов;
- узких проходов;
- открытых пространств.
Когда звук издаётся в помещении, мы слышим:
- прямой звук;
- ранние отражения (early reflections);
- более длинный "хвост" (late reverb tail).
Именно это вместе и создаёт ощущение:
- маленькой комнаты;
- коридора;
- зала;
- улицы;
- пещеры;
- воды;
- глухой мягкой среды.
Что делает room acoustics в Q2PRO-X
Q2PRO-X не просто включает "какой-то reverb", а строит отдельный слой акустики на базе OpenAL EFX:
- выбирает room class;
- умеет интерполировать между пресетами;
- различает world/local/explosion/transport routing;
- может применять underwater logic;
- умеет diagnostic info через команды.
Главный cvar:
- al_reverb
Исторический alias:
- al_eax
Сейчас canonical-путь — именно al_reverb, а al_eax сохраняется как совместимость со старыми конфигами.
15. Параметры реверберации: подробно по каждому
Ниже — самая важная часть для ручной настройки.
al_reverb
Включает room acoustics / EFX reverb.
Если 0:
- room acoustics нет.
Если 1:
- room acoustics активна;
- дальше начинают работать пресеты и tuning-параметры.
al_eax_preset
Выбор room class.
Значения:
- -1 = auto
- 0 = generic
- 1 = small
- 2 = medium
- 3 = hall
- 4 = corridor
- 5 = outdoor
- 6 = underwater
Что значит auto
Клиент сам классифицирует среду и подбирает пресет.
Что значит manual
Ты принудительно говоришь системе:
- "веди себя как small room"
- или "как hall"
- и т.д.
Это полезно:
- для тестов;
- для сравнения;
- если хочется заведомо фиксированную подачу.
al_reverb_lerp_time
Теория: что такое lerp между пресетами
Если ты переходишь из одной зоны карты в другую, резкая смена акустики может звучать грубо и искусственно.
Поэтому вместо мгновенного переключения параметры можно плавно смешивать.
al_reverb_lerp_time — это время такого плавного перехода.
Меньше:
- быстрее реакция;
- но больше шанс услышать "прыжок".
Больше:
- мягче переход;
- но акустика медленнее догоняет ситуацию.
al_eax_wet
Теория: что такое wet
Wet = уровень обработанного сигнала.
Противоположность — dry, то есть прямой, необработанный звук.
Если wet больше:
- реверберация слышнее;
- среда сильнее влияет на звук.
Если wet меньше:
- звук суше;
- пространство менее выражено.
al_eax_wet — общий reverb send для мировых источников.
al_eax_local_wet
Это wet для локальных first-person звуков.
Почему это вынесено отдельно:
- собственные звуки игрока не всегда стоит так же сильно "окунать" в реверберацию, как мир;
- иначе первый план может стать мыльным и менее читаемым.
Обычно local wet держат ниже, чем world wet.
al_eax_transport_wet
Это wet для:
- movers;
- hums;
- looping world sounds;
- транспортных/зацикленных emitters.
Идея:
- некоторые длительные looping-звуки хочется чуть иначе вписать в пространство, чем короткие одномоментные эффекты.
al_eax_explosion_wet
Wet для взрывов.
Смысл:
- взрывы — отдельный класс звуков;
- для них часто хочется больше пространства и хвоста, чем для обычных эффектов.
al_eax_explosion_decay
Теория: что такое decay
Decay — это длительность затухания хвоста реверберации.
То есть сколько времени после исходного звука продолжается умирающий reverb-tail.
Если decay больше:
- хвост длиннее;
- звук кажется крупнее, просторнее, эпичнее.
Если decay меньше:
- помещение кажется суше;
- звук "быстрее заканчивается".
al_eax_explosion_decay — отдельный множитель длины хвоста именно для взрывов.
al_eax_explosion_late
Отдельный множитель силы late-tail у взрывов.
То есть:
- не просто длина;
- а именно "вес" позднего хвоста.
al_eax_occlusion
Теория: что такое occlusion
Если источник физически загорожен стеной, дверью или объектом, прямой звук до слушателя доходит хуже.
В реальности это означает:
- меньше высоких частот;
- более глухой direct path;
- но отражения и room tail могут всё ещё быть слышны.
al_eax_occlusion именно это и моделирует:
- direct path приглушается;
- хвост помещения может сохраняться.
al_reverb_reflections
Теория: что такое early reflections
Early reflections — первые отражения после прямого сигнала.
Они дают мозгу сильную подсказку о размере и близости поверхности.
Если reflections выше:
- пространство кажется более очерченным;
- сильнее слышится "первый отскок".
al_reverb_late
Теория: что такое late reverb
Это поздний, более диффузный хвост реверберации, когда отдельные отражения уже не различаются, а складываются в общий "облакообразный" tail.
Если late выше:
- хвост звучит массивнее;
- пространство кажется более крупным.
al_reverb_decay
Общий множитель decay time.
Если поднять:
- room tail станет длиннее.
Если опустить:
- room tail станет короче.
al_reverb_delay
Теория: что такое delay в контексте реверберации
Это не "delay pedal" в музыкальном смысле, а масштаб задержки отражений и позднего хвоста относительно прямого сигнала.
Если delay больше:
- отражения позже "отлипают" от прямого звука;
- пространство может казаться крупнее.
Если delay меньше:
- отражения подлетают быстрее;
- среда кажется теснее и компактнее.
al_reverb_hf
Теория: что такое HF brightness
HF = high frequency.
Этот параметр регулирует, насколько высокочастотная часть реверберации сохраняется или гасится.
Если значение выше:
- reverb brighter;
- хвост кажется более "стеклянным", "звонким", ярким.
Если ниже:
- хвост темнее и мягче;
- ощущение более глухих поверхностей.
al_reverb_diffusion
Теория: что такое diffusion
Diffusion — это "плотность" и "гладкость" реверберационного поля.
Если diffusion выше:
- хвост более гладкий;
- меньше ощущение отдельных повторов;
- пространство кажется более "заполненным".
Если diffusion ниже:
- хвост более зернистый, разреженный;
- сильнее слышатся отдельные компоненты отражений.
al_eax_debug
Диагностический режим.
Полезен для тонкой отладки:
- какой room preset выбран;
- как классифицировалась среда;
- как routing сейчас собран.
16. Команды для OpenAL / reverb / binaural
al_reverb_info
Печатает:
- текущий room class;
- classifier data;
- routing mode;
- wet-state;
- часть диагностических параметров среды.
Очень полезно, когда ты реально настраиваешь room acoustics, а не "крутишь ручки вслепую".
al_reverb_reload
Принудительно пересобирает и snap'ает текущий reverb preset.
Полезно:
- после ряда ручных изменений;
- для проверки нового состояния немедленно.
al_binaural_info
Печатает:
- requested vs actual binaural runtime state;
- что реально включилось;
- какие значения runtime принял.
al_resampler_list
Печатает список доступных OpenAL-resampler'ов, которые реально предоставляет runtime.
Это важно, потому что OpenAL путь может поддерживать разные варианты:
- default
- point
- linear
- cubic
- bsinc12
- bsinc24
Но конкретный runtime надо проверять фактически.
17. al_resampler: OpenAL-resampler
Это OpenAL-specific выбор resampler'а.
Типичные значения:
- default
- point
- linear
- cubic
- bsinc12
- bsinc24
Что значат эти режимы по смыслу
point
Самый грубый, самый простой.
Можно представить как:
- "почти без настоящей гладкой интерполяции".
Практически — скорее режим для эксперимента, чем лучший everyday choice.
linear
Простой компромисс.
cubic
Более качественный и гладкий вариант.
bsinc12 / bsinc24
Более сложные sinc-подобные варианты.
Обычно:
- чище;
- аккуратнее;
- потенциально тяжелее;
- интересны, если ты реально вслушиваешься и хочешь максимум качества из runtime.
Практический выбор
Если не хочется заморачиваться:
- default
Если хочется качественный, но не экзотический вариант:
- cubic
Если хочется пробовать лучший quality path OpenAL Soft:
- bsinc12 или bsinc24
После изменения:
snd_restart
18. Персональные громкости оружия и категорий
Это одна из самых полезных реальных QoL-функций Q2PRO-X.
Как устроена шкала
В меню используется шкала:
- 50 = значение по умолчанию
- 0 = полностью выключить
- 100 = примерно 2x относительно дефолта
То есть это не "проценты от нуля до ста" в бытовом смысле, а пользовательская шкала громкости относительно базового уровня.
Громкости оружия
Есть отдельные cvar для:
- s_weapon_blaster_volume
- s_weapon_shotgun_volume
- s_weapon_supershotgun_volume
- s_weapon_machinegun_volume
- s_weapon_chaingun_volume
- s_weapon_handgrenade_volume
- s_weapon_grenadelauncher_volume
- s_weapon_rocketlauncher_volume
- s_weapon_hyperblaster_volume
- s_weapon_railgun_volume
- s_weapon_bfg_volume
Это позволяет:
- приглушить оружие, которое лично тебе кажется слишком навязчивым;
- поднять weapon class, который хочется лучше читать;
- настроить собственный sound mix без общего сноса всего звука.
Громкости категорий
Есть отдельные cvar:
- s_player_volume — движение игрока: прыжки, падения, landing, steps
- s_voice_volume — боль, смерть, taunts, drown и прочие голосовые/болезненные player-sounds
- s_pickup_volume — pickups
- s_environment_volume — doors, glass, platforms, debris и прочие world-actions
- s_monster_volume — enemy/monster sounds
- s_announcer_volume — announcer / computer updated / secrets
- s_interface_volume — menu / UI sounds
- s_other_volume — всё остальное, что не попало в более узкие классы
- s_ambient_volume — ambient/world loops: hums, movers, teleports
Практические примеры
Для соревновательной игры
Часто имеет смысл:
- чуть приглушить свои самые громкие оружия;
- оставить или поднять enemy/player-relevant классы;
- не раздувать ambient loops.
Для "киношного" звука
Можно:
- поднять environment/ambient;
- оставить оружие побогаче;
- включить reverb.
19. Что требует snd_restart, а что меняется сразу
Это очень важный practical section.
Обычно требуют snd_restart
- s_enable
- s_khz
- s_sampleformat
- al_profile
- al_resampler
- al_reverb
- al_hrtf
- al_binaural
- al_binaural_encoding
- al_binaural_hrtf_mode
- al_binaural_hrtf_size
- al_binaural_crossfeed
Обычно применяются live
- al_eax_wet
- al_eax_local_wet
- al_eax_occlusion
- al_eax_explosion_wet
- al_eax_explosion_decay
- al_eax_explosion_late
- al_eax_transport_wet
- al_reverb_reflections
- al_reverb_late
- al_reverb_decay
- al_reverb_delay
- al_reverb_hf
- al_reverb_diffusion
- per-weapon volume cvar
- per-category volume cvar
- s_mute_when_inactive
Практическое правило
Если ты меняешь:
- backend,
- формат,
- HRTF/binaural engine settings,
- OpenAL profile,
сразу думай:
snd_restart
Если крутишь:
- wet,
- decay,
- reflections,
- category volumes,
скорее всего изменение уже live.
20. Текущие важные дефолты
Ниже — не все звуковые cvar проекта, а именно те, которые чаще всего имеют значение при реальной настройке.
Базовые sound defaults
| Cvar | Текущее значение по умолчанию | Что это значит |
|---|---:|---|
| s_enable | 2 | По умолчанию стартует OpenAL |
| s_khz | 44 | Базовый запрос на 44 kHz |
| s_sampleformat | auto | Формат выбирается автоматически |
| s_resampler | legacy | DMA-resampler по умолчанию классический |
| s_volume | 0.7 | Master volume по коду |
| s_ambient | 1 | Ambient-звуки включены |
| s_underwater | 1 | Underwater-обработка включена |
| s_underwater_gain_hf | 0.25 | Под водой верх сильно приглушён |
| s_mute_when_inactive | 0 | По умолчанию игра не глушится при потере фокуса |
| ogg_enable | 1 | OGG-музыка разрешена |
| ogg_volume | 1 | Музыка играет на полном относительном уровне |
| ogg_shuffle | 0 | Случайный порядок выключен |
OpenAL defaults
| Cvar | Текущее значение по умолчанию | Что это значит |
|---|---:|---|
| al_profile | 0 | Базовый OpenAL-профиль = Q2PRO-X |
| al_reverb | 0 | Room acoustics выключена по умолчанию |
| al_reverb_lerp_time | 2.0 | Переход между room presets сглаживается за 2 секунды |
| al_eax_preset | -1 | Автоклассификация помещения |
| al_eax_wet | 0.80 | Довольно выраженный мировой reverb-send |
| al_eax_local_wet | 0.08 | Локальные звуки по умолчанию суше |
| al_eax_occlusion | 1 | Occlusion включён |
| al_reverb_reflections | 1.0 | Early reflections без дополнительного усиления |
| al_reverb_late | 1.0 | Late tail без дополнительного усиления |
| al_reverb_decay | 1.0 | Базовая длина decay |
| al_reverb_delay | 1.0 | Базовая задержка reverb-поля |
| al_reverb_hf | 1.0 | Базовая яркость HF |
| al_reverb_diffusion | 1.0 | Базовая diffusion/гладкость |
| al_resampler | default | OpenAL runtime сам выбирает ресемплер |
| al_sound_profile | 0 (custom) | По умолчанию нет навязанного curated-профиля |
Binaural defaults
| Cvar | Текущее значение по умолчанию | Что это значит |
|---|---:|---|
| al_binaural | 0 | Бинауральный режим по умолчанию выключен |
| al_binaural_profile | 0 (custom) | Нет заранее выбранного headphone-профиля |
| al_binaural_encoding | 0 (auto) | Encoding выбирается автоматически |
| al_binaural_hrtf_mode | 0 (default) | Режим HRTF по умолчанию доверен runtime'у |
| al_binaural_hrtf_size | 0 | Размер фильтра = runtime default |
| al_binaural_crossfeed | 0 | Crossfeed выключен |
Per-weapon / per-category defaults
Все weapon/category volume cvar стартуют с:
- 50
Это означает:
- базовый, нейтральный уровень;
- не "50% тишины", а именно нормальное штатное значение для шкалы Q2PRO-X.
21. Рекомендуемые стартовые конфигурации
Вариант 1: колонки, простой и чистый звук
set s_enable 1 set s_khz 48 set s_sampleformat auto set s_resampler linear snd_restart
Смысл:
- DMA;
- без HRTF и room acoustics;
- простой predictable path.
Вариант 2: универсальный OpenAL на колонках
set s_enable 2 set al_profile 0 set al_hrtf 0 set al_reverb 1 set al_sound_profile balanced set al_resampler cubic snd_restart
Смысл:
- современный OpenAL;
- без headphone-HRTF;
- умеренная акустика.
Вариант 3: наушники, соревновательный OpenAL
set s_enable 2 set al_profile 1 set al_hrtf 2 set al_reverb 0 set al_binaural 2 set al_binaural_profile default snd_restart
Смысл:
- классический R1Q2-like spatial feel;
- HRTF включён;
- минимум лишней room-обработки.
Вариант 4: наушники, пространственный modern Q2PRO-X
set s_enable 2 set al_profile 0 set al_hrtf 2 set al_reverb 1 set al_sound_profile balanced set al_binaural 2 set al_binaural_profile deep snd_restart
Смысл:
- более современный OpenAL-профиль;
- room acoustics;
- binaural layer;
- хорошая база для наушников.
22. Когда крутить что именно
Проблема: "слишком сухо"
Попробуй:
- al_reverb 1
- al_sound_profile balanced или immersive
- немного поднять al_eax_wet
Проблема: "слишком замылено / слишком много хвоста"
Попробуй:
- уменьшить al_eax_wet
- уменьшить al_reverb_late
- уменьшить al_reverb_decay
- перейти на competitive
- либо вообще временно выключить al_reverb
Проблема: "в наушниках плохо понимаю, где источник"
Попробуй:
- al_hrtf on
- al_binaural on
- al_binaural_profile default или auto
- если сцена слишком резкая — чуть-чуть добавить al_binaural_crossfeed
Проблема: "мои собственные звуки слишком гремят в помещении"
Попробуй:
- уменьшить al_eax_local_wet
Проблема: "взрывы недостаточно ощущаются"
Попробуй:
- поднять al_eax_explosion_wet
- немного поднять al_eax_explosion_decay
- немного поднять al_eax_explosion_late
Проблема: "слишком громкие movers / loops / hum"
Попробуй:
- уменьшить s_ambient_volume
- уменьшить al_eax_transport_wet
23. Матрица доступности: что работает где
| Функция / параметр | DMA | OpenAL |
|---|---:|---:|
| s_driver | да | нет |
| s_mixahead | да | нет как основной DMA-параметр |
| s_swapstereo | да | нет |
| s_resampler | да | нет |
| al_profile | нет | да |
| al_hrtf | нет | да |
| al_binaural* | нет | да |
| al_reverb* / al_eax* | нет | да |
| al_resampler | нет | да |
| al_resampler_list | нет | да |
| al_reverb_info | нет | да |
| al_binaural_info | нет | да |
| per-weapon volumes | да | да |
| per-category volumes | да | да |
| ogg_* music controls | да | да |
| s_mute_when_inactive | да | да |
24. Связь со встроенным голосовым чатом
Это не основной предмет документа, но важно помнить:
- текущий встроенный voice chat Q2PRO-X в первой фазе требует OpenAL и для передачи, и для приёма;
- если s_enable не в режиме OpenAL, голосовая часть Phase 1 не будет полноценной.
То есть если ты планируешь пользоваться и игровым звуком, и встроенным voice:
- OpenAL — практически обязательная база.
25. Самая короткая практическая памятка
Если нужно совсем коротко:
- хочешь просто и классически — пробуй DMA
- хочешь современный spatial звук — используй OpenAL
- играешь в наушниках — обязательно пробуй al_hrtf
- хочешь красивую среду — включай al_reverb
- хочешь быстро и без ручного тюнинга — используй al_sound_profile
- хочешь тонко балансировать матч — используй weapon / player volumes
- если меняешь engine/profile/HRTF/binaural/output format — делай snd_restart
- если не понимаешь, что реально открылось — смотри soundinfo
26. Заключение
Главная мысль такая:
Q2PRO-X сейчас умеет два разных звуковых мира:
- консервативный и более классический (DMA, либо OpenAL R1Q2-like);
- современный, пространственный и акустически богатый (OpenAL Q2PRO-X с HRTF / binaural / reverb).
Правильная настройка зависит не от "какой режим объективно лучший", а от того:
- колонки у тебя или наушники;
- нужен ли тебе максимально сухой боевой звук;
- или тебе важнее пространство, depth и современная подача.
Если начинать без лишнего стресса, лучший путь такой:
- выбрать backend (DMA или OpenAL);
- если OpenAL — решить, нужен ли тебе Q2PRO-X или R1Q2-like;
- отдельно решить вопрос HRTF;
- отдельно решить, нужна ли room acoustics;
- после этого уже полировать громкости оружия и категорий.
Такой порядок даёт самый быстрый путь к осознанной настройке, а не к хаотичному перебору.