Crowd Audio
Overview
MSquared provides large-scale, spatialised voice chat between players.
The audio system consists of three parts:
The spatial audio Unreal plugin. This integrates the system with Unreal and provides an API to game code.
The audio client. This is a DLL that provides engine-agnostic processing functionality, and provides an interface to the connection between the client and the audio server.
The audio server. The server receives audio from each client, performs processing and aggregation, and then sends the mixed audio back to each client.
Usage/Controls
Voice chat can be enabled either by pressing the button in the UI, or using the corresponding shortcut
C for regular spatial voice chat
V for loudspeaker (Requires the
Capabilities.Voice.VoiceLoudspeaker
capability on the current character for this to be enabled. Off by default for participants, but on for e.g. Presenters)
These keys can either be "push to talk" (you are talking whilst the button is held down), or "toggle".
By default, characters are push to talk. This is to avoid issues with people accidentally having hot mics in large scale events.
Roles with the
Capabilities.Voice.VoiceToggle
capability can instead press to toggle. By default, this is only for e.g. presenters, but could be added to other roles if desired.Even if you are using toggle mode, holding the button down will be treated as push to talk. (If you hold for longer than the
EnterPushToTalkDelay
of 0.25 seconds).This functionality is not easily configurable as it stands, but we plan to make configurable in an upcoming update.
Crowd Audio
Voice Chat is powered by the Crowd Audio system. Typically this is intended for spatial voice. However, it also handles 2D voice chat, using broadcast channels:
Broadcast channels
This is the way that the Crowd Audio system handles different "channels" for communication.
It is controlled via the following (on the CrowdAudioComponent
):
Add/RemoveSubscribedBroadcastChannels
- controls which broadcast channels you are listening toAdd/RemoveAvailableBroadcastChannels
- controls which broadcast channels you are allowed to talk in.SetSelectedBroadcastChannel
- sets the channel that you are talking in (must be available)SetVoiceInputEnabled(bEnabled, bBroadcast)
- controls whether you are talking or not. IfbBroadcast
is true, you will use your selected broadcast channel. If not, you will use spatial voice.
When someone talks on "loudspeaker", they are using the global broadcast channel (0), which everyone is subscribed to.
Broadcast channels will allow you to implement things like team-specific voice chat or direct voice comms between specific individuals.
Last updated