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

Add the ability to search for 'unranked' ladder battles in all formats #5648

Open
scheibo opened this issue Jul 23, 2019 · 17 comments
Open

Add the ability to search for 'unranked' ladder battles in all formats #5648

scheibo opened this issue Jul 23, 2019 · 17 comments

Comments

@scheibo
Copy link
Contributor

scheibo commented Jul 23, 2019

There is an issue affecting gamers called "Ladder anxiety". While it's kinda unheard of in the competitive community of Pokémon, I am positive there is a minority of players that should be affected by it. Casual, unranked, formats are an accessible workaround for it.

That's why many games offer an unranked experience. However, there are different approaches to it. For example, in Starcraft 2 both Ranked and Unranked players go into the same matchmaking pool, and their MMR values do get updated. The only difference is that there is no way in which Unranked players can view their rating.

IMO we can effectively replace the current system of randbats' split ladders with the Starcraft's approach. Then, players could opt-in to unranked mode through a checkbox in the battle search menu, just like it's (planned?) to add a similar checkbox for "Search muted".

Originally posted by @Slayer95 in #5623 (comment)

In the UI this can be implemented with a checkbox, and on the server this seems like it would basically just the be the same as generating an '(unranked) Foo' shadow alt for user Foo.

Some concerns:

  1. Unranked account could be used for ladder boosting (unranked users more likely to be willing to forfeit to benefit ranked players with less penalty)
  2. How does this work with the rating tooltip and reporting ratings in the logs? (Show rating tooltip for opponent of unrated player pokemon-showdown-client#1330). Additionally, rating is 'leaked' through 'Watch a Battle'

Forum Suggestion: https://www.smogon.com/forums/threads/find-unrated-battles.3652400/

@Zarel
Copy link
Member

Zarel commented Jul 23, 2019

I was considering a thing where unranked accounts are capped at a rating of 1200 or something.

@Zarel
Copy link
Member

Zarel commented Jul 23, 2019

Rating is also leaked through how much your opponent gains in rating (can be put into the Elo formula to solve for opponent's rating). I'm not sure if that's something we should worry about.

@Zarel
Copy link
Member

Zarel commented Jul 23, 2019

We could just make all their ratings 1000 for the purpose of rating updates, but that would be bad for the players who got matched with them.

@Slayer95
Copy link
Contributor

Slayer95 commented Jul 23, 2019

We could just make all their ratings 1000 for the purpose of rating updates, but that would be bad for the players who got matched with them.

No need to tinker with the rating values. Just forcing a low K-factor (volatility) for unrated vs rated battles should do the job. We also have the ladder logs as a countermeasure anyway, right? That would handle intentional forfeits, which are the issue at hand. Do expect more forfeits from unrated players, though, but in the end that factors into their actual rating.

Rating is also leaked through how much your opponent gains in rating (can be put into the Elo formula to solve for opponent's rating). I'm not sure if that's something we should worry about.

It should be possible to hide the identity of the (rated) opponents of an unrated player client-side. (Moderators could still handle issues by joining the battle and checking their name themselves.)

reporting ratings in the logs

Hiding the ratings client-side should be enough. It's not like this is a critical feature or anything to go out of our way for a complex (|split|) server-side implementation.

@Slayer95
Copy link
Contributor

Slayer95 commented Jul 23, 2019

Also, the way to go for this would be to mimick this, right?

having separate usernames for the ranked and unranked modes.

We could have a user ID namespace unrated_${userid} in the ladder tables.

(I was considering having separate ladder tables to support fast periodic resets of unrated accounts, but looking at the code it seems that doing so would require a rewrite of rating updates, to fetch & edit data from multiple tables at once.)

@Zarel
Copy link
Member

Zarel commented Jul 26, 2019

@scheibo in #5646 (comment)

And is #5648 approved?

I might as well answer here: There are a lot of complexities in implementation which have yet to be hashed out, but I support the idea of unranked laddering being possible in any format, and for unranked and ranked users to be matched with each other.

@scheibo
Copy link
Contributor Author

scheibo commented Jul 26, 2019

OK, lets hash them out?

What concerns do you have if we:

  1. use a separate ID namespace
  2. hide ratings for the unrated player clientside
  3. potentially cap unrated rating to avoid boosting?

What else is necessary to make this work?

@Zarel
Copy link
Member

Zarel commented Jul 26, 2019

Separate ID namespace

sgtm

Hide ratings for unrated player

So spectators and the opponent would see the rating update? I'm not a huge fan of this, it defeats the reason why I want to ladder unrated (not having to worry about my own rating because no one knows it).

potentially cap unrated rating to avoid boosting?

sgtm

Are the battles considered rated or unrated if one player is rated and one is unrated? How should its rating be reported in the battle list (currently it's "lower of the two ratings")?

@Zarel
Copy link
Member

Zarel commented Jul 26, 2019

Oh, Slayer95 said some more words about hiding the rated player's identity from the unrated player. I would probably prefer the other way around?

@scheibo
Copy link
Contributor Author

scheibo commented Jul 26, 2019

Oh, i missed the hiding the identity bit. But why would you want the other way around? Then the unrated player would be able to detect their approx rating based on who they get matched with?

So spectators and the opponent would see the rating update? I'm not a huge fan of this, it defeats the reason why I want to ladder unrated (not having to worry about my own rating because no one knows it).

Whats the alternative? As you say yourself "but [displaying a misleading ratings update] would be bad for the players who got matched with them."

Are the battles considered rated or unrated if one player is rated and one is unrated? How should its rating be reported in the battle list (currently it's "lower of the two ratings")?

I think if any is unrated the battle needs to be considered unrated (not showing ratings in watch a battle, no identities?). Though this seems soboptimal for the rated player and specs? @Slayer95 , thoughts here?

@Slayer95
Copy link
Contributor

Slayer95 commented Jul 26, 2019

Oh, Slayer95 said some more words about hiding the rated player's identity from the unrated player. I would probably prefer the other way around?

So, what about double-blinding instead? Note also that starting from the moment in which a rated player gets matched with an unrated player, they can estimate their opponent's rating as their own, though limiting the knowledge to an "estimate" as opposed to the "actual" value might be what you look for.

So spectators and the opponent would see the rating update?

We can hide rating updates from spectators and opponents in every battle altogether. I don't think we would lose anything with that -assuming that replays still show a global MMR for the battle.

I think if any is unrated the battle needs to be considered unrated (not showing ratings in watch a battle, no identities?). Though this seems soboptimal for the rated player and specs?

That's sound, although extreme. There are some bullet points I have to add:

  • Even though knowing the rating of your opponent is convenient, their Elo alone fails to guarantee that their Elo has already converged to their skill (and people mostly don't check for deviation in Glicko/GXE anyway). Therefore, facing a player with hidden rating wouldn't pose any distinct type of risks from facing a fresh smurf account.
  • If we do blind people from foe's ratings, it's possible that there would be some degree of backslash from a few hardcore players.

From these, and based on the principle of "partial knowledge" aforementioned, I'd argue it would be viable to use a different approach to "hidden" ratings, regarding 2nd/3rd parties. So, while the unrated player would still be oblivious to their rating value, their opponent and spectators would be shown a very rough estimate, by rounding to the nearest multiple of 100 or 200. That's also what would be fed to the battle MMR calculator and shown in the "Watch battle" list.

So, to summarize:

  • Double-blinded identities.
  • Spectators still get to know their identities.
  • Other players are shown an MMR estimate of the unrated player, which they could basically already calculate. Bonus points if the margin of error matches the MM algorithm.

@Zarel
Copy link
Member

Zarel commented Jul 26, 2019

I feel like we have very different use-cases for unrated battles. For me, it's because I don't want to worry about other people knowing my rating. Showing it to spectators would kind of ruin the purpose.

It seems like maybe the best way to preserve this is to have the unrated players stay at rating 1000? Or just get matched randomly?

@Slayer95
Copy link
Contributor

Slayer95 commented Jul 26, 2019

I don't consider what the spectators get to know as a critical component of this. That's why I list letting them know [identities and MMR estimate] as part of my proposals

However, if it is critical to you, it's fine by me to fully hide anything required. "Watch battle" would be an issue, though. Would we then just filter unrated battles out?

@Zarel
Copy link
Member

Zarel commented Jul 27, 2019

Yes. We might actually also design it so unrated battles are only matched with rated battles as a last resort, so it comes up rarely enough that people don't mind?

@Slayer95
Copy link
Contributor

Sure. If that results in high wait times, however, matchmakingOK() could simply have a p chance to return false in Rated vs Unrated.

@Slayer95
Copy link
Contributor

Regarding matchmaking with random opponents, as well as capping MMR.

If the unrated player keeps track of their winrate with whatever means, that would allow them to estimate their GXE or WCAO as their WR, which would no longer gravitate towards 50%. Not fond of those ideas.

@Zarel
Copy link
Member

Zarel commented Jul 27, 2019

I would also match any two unrated players with each other, regardless of rating, over matching an unrated player with a rated player.

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

3 participants