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 сейчас есть три уровня работы со звуком:

  1. s_enable 0

Звук полностью выключен.

  1. s_enable 1 = software (DMA)

Классический программный микшер клиента.

Это "традиционный" режим Quake 2: клиент сам микширует PCM-аудио и отдаёт его в системный звуковой драйвер.

  1. 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 легче читать.

Практический совет

Если не знаешь, с чего начать:

  1. попробуй al_profile "Q2PRO-X" на колонках или универсальной настройке;
  2. попробуй al_profile "R1Q2-like" для соревновательного чтения звука;
  3. сравни на одной и той же карте и в одном и том же сценарии, а не "по памяти".

После смены профиля нужен:

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: что это такое

Теория: что такое реверберация

Реверберация — это не "эхо" в грубом бытовом смысле.

Это совокупность множества отражений звука от поверхностей:

  • стен;
  • пола;
  • потолка;
  • предметов;
  • узких проходов;
  • открытых пространств.

Когда звук издаётся в помещении, мы слышим:

  1. прямой звук;
  2. ранние отражения (early reflections);
  3. более длинный "хвост" (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 и современная подача.

Если начинать без лишнего стресса, лучший путь такой:

  1. выбрать backend (DMA или OpenAL);
  2. если OpenAL — решить, нужен ли тебе Q2PRO-X или R1Q2-like;
  3. отдельно решить вопрос HRTF;
  4. отдельно решить, нужна ли room acoustics;
  5. после этого уже полировать громкости оружия и категорий.

Такой порядок даёт самый быстрый путь к осознанной настройке, а не к хаотичному перебору.