Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Restrict to 2 spymaster modes per game #66

Open
mastertst opened this issue Apr 5, 2020 · 9 comments
Open

Restrict to 2 spymaster modes per game #66

mastertst opened this issue Apr 5, 2020 · 9 comments

Comments

@mastertst
Copy link

Is there a way to restrict and/or make it transparent if a player is trying to view the key by switching to spymaster? - that will prevent any cheating

@danielthepope
Copy link
Contributor

I had a go at fixing that issue the other day, but the implementation is pretty questionable. It counts the number of people who have become the Spymaster in a game then prevents anyone from pressing the button after 2 people had joined.
However it doesn't address the problem that would arise if someone accidentally closed their browser while they were Spymaster: they wouldn't be able to join again. I imagine a proper implementation of this would require a pretty big change, and my Go and React skills aren't up to the challenge.
For more info, the closed PR is here and my branch with my flawed changes is here.

@Pumpido75
Copy link

I guess, it could be an idea, if the opener of a room could set a password for the "Spymaster" function. Would that be possible?
How do you solve it?
Do the Players share their screen in a videoconference or something?
I mean, the game only makes fun, without cheating anyway, but you newer know...
Thank you anyway for the cool possibility to play the game online!!!

@Pumpido75
Copy link

Just got another idea.

If you change to spymaster once, you should not be able to switch back anymore.
This may be an easy solution.

@smitpatel
Copy link

I was something along the lines on the first idea @Pumpido75 had.
A spymaster creates as room, decides a password and send it to the other spymaster. Everyone without the password cannot see. Should be doable by having extra form entry for password on home page.

@Pumpido75
Copy link

Pumpido75 commented Apr 6, 2020

I came up with the idea, to play the game during a video conference and share the screen of the spymaster, not including the URL at the top.
Then the spymaster sends a printscreen of the coloured map to the spymaster of the other team (for example in whatsapp).
Only one Spymaster will then be able to check / turn the cards, be doing what the other players are telling him to do.
I guess, this is not a bad way to play it.
Both Spymasters then have to see the map on their phone for example.

@jbowens
Copy link
Owner

jbowens commented Apr 9, 2020

Anything we do here will need to be optional, because it creates unnecessary friction in the common case where you trust your friends.

It's also worth noting that under the hood, the server sends the same state to everyone. If you add some restriction to just the frontend, anyone who knows how to use the Chrome inspector can still cheat.

A spymaster creates as room, decides a password and send it to the other spymaster. Everyone without the password cannot see. Should be doable by having extra form entry for password on home page.

One complication would be the 'next game' button. In my experience, people typically like to switch up the spymasters each game, and they probably don't want to recreate the game each time to do so.

I still have a hard time imaging a scenario where someone would want to cheat in a digital board game amongst friends. ¯\_(ツ)_/¯

@Pumpido75
Copy link

That's true.
I would also never cheat in such a game. Where's the fun.

By the way:
This is a almost perfect version of Codenames.

https://netgames.io/join

My only problem is, that it's just in english.

@mastertst
Copy link
Author

This is great! - Thanks!

That's true.
I would also never cheat in such a game. Where's the fun.

By the way:
This is a almost perfect version of Codenames.

https://netgames.io/join

My only problem is, that it's just in english.

@hillcjames
Copy link

hillcjames commented Apr 18, 2020

I'd think the best way to do this would to just show a little count of the number of people who have viewed the current board, and highlight it in red if it goes over 2.
No hard boundaries or extra friction on non-standard play (page reloads, spymasters share a screen and so even 2 would be too many, spymaster goes to bathroom and someone else takes over, etc.), just a little flag that goes up to let everyone know that someone new has looked. As much as I wish I could trust everyone I love/like/care about/play games with, there are some people (or rather, one kid in particular) who I can't.

Showing the number of people who have seen the current board even when <= 2, would reduce the likelihood of someone thinking they could get away with a quick look. It may even make the game feel smoother, so you can visibly watch people claim the role of spymaster through that ticker, potentially precluding the situation where you need to restart the round right after beginning, when three people click to be spymasters unknowingly.

It'd suffer from the same issue mentioned above where a spymaster who leaves and re-joins would incorrectly up the count to 3, but between friends that would need nothing more than a quick explanation. A team could conspire to lie in that way, but the number of such teams must be much lower than the number of individuals who'd chance a quick peek when they're stumped.

  • You could go so far as to show a separate list of all the IDs who have been part of the current round at all, to help facilitate a full inquiry into who exactly reloaded and whether anyone is cheating, but at that point, I'd argue it doesn't really matter; they could still just check out the game state through the console, or even just send each other a screenshot. If you can't trust your friends to be better than that, there's not really any point in playing.

I'd imagine this would consist of giving every new join a unique ID, and for every board, saving a list of the IDs of the people who have toggled spymaster on to the game state variable, merging those lists together as necessary on the backend.

This all could lead to potentially trust-shattering debates (potentially even between the wrong people) if the third spymaster-clicker doesn't confess - so maybe show everyone's ID subtly on their screen somewhere, and have a little details dropdown on the spymaster-count flag, where everyone can see that list of the IDs of the people who have toggled spymaster on.

I've been missing React, so I'd be interested in implementing this idea @jbowens, if the base concept is agreeable.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants