ZeroK-RTS / Zero-K-Infrastructure

Website, lobby launcher and server, steam deployment, .NET based tools and other vital parts of Zero-K infrastructure
GNU General Public License v3.0
53 stars 52 forks source link

Consider handling ninja joiners #1754

Open sprunk opened 7 years ago

sprunk commented 7 years ago

People coming to a room when a !start vote is underway leave no room for anyone to react:

A different flavour of the problem is people ninja-[un]speccing.

First, decide whether it's a problem worth solving at all. Ideally most newbs would be directed to MM which does not have this problem but most of the activity still seems to be in rooms.

My solution would be to interrupt the start vote if player roster changes. This makes sure that the thing people are voting on does not change mid-vote. This is similar to how other games handle it (in Starcraft/Warcraft there is a 5s countdown to start and if someone leaves it is interrupted - this could also be the way it's done for rooms where there is boss instead of vote). In theory you could troll by repeatedly joining/speccing but then !kick and !lock exist, possibly the room could become locked by default (in SC/WC room is locked during countdown).

Some players suggested that people joining a room should be spec by default (possibly only if a vote is underway). I think that would be horrible because people expect to play when they click a room and newbs wouldn't know they have to unspec. Multiple people are optimistic about this but they're all veterans so I'd take this with a grain of salt:

[Chesti] when you do not know how to unspec you are possibly wrong to RTS if you do not find the unspec button you should not play and you can have a join info that you are spec

[Alcur] They (newbies) probably expect something room related to happen (when clicking the room) but it probably doesn't have to be actually joining the room directly

[cleanrock] newbies will learn fast they have to unspec to play, also it is good they do not join the first game by accident. newbie join and become spec, asks why in game then knows what to do next game and do not wreck their first game joined

Another proposal was a user-side toggle on spec vs play default but that does not solve the problem at all (the default would have to be "play" which is the current situation).

Aquanim commented 7 years ago

I think that interrupting a start vote whenever anybody joins the room would be exceptionally annoying, even outside the abuse case. Locking the room when a start vote is active seems incredibly inelegant (given that they typically last far longer than a 5s countdown) and kind of annoying. The default changing based on current state is inconsistent.

I am inclined to agree with the people you've quoted that default spec is the best solution. I think that you've overestimated how confusing this will be to new players. The absolute worst case is that they spec their first game by mistake and then join the next one, and in Chobby you'd really have to not be looking at your screen at all to miss that you are currently spectating. Maybe in a clusterfuck it's a little harder to tell, but the big "spectating" button is still glowing.

(Default spec also has the advantage that if you join an ongoing game your state accurately reflects what you're actually doing right now.)

(This would probably be less of an issue if it were obvious that a start vote was in progress when you join a room.)

An argument against default spec is that maybe it leads to even more of a spectator culture.

db81 commented 7 years ago

Default spec can work if you follow the common practice and show a multi-step UI tutorial the first time they join a room that highlights the relevant elements and explains them.

"Congrats, you just joined your first room! [Next] [Skip]" "Right now you're spectating. That means when the game starts you will be watching it but won't actually participate. Click this button to switch into playing mode! [Next]"

Kind of a lot of work to do though.

sprunk commented 7 years ago

"Congrats, you just joined your first room! [Next] [Skip]"

Skip

(Alternatively, if we try to be smart and not have skip: Next Next Next Next)

Anarchid commented 7 years ago

A bubble may work better:

"You are currently spectating. Click here to play when game starts >" [PULSING BUTTON]

Show three times per unique account at most, or until Play is clicked, whichever occurs first.

Sgathec commented 7 years ago

If other solutions are too much work at the moment, would being able to set your default room state (player or spectator) be more appropriate to implement now? That would probably slightly reduce the amount of accidental "signing up" for playing in battles.

sprunk commented 7 years ago

Stuff @GoogleFrog said in #1813:

Players can join battles and have them start immediately. This can cause them to play a game that they did not intend to play and can break the game setup (particularly in FFA).

  • We can not set players to spectator by default. The expected action for clicking on a battleroom is to play the game, being a spectator by default is terrible UI and will lead to new players missing out.
  • Setting people to spectator by default and then asking if they want to play is also pretty terrible UI.

I think some sort of host solution is required. Perhaps if a new player joins the start is cancelled or suspended. This also sounds quite terrible though.

DeinFreund commented 6 years ago

It should be fairly easy to freeze the teams during a start vote. This might not be a good solution though, as !start is sometimes called the instant the previous battle ends.

sprunk commented 6 years ago

Make this not apply in autohosts (effectively meaning in clusterfuck) then.