VoipTalker - Troublshooting on steamAppId 480 - missing words

Hey,

Do you find the steam app ID 480 stable for testing VoIPTalker?

I’ve been following tutorials for setting up VoIPTalker with proximity and PushToTalk on a client-server multiplayer using AdvancedSessionsPlugin. It seems to kind-a work, but just parts of words are going though the VoIP talker communication. I’m attaching the VoIPTalker to either Mesh or Capsule.

  1. Could it be that AppID 480 is always congested on Steam side and it not reliable to test VoIP communication?

  2. Or maybe I should troubleshoot microphone settings? I do not see any silence-detection mechanism that could interfere with my tests, but that is still a possible problem that I might be missing.

What is your experience with VoIP testing?

Cheers,

Bartosz

I’ve done some analysis and multiple trial and error experiments.

Eventually I was able to destile a working solution for Voice chat with attenuanation, proximity chat - using the Unreal VoipTalker.

It all was tested on Steam testing app 480.

I have following setup:

  • Unreal 5.4 + Advanced Sessions Plugin,
  • VoipTalker is added inside ThirdPersonCharacter using following events:
    • Server_initVoipTalker → calls Multicast_initVoipTalker
    • Important for me was to mark both events as Reliable (initially I thought this is not essential)
  • Multicast_initVoipTalker
    • For safety - check if voipTalker is already valid - if it is then do not create new one
    • check if PlayerState is valid and wait until it is valid - in future I’d rather avoid waits inside thread, but it works
    • call AddVoipTalker and save to a variable (not setting replication on that variable)
      Note: I gave up on implementation with VoipTalker added as a Component to character with ComponentReplicates=true
    • RegisterWithPlayerState for VoipTalker
    • set settings on VoipTalker with CapsuleComponent as a attach point and attenuation settngs
    • set MicThreshold to -1
    • ExecuteCommand with voice.MicNoiseGateThreshold 0.01 - I’ll furhter troubleshoot if this really helps or rather causes cracking in voice sometimes
    • ExecuteCommand with voice.SilenceDetectionThreshold 0.01 - I’ll furhter troubleshoot if this really helps or rather causes cracking in voice sometimes
  • GameMode:
    • Inside OnPostLogin (here setup without seamless travel),
      • adds each connecting playerController to an array
      • check if this array has already all players
      • if all players connected then wait further e.g.: 10 seconds (e.g.: setTimerByEvent 10 seconds)
        • Iterate playerController array and for each call on playerController.getControlledPawn → call thirdPersonCharacter.Server_initVoipTalker

It seems that it is really important to call init of VoipTalkers on all players only when all of them are already present on the connected session. If I would allow host player to create its VoipTalker without this wait then it would not attanuate the voice.

Hope this could be helpful to anyone.