Q2PRO-X

Q2PRO-X 1.6 Beta 5 by ly — Q2PRO-X 1.6 Beta 5 Voice Chat Guide

The complete guide in HTML. The original DOCX is available from its documentation card.

Q2PRO-X 1.6 Beta 5 by ly

Q2PRO-X 1.6 Beta 5 Voice Chat Guide

Q2PRO-X document image

Project author: ly

Microphone, channels, volumes and server compatibility

English edition • Q2PRO-X 1.6 Beta 5 by ly • 2026-10-10


Contents

The entries are links: click one to jump to that section.

Q2PRO-X voice chat

1. What voice chat does

2. Where to find the menu

3. Requirements

4. Main cvars

5. Commands

6. Room mode

Server mode

Manual mode

7. Push-to-talk and VAD

8. Gain and volume

9. Microphone

10. Hosted control server

11. Autojoin

12. Troubleshooting

The menu is enabled, but voice does not work

Others cannot hear me

I cannot hear others

Voice distracts from the game

13. Good baseline

14. The complete setting list

15. Leaving the room cleanly

16. Runtime files


Q2PRO-X voice chat

Q2PRO-X includes built-in voice chat. It is a separate voice side-channel inside the client: it does not change the Quake II game protocol and does not replace the ordinary text chat.


1. What voice chat does

Voice chat lets players join a voice room and talk through the microphone from

inside the client.

Main user model:

vc_enable 1 enables the feature;
vc_autojoin 1 joins a voice room when entering a game server;
vc_room_mode server derives the room from the current game server;
vc_room_mode manual uses vc_room_name;
vc_server points to the control-plane service that prepares room access.

Default hosted control server:

https://voice-api.q2pro-x.com


2. Where to find the menu

Menu path: Main menu → Quick Setup → Q2PRO-X / Voice Chat

The page in full:

Q2PRO-X / Voice Chat

TypeSectionRowVariable or targetWhat it does
SectionRoomRoom
ToggleRoomVoice chat enabledvc_enableMaster switch for voice chat (OpenAL required to transmit and receive). Applies immediately.
ToggleRoomAutojoin on connectvc_autojoinAuto-join the voice room when you connect to a game server. Applies immediately.
ListRoomRoom modevc_room_modeRoom choice: one room per game server, or a manual named room. Applies immediately. [server / manual]
FieldRoomManual room namevc_room_nameRoom name used when Room mode is Manual.
FieldRoomControl servervc_serverURL of the voice control server.
SectionMicrophone & audioMicrophone & audio
ToggleMicrophone & audioMicrophone enabledvc_mic_enableAllow microphone capture (requires the OpenAL sound engine). Applies immediately.
NavigationMicrophone & audioMic device...q2prox_voice_mic_pickPick the capture device; (default) follows the Windows default mic.
ListMicrophone & audioTransmit modevc_ptt_modeTransmit mode: voice activation (VAD) or push-to-talk. Applies immediately. [voice activation / push-to-talk]
SliderMicrophone & audioVAD thresholdvc_vad_thresholdVoice-activation trigger level; lower = more sensitive. Applies immediately.
SliderMicrophone & audioMic gainvc_input_gainMicrophone gain; 1.0 = unchanged, up to 10x. Applies immediately.
SliderMicrophone & audioReceive volumevc_receive_volumeIncoming voice volume, separate from s_volume; up to 10x (needs OpenAL). Applies immediately.
ToggleMicrophone & audioDeafenvc_deafenMute all incoming voice; you can still transmit. Applies immediately.
SectionJoin & keysJoin & keys
FieldJoin & keysDisplay namevc_display_nameYour name in the voice room; empty = use your player name.
NavigationJoin & keysJoin roomvoice_joinJoin the voice room for the current server (or the manual room).
NavigationJoin & keysLeave roomvoice_leaveLeave the current voice room.
KeyJoin & keysPTT key+voicepttBind: push-to-talk — hold to transmit voice.
KeyJoin & keysMic toggle keyvoice_mic_toggleBind: toggle the microphone on or off.
SectionServiceService
NavigationServiceRestore voice defaultsvoice_defaultsReset only voice settings to the hosted baseline (vc_relay untouched).


3. Requirements

The current voice chat phase requires OpenAL for both transmit and receive.

Check:

s_enable 2 or menu value Sound engine = OpenAL;
soft_oal.dll is present in the release directory;
livekit_ffi.dll is present in the release directory;
Windows allows microphone access for the application.

If the game uses the software DMA sound path, voice chat may be unavailable

even when vc_enable is on.


4. Main cvars

vc_enable - voice chat master switch;
vc_autojoin - automatically join on game server connect;
vc_server - control-plane service URL;
vc_room_mode - server or manual;
vc_room_name - room name in manual mode;
vc_mic_enable - allow microphone capture;
vc_mic_device - selected microphone, "(default)" follows the system

default;

vc_ptt_mode - 1 push-to-talk, 0 voice activation;
vc_vad_threshold - VAD threshold;
vc_input_gain - microphone gain;
vc_receive_volume - incoming voice volume;
vc_deafen - mute incoming voice without disabling your mic;
vc_display_name - name in the voice room, empty = use player name.

Most vc_* cvars are saved in the global Q2PRO-X cfg.


5. Commands

voice_join - join the current voice room;
voice_leave - leave the room;
+voiceptt / -voiceptt - push-to-talk;
voice_mic_toggle - toggle microphone enabled;
voice_mic_list - print microphone list;
voice_mic_pick <index> - select microphone by index;
voice_defaults - restore the recommended voice baseline.

Calling voice_mic_pick without an argument acts like voice_mic_list.


6. Room mode

Server mode

vc_room_mode server is the recommended mode. The room is derived from the

current game server, so players on the same server enter the same voice room

without typing a room name.

For normal play:

enable vc_enable;
enable vc_autojoin;
keep vc_room_mode server;
connect to a game server.

Manual mode

vc_room_mode manual uses vc_room_name.

This is useful when:

testing voice without a game server;
using a separate room for a group;
avoiding a dependency on the current game server address.


7. Push-to-talk and VAD

vc_ptt_mode 1 is push-to-talk. It is the recommended play mode:

bind a PTT key;
hold the key to transmit.

vc_ptt_mode 0 is VAD, voice activity detection:

the microphone opens based on signal level;
lower vc_vad_threshold = more sensitive;
too low can pick up keyboard and room noise;
too high can cut the beginning of words.

Practical start:

PTT: vc_ptt_mode 1;
VAD: vc_vad_threshold 0.02, then lower toward 0.005 if the mic is quiet.


8. Gain and volume

vc_input_gain boosts the microphone before transmit. 1.0 is unity. Values

above 3-4 may clip loud speech, but can help quiet microphones.

vc_receive_volume controls incoming voice independently from game volume.

1.0 is unity, up to 10.0 is strong boost.

If others hear distortion:

1. reduce vc_input_gain;

1. check Windows input level;

1. use PTT so constant room noise is not transmitted.


9. Microphone

The Mic device... menu lists capture devices visible to OpenAL.

Command:

voice_mic_list

prints:

current selection;
Windows default device;
indexed device list.

vc_mic_device "(default)" means "follow the system default".

If a device was renamed or disappeared, select it again from the menu.


10. Hosted control server

Default vc_server:

https://voice-api.q2pro-x.com

The client asks the control-plane for room preparation. After joining, voice

traffic goes through the voice infrastructure, not through the Quake II game

server.

Local dev setups can point vc_server to a local service. Normal users should

keep the default.


11. Autojoin

To join automatically:

1. vc_enable 1;

1. vc_autojoin 1;

1. vc_room_mode server;

1. connect to a game server.

If you left manually with voice_leave, use voice_join to enter again.


12. Troubleshooting

The menu is enabled, but voice does not work

Check:

sound engine = OpenAL;
vc_enable 1;
vc_mic_enable 1;
Windows microphone permission;
selected vc_mic_device;
vc_server availability;
firewall/antivirus.

Others cannot hear me

Check:

PTT key is bound and held;
in VAD mode, vc_vad_threshold is not too high;
vc_input_gain is not 0;
the correct microphone is selected.

I cannot hear others

Check:

vc_deafen 0;
vc_receive_volume is not 0;
OpenAL backend is active;
you are actually in the same room.

Voice distracts from the game

Use:

PTT instead of VAD;
vc_deafen 1 for temporary incoming mute;
a dedicated PTT key;
lower vc_receive_volume.


13. Good baseline

For most players:

vc_enable 1;
vc_autojoin 1;
vc_room_mode server;
vc_server https://voice-api.q2pro-x.com;
vc_mic_device "(default)";
vc_mic_enable 1;
vc_ptt_mode 1;
vc_input_gain 1.0;
vc_receive_volume 1.0;
vc_deafen 0.

Then tune only the microphone, the talk key and the incoming voice volume.


14. The complete setting list

VariableAccepted valuesDescription
vc_enable0=disabled (default) / 1=enabledMaster switch for the Q2PRO-X voice chat subsystem. 0 (default) = feature is completely off — no capture, no connection, no cvar side-effects. Set to 1 to activate the voice system. Both voice transmit and receive require the OpenAL sound backend.
vc_autojoin0=manual join only (default) / 1=autojoin on server connectAutomatically join the voice room when entering a game server. Requires vc_enable 1 and vc_room_mode "server". Triggers on CL_Connected. Leaves room automatically on disconnect.
vc_serverURL string (default "https://voice-api.q2pro-x.com")URL of the Q2PRO-X voice control-plane service. This endpoint is called via HTTP POST /voice/prepare to obtain a LiveKit room token. Default: official Q2PRO-X hosted control-plane. Can be overridden for self-hosted deployments.
vc_relayURL string (default empty = use control-plane response)Override relay (LiveKit media server) URL. If non-empty, the client uses this URL instead of the relay_url returned by the control-plane /voice/prepare response. Useful for local testing or self-hosted LiveKit.
vc_room_mode"server"=room per game server (default) / "manual"=room from vc_room_nameDetermines how the voice room name is computed. "server" (default): room is tied to the current game server (host:port hash). Requires an active game server connection. "manual": room name is taken from vc_room_name — allows joining any named room regardless of game server.
vc_room_namestring (default empty)Voice room name when vc_room_mode is set to "manual". Has no effect in "server" mode. Must be non-empty when using manual mode.
vc_mic_enable0=mic off (default) / 1=mic enabledAllow microphone capture. 0 (default) = no audio captured or transmitted even if connected. 1 = capture is opened when joining a room. Requires OpenAL sound backend (s_enable openal) and a working capture device. Status string shows why mic is unavailable if conditions are not met — no silent degradation.
vc_mic_devicestring, "(default)" or exact device nameCapture (microphone) device to use. Value "(default)" (default) follows the current Windows default microphone selection. Set to an exact device name from /voice_mic_list to pin to a specific physical microphone. Saved globally, applied on next vc_mic_enable 1 / voice_join.
vc_ptt_mode0=VAD (voice activity) / 1=push-to-talk (default)Transmit gating mode. 1 (default) = push-to-talk: audio is sent only while the +voiceptt bind is held. 0 = voice activity detection (VAD): audio is sent automatically when RMS level exceeds vc_vad_threshold. PTT is recommended to avoid background noise leakage.
vc_vad_threshold0.0..1.0 float (default 0.02)Voice activity detection threshold. Active only when vc_ptt_mode 0. If the RMS amplitude of a captured frame is below this value, the frame is not transmitted. Lower = more sensitive (picks up quiet sounds); higher = less sensitive (requires louder speech).
vc_input_gain0.0..10.0 float (default 1.0)Microphone input gain multiplier applied before transmission. 1.0 = unity gain (default), up to 10.0 = 10x boost. Values above 1.0 amplify the captured signal; values below 1.0 attenuate it. Output is clipped to [-1.0, 1.0] after gain; above 3-4x expect audible saturation on loud sounds.
vc_receive_volume0.0..10.0 float (default 1.0)Volume multiplier for incoming voice from other participants. Independent of s_volume and s_voice_volume. 0.0 = silent, 1.0 = unity (default), 10.0 = 10x amplified. Applied per-participant at playback. Participant playback also requires the OpenAL backend. Use vc_deafen to mute all participants simultaneously.
vc_deafen0=normal (default) / 1=deafen all incomingMute all incoming voice participants. When 1, audio frames from all room participants are discarded at playback — useful for focus or streaming. Microphone capture and transmission continue normally while deafened, so other participants can still hear you.
vc_display_namestring (default empty = use player name)Display name shown to other voice room participants. If empty (default), the game player name (cvar "name") is used. Useful to set a different visible identity in the voice room without changing the in-game name.


15. Leaving the room cleanly

The client leaves the voice room correctly on an ordinary quit, on closing the window and on a forced shutdown by key combination, including the case of a fast client restart. That matters to everybody else: a "stuck" voice participant does not stay in the room after the player has gone.


16. Runtime files

The voice subsystem uses two libraries that ship with the release:

FileWhy it is needed
soft_oal.dllThe OpenAL sound engine, required for both transmit and receive
livekit_ffi.dllThe voice transport

Both files live in the root of the release package. If either is missing, that is incomplete packaging rather than a missing capability: voice chat will not work in such a build.