mumble-voip / mumble

Mumble is an open-source, low-latency, high quality voice chat software.
https://www.mumble.info
Other
6.41k stars 1.12k forks source link

[Positional Audio] Team, Squad, Spectator enable/disable and custom IP address features request #2227

Closed davidebeatrici closed 2 years ago

davidebeatrici commented 8 years ago

I would like to propose the following options to be added to the Plugins page in Mumble client settings.

Team: enable/disable the plugin only for the players in the same team. Squad (for games like Battlefield): enable/disable the plugin only for the players in the same squad (and team). Spectator: enable/disable positional audio for the spectator (the spectator can hear positionally, but the players hear him normally). This can be done because the majority of games takes the positional data of the spectated player. Custom IP Address: Workaround for the issue https://github.com/mumble-voip/mumble/issues/2208. This means that by putting the same IP address on all the clients, the problem is solved

mkrautz commented 8 years ago

Can you explain in technical terms what you'd want to happen?

For example:

Team: This could be implemented as a hint to plugins to include team data in the context. No other changes necessary. Squad: Same for squad. If the option is enabled, include squad data in the context. No other changes necessary. Spectator: Not sure how to implement this. Custom IP: Per #2208, I think this would just be a hint not to include the IP in the context.

The problem with these are, how do you get people to agree how to configure their clients? If this is done as I suggest above, people with different configs will not be able to talk to one another.

So, we need a design for how this is going to work...

davidebeatrici commented 8 years ago

I agree with your example; I think that Spectator is the simplest thing to implement, it's just a byte value: in Quake Live it is 1 when spectating and 0 when not. When you're spectating someone, the position memory addresses have the spectated player coordinates as values: this means that you, as a spectator, can hear the other players positionally; clearly Mumble shouldn't send these coordinates to the players, because they would be sent through the spectator, resulting in confusion (I currently disabled it in the QL plugin for this reason).

Custom IP: Yes, we can simply exclude the IP from the context, but I think that it would be better to specify a custom IP address, for people who have multiple servers in the same network. The best solution would be to add both options.

As for the people to agree, I don't think it is needed. I mean, if a player has Positional Audio enabled only for the team, he's going to hear positionally only his team mates, while a player that has PA enabled for every situation is going to hear everyone positionally. To make this work, Mumble needs to send the player coordinates to other players (with same context IP address), regardless of the team and squad settings.

mkrautz commented 8 years ago

I think you need to be more clear about how you think the team/squad thing should be handled in Mumble.

Right now, on every audio packet, if Mumble is sending positional audio, Mumble sends:

[voice header] // header [avatar_pos_vec3] // avatar position, 3d vector [voice data] // voice data

And each user has

which are exposed to server operators. Also, the context is used by the server such that only users that have a matching context will receive positional data.

How do you propose the above is changed to enable your suggestions to work?

davidebeatrici commented 8 years ago

I would leave context as it is and implement team/squad feature inside identity: Mumble should check for values, like "team=1, squad=2" for example, to decide to receive coordinates or not, but it needs to send them to other players anyway, regardless of the users settings.

mkrautz commented 8 years ago

Ah, OK. So, a client-side check, and context must still match for everyone. Seems reasonable to me. :-)

davidebeatrici commented 8 years ago

Yes, this is what I mean :smile: I also have a change proposal for context: I think it would be better to have the state value here and IP address in identity. State value must be the same for everyone, while IP address check can be enabled/disabled in the Mumble client settings (plugins page). Basically my objective is to make Positional Audio system adaptable for every situation :wink:

hacst commented 8 years ago

This way around we would have to completely ditch the use of "context" and standardize the format and contents of "identity" to make it work though. Currently both fields are free-form and opaque to the server (it doesn't care whether context is an IP, that's just a convinient unique game feature chosen by a plugin). Also every user would have to configure the feature on his own. I'm not sure all of this would work out well in practice.

davidebeatrici commented 8 years ago

Well, we could just enable the IP Address check by default, if I completely understood your point. The server just checks if clients' context is identical, right? If yes, I think that the proposed features can be implemented by leaving the team and squad values in identity when the "only team/squad" feature is disabled and move them in context when enabled :wink:

Krzmbrzl commented 2 years ago

Given that plugins are now (potentially) more than simple positional audio suppliers, I think this feature request no longer applies.

I think that if a plugin wants to support this, it should be up to the plugin to implement this.

no-response[bot] commented 2 years ago

This issue has been automatically closed because there has been no response to our request for more information. With only the information that is currently in the issue, we don't have enough information to take action.

Please reach out if you have or find the answers we need so that we can investigate further (or if you feel like this issue shouldn't be closed for another reason).