{"action":"created","issue":{"url":"https://api.github.com/repos/Zarel/Pokemon-Showdown/issues/1910","labels_url":"https://api.github.com/repos/Zarel/Pokemon-Showdown/issues/1910/labels{/name}","comments_url":"https://api.github.com/repos/Zarel/Pokemon-Showdown/issues/1910/comments","events_url":"https://api.github.com/repos/Zarel/Pokemon-Showdown/issues/1910/events","html_url":"https://github.com/Zarel/Pokemon-Showdown/pull/1910","id":83366002,"number":1910,"title":"Improve matchmaking","user":{"login":"Slayer95","id":4925744,"avatar_url":"https://avatars.githubusercontent.com/u/4925744?v=3","gravatar_id":"","url":"https://api.github.com/users/Slayer95","html_url":"https://github.com/Slayer95","followers_url":"https://api.github.com/users/Slayer95/followers","following_url":"https://api.github.com/users/Slayer95/following{/other_user}","gists_url":"https://api.github.com/users/Slayer95/gists{/gist_id}","starred_url":"https://api.github.com/users/Slayer95/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Slayer95/subscriptions","organizations_url":"https://api.github.com/users/Slayer95/orgs","repos_url":"https://api.github.com/users/Slayer95/repos","events_url":"https://api.github.com/users/Slayer95/events{/privacy}","received_events_url":"https://api.github.com/users/Slayer95/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/Zarel/Pokemon-Showdown/labels/client","name":"client","color":"eb6420"},{"url":"https://api.github.com/repos/Zarel/Pokemon-Showdown/labels/enhancement","name":"enhancement","color":"bfd4f2"}],"state":"open","locked":false,"assignee":null,"milestone":null,"comments":6,"created_at":"2015-06-01T07:43:24Z","updated_at":"2015-06-04T23:09:04Z","closed_at":null,"pull_request":{"url":"https://api.github.com/repos/Zarel/Pokemon-Showdown/pulls/1910","html_url":"https://github.com/Zarel/Pokemon-Showdown/pull/1910","diff_url":"https://github.com/Zarel/Pokemon-Showdown/pull/1910.diff","patch_url":"https://github.com/Zarel/Pokemon-Showdown/pull/1910.patch"},"body":"- Explicitly separate queues for each format, as formatid-queue key-value pairs of GlobalRoom#searches, which replaces GlobalRoom#searchers.\r\n- The matchmaker now tries to pair players with the nearest rating possible first (binary search), rather than pairing any two players within the valid MMR.\r\n- GlobalRoom#matchmakingOK return value now is `false` for \"out of range\", while `null` is used for any other reason.\r\n- Enough validation has been added to GlobalRoom#addSearch so that queues no longer contain corrupted data at any time.\r\n- Cancelling a ladder search no longer cancels challenges.\r\n- User#searching is now a dictionary for the formats currently being searched.\r\n- `|updatesearch|{searching}` messages now send an array as the `searching` value."},"comment":{"url":"https://api.github.com/repos/Zarel/Pokemon-Showdown/issues/comments/109085318","html_url":"https://github.com/Zarel/Pokemon-Showdown/pull/1910#issuecomment-109085318","issue_url":"https://api.github.com/repos/Zarel/Pokemon-Showdown/issues/1910","id":109085318,"user":{"login":"Slayer95","id":4925744,"avatar_url":"https://avatars.githubusercontent.com/u/4925744?v=3","gravatar_id":"","url":"https://api.github.com/users/Slayer95","html_url":"https://github.com/Slayer95","followers_url":"https://api.github.com/users/Slayer95/followers","following_url":"https://api.github.com/users/Slayer95/following{/other_user}","gists_url":"https://api.github.com/users/Slayer95/gists{/gist_id}","starred_url":"https://api.github.com/users/Slayer95/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/Slayer95/subscriptions","organizations_url":"https://api.github.com/users/Slayer95/orgs","repos_url":"https://api.github.com/users/Slayer95/repos","events_url":"https://api.github.com/users/Slayer95/events{/privacy}","received_events_url":"https://api.github.com/users/Slayer95/received_events","type":"User","site_admin":false},"created_at":"2015-06-04T23:09:04Z","updated_at":"2015-06-04T23:09:04Z","body":"I guess it should try to periodically pair the top 2 (or the top player with the highest-ranked player not rejected by non-MMR criteria). It's to be noted that it would only work well because we have a minimum Elo.\r\n\r\nChecking the last 3 opponents is unneeded for the most popular formats. However, under certain circumstances (format identity, daytime, Elo distribution of online players) the likelihood of being matched against a recent player other than the last one is very high, and this should be avoided."}}