Every time a match is played in addition to contribution points, etc.. each team member build should be recorded. There should be algorithms in place to perform “near” matching (e.g. execute winning games played on current Hammer Scrapper meta and also include in search results builds that are within 15% variation of current meta. This is possible. I could code the algorithm to do it within about half an hour.
Run map reduce jobs a few times a day to data warehouse information to be used in matchmaking. This will add the ability to query most common winning team combination, vital for helping with solo queuing.
Use this data to note common patterns than seem OP. Bookmark for balance review
Solo queue
When player enters queue
Stick with current ELO matchmaking as first pass filtering
Add consideration for players build and # of wins player has had on that build
If high MMR player is experimenting with new build for the first time, this is data the match making algorithm should have available. Consider placing them with lower MMR team mates and lower MMR opponents.
Have match making balance team composition around players use of pvp meta and near meta builds (this can be done) to make sure one team is not OP. This is now needed because the Elite Spec meta builds are so much more powerful than everything else
Premade Queue
Do not go to trouble to give us a duo queue. Instead force all players in party who queue to queue for premade. This will at worst case resort in 32 split with the majority of the team premade and two members being a duo. Duo’s don’t need their own queue for this reason.
Premade match making should not just take into account individual players MMR but also consider a team MMR score. For example if NineLives.9234 and KillBill.2353 both have a record of doing exceptionally well together when teamed that should factor into the match making. Yes, this is more complex than simply tossing everything to the ELO algorithm. Match making should be data-intensive and complex and there should be a degree of machine learning going on server side to make these matches as fun and competitive as possible of everyone.
Ban those manipulating MMR
Have the nightly processor looking for cases of premade and solo queue consecutive losses followed by consecutive wins. Juxtapose with players League Division standing (number of pips held for division when losses began, etc…). There are several things that could be tracked and utilized to infer manipulation I won’t list here.
Software Engineer of many years. 3+ years working with big data. Would contract at reduced rate to work with your software engineers to implement if interested.