Networking Voice

coherence offers realtime voice networking through a proven solution: Dissonance Voice by Placeholder Software. It can be obtained through the Asset Store.

You can find the coherence + Dissonance integration within coherence > Hub > Samples.

You need a copy of Dissonance on your project for this integration to work.

Once imported, Assets/Dissonance/Integrations/Coherence contains the integration and a demo scene.

Here's a breakdown of the components this integration offers. Further down we walk through a practical setup.

Class / Unity Component
What it does
How to use it

CoherenceCommsNetwork

The core of the integration. Runs Dissonance as Server+Client (Host) or Client. To decide in which mode to run, it relies on authority.

Create a networked prefab with this component attached. Whoever has authority over it, will be the server.

CoherenceSyncVoice

Defines the networked entity associated with each client. To do this, it relies on Client Connections.

Create a networked prefab with this component attached, and reference it as a Client Connection Prefab on your CoherenceBridge. Each client on the network will send data to the server through this entity.

CoherencePlayer

Implements a Dissonance Player, used for 3D and proximity audio processing.

Add to your networked player.

The demo project, found in Assets/Dissonance/Integrations/Coherence/Demo , showcases how all these pieces work in conjunction. The scene Demo describes within the hierarchy each of the pieces.

Setup from scratch

If you prefer to set up voice networking from scratch, here's how to do it. You will need:

  • A networked prefab that acts as the server

  • A networked prefab that acts as the client

  • (Optional) if you want proximity-based voice, a Networked Prefab that acts as the player

Server (via CoherenceCommsNetwork)

Create a GameObject and attach CoherenceCommsNetwork to it. This automatically adds CoherenceSync and DissonanceComms.

Now, convert it into a prefab. You can do this by clicking on the Sync with coherence header, through the CoherenceSync inspector, or just by dragging it somewhere from the Hierarchy window into the Project window.

This prefab will represent our voice server. Keep it on the scene, or instantiate it at the time you want to start the Dissonance voice network.

Client (via CoherenceSyncVoice)

Create a GameObject and attach CoherenceSyncVoice to it. This automatically adds CoherenceSync.

Now, convert it into a prefab. You can do this by clicking on the Sync with coherence header, through the CoherenceSync inspector, or just by dragging it somewhere from the Hierarchy window into the Project window.

This Prefab will represent our voice client. Don't instantiate this yourself. Instead, reference it on your CoherenceBridge component as a client connection prefab.

Fix any problems when referencing a client connection prefab. In this case, it's suggesting to disable authority transfer, since that's not supported by Client Connections (Client Connections are a special kind of entity, handled by the Replication Server).

Player (via CoherencePlayer)

Attach CoherencePlayer to the root of your player prefab, which should be a networked prefab.

If your player isn't networked yet, attaching this component will also attach a CoherenceSync.

This Prefab will now report position to Dissonance, to allow proximity-based voice.

That's all folks

From here on, you can start to experiment with voice. Make sure to keep reading through Dissonance's Documentation for further insights into voice support.

Last updated

Was this helpful?