Voice Chat
Last updated
Last updated
MSquared provides large-scale, spatialised voice chat between players referred to as Spatial Audio (or Crowd Audio, in some places).
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.
Microphone settings can be managed in the Settings > Audio menu. This will allow users to change their mic input (desktop platforms only) and also test their microphone input is working.
There is also an optional Mic check popup that can be configured to show when a user first enters the experience so they can test their microphone is working.
The live config key to enable this popup is EntryFlow.ShowMicCheckPopup
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)
G for Party Chat (If party chat is enabled, and you are in a party)
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.
The Party System is deprecated and will be disabled in the V31 release. This will mean that Party Chat will no longer function.
An addition to the Party System, if you are in a party, and have party chat enabled (controlled via the Social.PartyVoiceChatEnabled
live config flag, if Social.EnableParties
is also true), is the party chat button. This is currently mapped to G, and uses the same push to talk vs toggle rules as the other button.
NOTE: If parties are used, under the hood Broadcast channels are assigned to parties automatically, so they can talk in private channels. Therefore, if you are wanting to allocate broadcast channels manually, we advise not using the party system.
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:
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 to
Add/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. If bBroadcast
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.