Navegando por reddit veo el post de un user que harto de los emparejamientos caóticos y absurdos con afks, trolls, gente con ping y demás, decide investigar el código real de susodicho matchmaking, cuanto menos curioso y chocante.
Texto original (ingles):
Mi Historia:
I am always the best player in my team, but yet I'm not winning as much games as I should. I crush my lanes, focus on - and get - objectives, but yet my team fcks up, preventing me to reach my much deserved high Diamond / Challenger spot.
Is it my fault? Am I the common factor? Hell no, I've only lost a lane once, and that was top versus a Teemo. If a Lux mid goes 0/11/0 after 20 minutes, how am I to blame? If my team ignores my pings or simple instructions, or solo around the map, what am I to do? It's not me, it's them.
That's what I thought until today. Today, I've discovered that the real scmbag is, in fact, Riot, and I have the prove to back it.
Code investigation:
I'm a computer science major and I decided to investigate the matchmaking algorithm, because let's admit it: we all feel that something fishy is going on. I went to my "C:\Program Files\Rito Games" and imported the project into my IDE. Now, the subclass of Game, RankedGame, has a method called "createTeams()".
This method creates two teams for a game (game.team1 and game.team2). (Oddly enough, you are always part of game.team1, probably due to a mirror programming pattern.) In this method they use a creator pattern to composite those two teams. Your team gets a "game.team1 = Team.buildOwnTeam()", and the other team gets "game.team2 = Team.buildOtherTeam()". For now, there's nothing strange. Right? Indeed, the dirt starts in the static buildOwnTeam() method.
You can find pseudo-code of the buildOwnTeam() method here: http://pastebin.com/y27TZS1N.
The algorithm checks if your winratio is above 50% or below, and creates 5 players according to it. You are the first player, and the second and third player are always two random players that have the same skillcap as you, and are able to play the game as good as you to a certain extend. When your winratio is below 50%, the fourth and fifth players are also random players. HOWEVER, when your winratio is above 50% you get a so-called "Balancing Player" (BP), and a 50% chance of getting another "Balancing Player".
You can find the pseudo-code for findBalancingPlayer() here: http://pastebin.com/J4xTBe7U. To make it short: it finds a player with either 1) a very low winratio, 2) a lot of reports, 3) a bad internet connection, 4) a lot of trollpicks.
So, when you get a guy that really sucks and/or feeds, it's probably a BP. Sometimes you have a second player that's bad, so that's because you were unlucky and drew a second BP.
I still have to investigate the BuildOtherTeam() method, but it looks unfair as well. I've already discovered that team2.player1 = Player.getOneTrickPonyMid(), team2.player2 = Player.getConsistentADC(), team2.player3 = Player.findOtherPlayer(), team2.player4 = Player.findOtherPlayer(), team2.player5 = findOtherPlayer().
To conclude:
Riot prevents you from easily getting a winratio above 50%. There are probably two reasons for this.
The first reason is balance. Although it might be unfair, it does keep your winratio around 50%. Haven't you ever found it odd why so many people's winratio is around that percentage?
The second reason behind this is commercial. You have to play a lot of more games to reach a higher league, making you spend more time on LoL. This makes some people bored of the standard skins, causing them to buy RP to purchase skins.
Riot Games, if you are reading this: I've lost two promos for Silver IV in a row due to this unfair algorithm and I demand compensation. Otherwise, legal actions WILL follow.
TL;DR If you are playing ranked and your winratio is above 50%, you get bad players in your team.