Private Voice Colliders ---

I’m trying to create zones where In example; 2 players can use their 3d space voice communication on the inside of the bounds of a collider, where on the outside of the collider other players cannot hear them AT ALL.

There doesn’t seem to be any nodes that allow for muting of other players (besides setting gain to 0, but that just creates mute rooms).

Question is : Is it possible to create some script that’s like - If player 2 is not within the bounds of the same collider as player 1, do not have player 1 pick up player 2’s voice and vice versa? or just voice mute values in general?

In example: Blue cannot hear any other player here, but if they move into the collider in which another player is in, then they can now hear each other.

There’s not a specific ‘mute’ node, however the SetVoiceDistanceFar can serve that function (Player Audio):

You can lower this to make another player’s voice not travel as far, all the way to 0 to effectively ‘mute’ the player.

Keep in mind when designing this system you are setting the audio distance for the remote players from the local player’s perspective. So if a remote player is inside a collider, the local player has to recognize that and set that player’s voice distance far accordingly.

Understandably the route of lowering the players setvoicedistancefar setting, as well as gain, and lowpass does effect the players voice near to what the desired effect is, but not quite a true “silence” function, especially if both players are near the wall of the collider.

I’m wondering then if its possible to add new Networking, Object, and Playerapi behaviors that can effectively achieve this, such as:

  • Collecting the remote players gain value, E.g. getremoteplayervoicegain
    (this could be getremoteplayervoice but leaving it with gain to describe what’s being effected)

  • set a collider ID on an object collider to give it identity E.g. setcolliderID

  • Read what collider a remote player is in. E.g. getremoteplayercolliderID

  • Read what collider a local player is in. E.g. getlocalplayercolliderID

  • Determine if the local and remote player share a collider. E.g. issame
    (if true, then do not change values, if false, change values)

  • setting the audibility of a remote player for a local player. E.g. setremoteplayervoicegainlocal
    (this could be setremoteplayervoicelocal but leaving it with gain to describe what’s being affected)

(obviously there would be other already implemented nodes that would connect these but this is just a list of potential new behaviors)

(also some already existing nodes may already work as a replacement for one or many of these, and some more new nodes may be needed to make this idea function, please go ahead and edit my or create your own version of new nodes that you feel would best achieve the desired effect.)

I just realized out of the blue… that the world “Drinking Night” effectively has rooms set up in almost the exact way I’m trying to make… so while I wait for a response from them to see if what they have going will work in my intended case, this question and discussion is sort of on pause till further notice.

But if you still wanna explore the idea, please do, as I do not know when ill get a response.

This question has been answered, with this Unity Package GitHub - Guribo/UdonVoiceUtils: Tools/Components for UDON (VRChat) based worlds. Includes private channels, reverb, auto player range adjustment, etc. for player voices.