Failed_To_Load
An example output recommendation for top lane. Note - This image was taken before getting a Riot API Production key and as such the data was extremely lackluster, leading to counterintuitive recommendations.

What is it?


The League of Legends Champion Select Helper was designed to allow solo queue players to optimize their potential picks, and to learn by example how to pick to different situations.
Disclaimer: This program will recommend champions that you may not play (or even own, though this is slotted to be changed - See Upcoming Changes for more info) and as such works best when used by a "Jack of All Trades" player because it will recommend whatever fits the situation best.

All this is to say that you should use this program once you're at least familiar with every champion, and are willing to try out new things. Also, do not rely solely on this feedback, use your own judgement and intuition. This just provides a statistical summary of the situation to base your choice on.


How it works

First, you will be asked to input some basic data such as Summoner Name, Region, and what team you are on (you can see this by which team has the first ban, as well as the color of the text "Your Team" above the first pick). Currently, what role you will be playing is included in this stage but will be modified - and possibly moved - to match next season's champion select.

Then, you will need to select all the bans and picks as they happen up until it is your turn. The currently banning team, or currently picking player will be highlighted. One note for this phase is that blue team is statically on the left side of this GUI, and red team is on the right, while in the client regardless of your team you will be on the left. The search bar functions the same as it does in the client. Simply click on a champion's icon to ban/pick (there is no lock in function yet, I'm debating between this and an undo button. For now, if you make a mistake you have to restart the program).

Processing the data


At the top level, the program goes through every possible pick for your given role (currently defined by a list of meta picks, but will be changed) and assigns each a score. This score is based on how well they function with the champions that are already picked (determined from riot API, statistical survey of games with both champions on the same/opposing teams). After calculating what the "average" player's score is, it multiplies that score by a factor dependent on your history with the champion. Not yet implemented is another scaling factor to represent how generically strong the champion is (picks like Poppy and Talon currently have inflated winrates because usually the only people playing them are mains, so the average player won't perform as expected)

This part will be quite in-depth about the function I used and how the program calculates a score for each champion. No TL;DRs here, so skip if you will.

This is the graph of the function we used to model the winrate. The three major reasons this fits well are
  1. The center (x = 0) corresponds to a y output of 0.5, or what should be the statistical average winrate for all champions
  2. The extremes approach 0 and 1 as x goes towards infinity in either direction. Again, this is the logical limit of a winrate model
  3. There is a clear idea of diminishing returns*, that is to say that as you continue shifting X right, the gains in Y lessen
    * A logical explanation of why this matters: Let's say you're examining Kog'Maw, who we will say has an average winrate of 50%. If you put him on a team with Lulu, his winrate should probably go up from what we all know about Juggermaw comps. So for this example let's say his winrate with Lulu on the team is 65% (additively 15% higher, multiplicatively 30%). For the sake of this explanation, let's make up three other hypothetical champions who help Kog'Maw equally (65% winrate). Now if you didn't have diminishing returns, the resulting winrate of Kog'Maw plus these 4 monsters is either additively 4*15% higher or 60% higher, resulting in 110%, or multiplicatively 130%^4 or 286% of its initial value, resulting in 143%. Neither of these makes sense in terms of math because probabilities should not exceed 100%. In English: since each additional support is increasing Kog'Maw's strength less and less (what's the difference between 2k and 2.5k hp shield), it makes sense that you'll have diminishing returns with more and more champions who are likely to win together.

The process:



As summarized in the gif, the way we assign a score has three steps.
  1. Calculate a global "x" or horizontal position to describe the champion's average winrate
  2. Calculate a horizontal offset or "Δx" to describe how much each pick affects the champion in question
  3. Sum the offsets, and apply the total shift to x, then run that through the function to calculate a score.

Upcoming Changes

This section has not been completed yet. Check back soon!

Requirements and Installation

This section has not been completed yet. Check back soon!