Implemented using libopus for the Opus codec, same as is used in Discord.
This adds the following cvars:
- `voice_chat` On/Off, triggers self-deafen state on server via weaponprefs
- `voice_mode` Activity/PTT
- `voice_selfmute` On/Off, triggers self-mute state on server via weaponprefs
- `voice_inputamp` -30 to 30, scales input by value in decibels
- `voice_activationthreshold` -30 to 0, if any peak in a frame is higher, activates voice
- `voice_loopback` On/Off, plays back local transcoded voice
- `voice_proximity` On/Off, enables proximity effects for server
- `voice_distanceattenuation_distance` distance in fracunits to scale voice volume over
- `voice_distanceattenuation_factor` distance in logarithmic factor to scale voice volume by distance to. e.g. 0.5 for "half as loud" at or above max distance
- `voice_stereopanning_factor` at 1.0, player voices are panned to left or right speaker, scaling to no effect at 0.0
- `voice_concurrentattenuation_factor` the logarithmic factor to attenuate player voices with concurrent speakers
- `voice_concurrentattenuation_min` the minimum concurrent speakers before global concurrent speaker attenuation
- `voice_concurrentattenuation_max` the maximum concurrent speakers for full global concurrent speaker attenuation
- `voice_servermute` whether voice chat is enabled on this server. visible from MS via bitflag
- `voicevolume` local volume of all voice playback
A Voice Options menu is added with a subset of these options, and Server Options has server mute.
In games with limited player count, shuffle the NO CONTEST player with a spectator that wants to play. Intended for 1v1 servers, but really this can help any server with a lower player count than connection count.
Lets you set a bunch of metadata for your add-on, and a minimum required Ring Racers version (to prevent annoying tech support questions for mod authors). This version value can also be leveraged to add in backwards compatibility behaviors for older mods.
Currently the values of the metadata are printed out when a mod is loaded, and aren't used otherwise.
Fix pointers for C interface copied strings
Apparently this was luck that it worked earlier.
I love C++'s strings! And conversely, I hate C's strings.
Now compiles on Ubuntu 22.04, which only has libfmt 8.
I don't know which exact version of libfmt we need but the
one in thirdparty works.
This version of libfmt is header-only.