OhMyGuus / BetterCrewLink

Free, open, Among Us Proximity Chat
GNU General Public License v3.0
930 stars 160 forks source link

[FEATURE] Flexibility to supplement external voice chat #284

Open G-F-D opened 2 years ago

G-F-D commented 2 years ago

Pre-Flight Checklist

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

Some people in our group, particularly when there are many players, have issues getting BetterCrewLink to work reliably for various performance- and network-related reasons. Traditional external voice chat (e.g. over Discord) works much more consistently for everyone involved, but loses the proximity-related features. A more functional middle-ground would be to use external voice chat for all situations besides living crew during tasks or ghosts during meetings, where BetterCrewLink would be able to add value while not being relied on for critical voice communications in lobbies and living players in meetings. Bots like AutoMuteUs can have their mute/deafen state tables be configured to enable this use case, but BetterCrewLink currently cannot. This feature request is for one or more settings in BetterCrewLink to enable this use case on its end.

To clarify, here is the full state table I'm trying to set up, where the header player type can only hear Living or Dead players, or the eXternal voice chat channel:

State Crew Imps Dead
Tasks L LD LX
Meet X X DX🔇
Lobby X N/A N/A

Put into words:

Describe the solution you'd like

The state table described above could be implemented using one or more settings within BetterCrewLink. All state modifications could be put into a single setting named something like "Discord supplement mode", but that would not be self-explanatory at all. The alternative that would be self-explanatory is multiple options that can be combined to achieve this same state table:

The downside of this approach is cluttering up the settings with even more options.

Describe alternatives you've considered

Having players manually mute/deafen on BCL as-needed to achieve this state table is technically possible, but unreliable and cumbersome at best in practice.

Additional context

No response

MatadorProBr commented 2 years ago

So it seems that you don't want to fix the perfomance or network issues and instead you want to add options on BCL to make support with AutoMuteUs I'm right?

If yes, you have to wait like @OhMyGuus, someone that knows how to change the BCL code or you, if you know how to change the BCL code

G-F-D commented 2 years ago

It's not that I don't want to fix the issues so much as it is infeasible. These issues usually seem related to user hardware, and so aren't easily troubleshooted and fixed, particularly with the current global electronics hardware supply chain issues and given that troubleshooting would have to be done remotely.

I rarely deal with web development related technologies like Javascript, but I may make time to look into the codebase if resources are low.

Nicofisi commented 2 years ago

I'm also interested in this, except I probably only want Discord for meetings, and want ghosts to still hear the living players using the proximity chat as they wander around, like on default settings with the mod at the moment.

I expect to have some free time later this week. I've been looking at the code for the last 15 minutes (update: 2 hours now) and I already have a general idea of where the extra if statements would need to be added.

Since we have different needs, we probably should go for the approach with 3 extra configuration options.

But honestly yes, the more I think about it, the extra options probably are going to be confusing.

Shouldn't we just remove the following settings:

and instead add a table similar to yours, with all the 25 options possible, for full customization for any scenario:

(I think those are the defaults)

State Crewmates Impostors Dead
Tasks +C +I -D +C +I -D +C +I +D
Meet +C +I -D +C +I -D +C +I +D
Lobby +everyone- -one-big- -row

That would be hard to fit though with the current width of the mod... (reference image without changes)

obraz

So maybe a layout utilizing the already-existing design? Like so:

EXAMPLE START

Lobby settings

EXAMPLE END

Honestly I have no idea whatsoever how to implement this in a user-friendly way style-wise (CSS) given the current width of the mod interface. Perhaps a "reset to defaults" button could be useful. Maybe we could add a "reset settings from preset" dropdown with a "default" preset and some other ones?

I would be down to try to implement this code-wise if there a green light from the devs, but I would need someone to make a design mockup for the UI first.

Hit me up on the mod's Discord (Nicofisi#4467) if anything :)

Nicofisi commented 2 years ago

An alternative would be to keep the existing settings and add a separate "advanced config" view, where the currently-existing options would be configured to switch the appropriate checkboxes from the "advanced config" behind the scene (a few at once when necessary).

So if for example only dead can hear through cameras that would show as a partial checkbox in normal settings on the "hear through cameras"

obraz

RobinRMC commented 2 years ago

This is actually a good idea. I like where this is going.