Unreal Engine

Do you support Unreal Engine 5.x?

Yes, we do. Our internal development team uses 4.27 for development, but testing is also done on 5.0 and recently on 5.1.

Do you have sound occlusion built-in?

Yes, the audio is played via a synth component (see Add Odin Synth Component ) and this integrates natively into the entire Unreal Audio Engine with all the features that come with it. This also means that you can use any other 3rd party audio plugin to improve or to add new effects.

Are there any dependencies to other plugins?

Yes, ODIN uses capture and playback of the Unreal Engine. So, voice coming into the game is handled is exactly the same as prerecorded audio or sound effects. However, to capture the devices’ audio we use the official Unreal Audio Capture plugin provided by Epic Games.

I cannot find the Capture Audio nodes?

If you have any issues finding nodes in Blueprint, make sure this plugin is enabled. In the Unreal Editor open Plugins (Menu -> Edit -> Plugins) and make sure that in the Audio Section the Audio Capture plugin is activated like shown in this screenshot:

Enabling the Audio Capture Plugin

Enabling the Audio Capture Plugin

Spatial audio does not work. What is wrong?

If the voice chat is working und you managed to hear other players, but it sounds like they are always “inside your head”, please look here and check if you set the right target for the Odin Synth Component: https://www.4players.io/odin/sdk/unreal/blueprint-reference/functions/add-odin-synth-component/

If you used this blueprint example https://www.4players.io/odin/sdk/unreal/manual/#the-on-media-added-event , you have to be careful to choose the right player character for every single event as mentioned in the info box below: “In a real 3D shooter with 3D audio you would not choose the local player, but map the Odin Peer Id with your Unreal Player Id and then assign the Media to the corresponding player character. This way, Unreal will automatically process the audio in its audio engine and apply attenuation, e.g. dampen the volume the farther away the player is from the listener.

If everything is connected correctly, more details on Sound Attenuation can be found in the Unreal Documentation here https://docs.unrealengine.com/4.27/en-US/WorkingWithAudio/DistanceModelAttenuation/

Cross-Platform / Cross-Engine is great. Inside the web client I can hear the UE client, but I cannot hear web clients inside the UE client. Why does it not work?

Each client adds his own MediaStream to the chat room like described here: https://www.4players.io/odin/sdk/unreal/manual/#adding-a-media-stream

After that it will be automatically sent to the ODIN server and “multicast” from there to every peer inside the same room.

When you link the MediaStream of every remote peer to a SynthComponent (e.g. on a player character), everybody can hear anybody else, regardless of the client type. Look at the event OnMediaAdded in https://www.4players.io/odin/sdk/unreal/manual/#the-on-media-added-event

Excursion: Handling non-UE ODIN peers inside UE

Usually, every player character inside UE is spawned as soon as replicated by the network engine, i.e. Unreal networking. When an ODIN peer joins that cannot be replicated, you should either spawn a placeholder object “On Peer Joined” or you can attach the synth component of non-UE clients somewhere else “On Media Added”. For instance, you could attach it to your local player character to hear web clients with 2D audio like they are “on the phone”. Or you can put a virtual radio box inside the level to let web clients speak through that object. It is also possible to create a second ODIN room (e.g. “global chat”) and inside let all players from all client types communicate in 2D - in addition to the in-game (UE-only) spatial audio voice.

Remember to detach / destroy objects from non-UE ODIN peers when they leave the room.

What if I do not want to have spatial audio, just like in my favourite conferencing software?

Like in the answer to the question above “Spatial audio does not work. What is wrong?” you can do the contrary and set the synth component to playback only in 2D. Look in the Unreal Documentation here: https://docs.unrealengine.com/4.27/en-US/WorkingWithAudio/DistanceModelAttenuation/