Yellow-Dog-Man / Resonite-Issues

Issue repository for Resonite.
https://resonite.com
118 stars 1 forks source link

Needs a way to set a user's voice mode. (In flux or components) #2017

Open AmasterAmaster opened 1 month ago

AmasterAmaster commented 1 month ago

Is your feature request related to a problem? Please describe.

Currently there is only a way to get a user's voice mode, but no easy way of setting it directly.

My use case for this is that I am currently creating a classroom world, and the instructor (whoever it may be) should be able to press a button to change their current voice mode to Broadcast (and when pressed again should be able to return to the previous stored voice mode). This at first sounds trivial, as the instructor would normally just use the dash facet to change it, but the following example is truly why I would like this feature...

For the students sitting in the seats in this classroom, there is a button provided in front of them that will act the same way, pressing it should set their voice mode to broadcast so their questions and concerns can be heard for the instructor/students in the room. Now, the instructor can't really enter the other user's dashes to turn on broadcast mode for them, so a flux node would be best here to let the button change the local user's voice mode for them (making it easy for everyone in this scenario).

Describe the solution you'd like

I would like to see a flux node or component that can allow for setting a user's voice mode.

Describe alternatives you've considered

I have considered the following:

Additional Context

This can be used for other contexts as well, for some examples:

Requesters

AmasterAmaster

epicEaston197 commented 1 month ago

I know this issue is made with the best of intentions but this could easily be abused

AmasterAmaster commented 1 month ago

@epicEaston197 Like with anything that is user created content, anything can be abused. and following from the advise I heard, if someone is abusing something, file a ticket on it. I also follow the mantra of "A tool is a tool, it can be used for good or bad, but at the end of the day, it is just a tool".

epicEaston197 commented 1 month ago

@epicEaston197 Like with anything that is user created content, anything can be abused. and following from the advise I heard, if someone is abusing something, file a ticket on it. I also follow the mantra of "A tool is a tool, it can be used for good or bad, but at the end of the day, it is just a tool".

Yeah but I still don't particularly feel comfortable with someone being able to unmute me without my consent maybe an additional privacy setting could be added to prevent this from working

ohzee00 commented 1 month ago

Does GrabbableUserVoiceModifier not follow your usecases Amaster? I haven't tested it in a long time but it should work on grabbable objects to change a user's voice to say, broadcast when grabbing a certain object.

epicEaston197 commented 1 month ago

Does GrabbableUserVoiceModifier not follow your usecases Amaster? I haven't tested it in a long time but it should work on grabbable objects to change a user's voice to say, broadcast when grabbing a certain object.

That component doesn't appear to function

AmasterAmaster commented 1 month ago

@epicEaston197 True, that could be a thing the devs could do, like a stronger mute option that prevents force unmuting, also the world creator should take into account of that, but I understand that people may not know nor have the foresight to this, thus the setting would override this node/component. Also, if privacy is that much of a concern, I would think that users would rather just open a clean grid world (with no background flux of any kind) and talk privately there as well, there are options.

epicEaston197 commented 1 month ago

@epicEaston197 True, that could be a thing the devs could do, like a stronger mute option that prevents force unmuting, also the world creator should take into account of that, but I understand that people may not know nor have the foresight to this, thus the setting would override this node/component. Also, if privacy is that much of a concern, I would think that users would rather just open a clean grid world (with no background flux of any kind) and talk privately there as well, there are options.

Muting my microphone should not be treated like the whisper bubbles muting my microphone is a privacy feature and it should be respected

AmasterAmaster commented 1 month ago

@epicEaston197 Yes, hence why I mentioned that being a setting they could setup, which would block this from being a feature, but once that is setup, then world creators can finally have a way to structure their classes in different ways (say for example, if people are to take a test, then make all users mute until the exam is done). Then the instructor should have that control, plus it is implied that if your in a classroom, then you would at least be communicating to the teacher/students in some capacity (muted or not). But that is its own moral dilemma (And I am thinking in more of a grander scale of separate Resonite universes that may need that type of control for their students).

Zyzyl commented 1 month ago

This would be useful. I can imagine situations in game worlds or Metamovies where this functionality would be great (e.g. simulating switching to radio comms by setting people to Broadcast).

It's worth noting that there it's already possible to 'Mute' or 'Silence' users at a session/world level which doesn't override their own voice level set in the Dash. I generally agree that there should be protections against being able to fully unmute another user without their consent. This is how it works in Zoom for example, the call Host can mute people, but can only invite them to unmute themselves.

JackTheFoxOtter commented 1 month ago

Does GrabbableUserVoiceModifier not follow your usecases Amaster? I haven't tested it in a long time but it should work on grabbable objects to change a user's voice to say, broadcast when grabbing a certain object.

That thing has been broken for ages, but yeah it would be awesome to see that fixed.

JackTheFoxOtter commented 1 month ago

You can also already change a user's voice mode through the user inspector. Which I use to put people that have fallen asleep to whisper so they don't wake up from me talking, and I don't get annoyed by them snoring :D

ohzee00 commented 1 month ago

That thing has been broken for ages, but yeah it would be awesome to see that fixed.

Not trying to steal this issue but doin' a separate GitHub issue on that would be good, I didn't realize it was broken honestly. (And I'm gonna sleep so I'm totally going to forget to make one)

shadowpanther commented 1 month ago

Couldn't cloud vars and a Dash facet (on each consenting user) be used to do this?

I.e., make a facet that has a voice mode switcher in it, and has flux on it that changes voice mode when the cloud var is changed. Then the objects in the world would be set to write users' cloudvars.

Chundelac commented 1 month ago

@epicEaston197 Like with anything that is user created content, anything can be abused. and following from the advise I heard, if someone is abusing something, file a ticket on it. I also follow the mantra of "A tool is a tool, it can be used for good or bad, but at the end of the day, it is just a tool".

Yeah but I still don't particularly feel comfortable with someone being able to unmute me without my consent maybe an additional privacy setting could be added to prevent this from working

I believe it is already possible to force unmute someone.

Dusty-Sprinkles commented 1 month ago

Couldn't cloud vars and a Dash facet (on each consenting user) be used to do this?

I.e., make a facet that has a voice mode switcher in it, and has flux on it that changes voice mode when the cloud var is changed. Then the objects in the world would be set to write users' cloudvars.

If this is targeting newer users who have a hard time figuring out broadcast imagine how hard teaching each of them individually to install a facet would be.

Also yea I'm for this or fixing the component, or both, it would be nice to have for a lot of applications and maybe just some settings if you don't want to be force unmuted/unwhispered/muted should be enough imo

Psychpsyo commented 1 month ago

I agree that this would be a nice thing but there definitely should not be a way to force-unmute somebody else.

Oftentimes the fact that someone is muted means that they're having some form of private conversation with someone IRL or on a call. As for the "anything can be abused because it's user-created content": Certain forms of abuse are unavoidable, temporary, 'not that bad' or easily moderated. Like crashing someone, lagging their game, loud noises, flashing lights, etc.

Random mic access is not one of those. It is avoidable, not a temporary problem if someone makes you leak private data, quite bad depending on what's leaked and you can't moderate the problem away after it's been abused and someone get the info they wanted.

My suggestion would be that a voice mode can only be requested, not set directly. It'd give the user something like a host access popup telling them

Something wants to change your voice mode to <whatever>.
Reason:
<provided to the requesting node>
AmasterAmaster commented 4 weeks ago

@Psychpsyo That is why there should be the exception to the node to either not force unmute (limiting it to a few voice modes) OR have a setting that prevents force unmuting for users, especially if a world creator wanted to have access to all voice modes. (I am in favor of the setting option).

As for your second point, I still say having a node like this would be considered a tool anyone can use, and yea someone would probably use it maliciously, but I feel it has a greater good, like accessibility for example (new users that are just starting would not know how to use voice mode controls or maybe have not noticed them, but also would want to learn something in a classroom setting and would happily take advantage of a button/toggle near them to help them speak up and to be heard from a long distance).

I really like your suggestion of a requesting feature though, it could act similarly to what we already have for opening hyperlinks and webpages, just having a popup saying the reason why would be perfect!

shiftyscales commented 3 weeks ago

Does GrabbableUserVoiceModifier not follow your usecases Amaster? I haven't tested it in a long time but it should work on grabbable objects to change a user's voice to say, broadcast when grabbing a certain object.

That component doesn't appear to function

Can you please report this as its own issue, @epicEaston197 @ohzee00?

epicEaston197 commented 3 weeks ago

Can you please report this as its own issue, @epicEaston197 @ohzee00?

I've made #2087