StarGate01 / AmongUs-Mumble

Mumble VoIP Plugin and mod for the popular game "Among Us" to enable Proximity Voice Chat.
GNU General Public License v3.0
109 stars 13 forks source link

Add option to isolate ghosts #11

Closed StarGate01 closed 3 years ago

StarGate01 commented 3 years ago

Add option to choose between

StarGate01 commented 3 years ago

Third option:

Does that make sense though?

alisenai commented 3 years ago

@StarGate01 Seems like the same thing as: Isolate ghosts using a different Mumble context, but positional audio still enabled. Wouldn't know how to approach this without more Mumble API/RPC. Correct me if I'm wrong.

The idea could become a 3rd option for sure.

LelouBil commented 3 years ago

Unfortunately, the context cannot be used if they are in the same channel https://wiki.mumble.info/wiki/Link

The context string is used to determine which users on a Mumble server should hear each other positionally. If context between two Mumble users does not match the positional audio the data is stripped server-side and voice will be received as non-positional.

They will just be heard non positionally

StarGate01 commented 3 years ago

From #21 :

If someone doesn't have the same context or any context set, they will just hear/be heard non positionally.

That's unfortunate. I wonder why they included the context in the first place, when all you have to do to disable positional audio is to set the player position to exactly (0, 0, 0). My guess would be for server side moderation scripts, which move players to different channels depending on context. In the long term we could look into this, MuMo seem to be the tool of choice. Alternatively, the new Mumble 1.4 RPC API seem to support switching channels as well.

So for the next release, what options should we provide? I propose to have a config option to choose between:

In both implementations, the behaviour during meetings would be that ghosts can listen but not talk. I'm open to suggestions.

alisenai commented 3 years ago

Ah, I misunderstood the purpose of the context then. I'm happy with just the two, but there's always the "trick" of adding an impossible offset to the ghost's base position. For example: Ghost 1 Base Position (-1, +2) Ghost 2 Base Position (+5, -3) New Ghost 1 Position: (-1 + OFFSET, +2 + OFFSET) New Ghost 2 Position: (+5 + OFFSET, -3 + OFFSET) Were OFFSET is an impossible position to be in.

"Relativeness" (distance between the two) of ghost's positions would be maintained while players would be too far to hear. We would have to be careful when attempting to use (0, 0) as the "special" position for clear speaking volume. This is more of a hack than a solution, but I think it's worth considering.

StarGate01 commented 3 years ago

The offset is a great idea. We should add that.

Essentially we will replace the context with a section of the world that is larger than the map.

StarGate01 commented 3 years ago

Implemented as of ecfc39c7d65918e03aa0b3e91312584cc3099a0a...867babf52f54b147569c5383ee961bc89ce202b1