Conquer Club

Matchmaking - How Would You Do It

Archival storage to keep things organized and uncluttered. Can't find what you need? Search for old topics here.

Moderator: Tech Team

Forum rules
Please read the Community Guidelines before posting.

Matchmaking - How Would You Do It

Postby runewake2 on Mon Aug 25, 2014 11:13 pm

A few weeks ago I released a very early preview of Conqueror version 5 for Windows Phone. With that I mentioned that a few fun new features would be coming in alongside the standard bug fixes and improvements. I'm here today to talk about one of the most significant of them and the one I think people will enjoy the most: Matchmaking. The feature is far from done and the source isn't even on my Repo yet. I've got everything but choosing the games done and it's with that that I need your help. I've got the technical side of things mostly figured out, but its the practical side I'd like more input on.

First off, some background. Matchmaking started because I've never liked browsing the games looking for ones I want. If you care about points you want to find players that attend games and also have a score similar to yours. I wanted something that could find open matches with players around my same skill level and preferably ones that didn't miss turns or anything like that. As such, Matchmaking was born. Because of a number of API limitations the feature is quite limited and often will not find you the best matches. Indeed it may skip over some that would be great for you. The issue is that we are limited in the number of API calls we can make per device in a set period of time. Because of this I can't get the information of every player. While I could do a batch search and find every player at once you hit other issues. Mainly the maximum length of a GIT request. With that technical babble out of the way the conclusion is this: corners have to be cut. Ideally, I will only make 2 calls to the API for this entire process. One to get the maps and one to get information about the players in those games.

With this in mind, I can, at most retrieve the information for a dozen or so players at any one time. Even with huge amounts of caching the amount of data required is immense and likely impossible to get with the current API. As such I'm curious how people would like this feature to work. Keep in mind that while this is currently a feature targeting Windows Phone only it will be open sourced in C#/.NET and also added to my other apps as they become available. The two options I see are this.

1. Select a few maps (5 or so) and get every current players details. Sort them by the closest point value to your own and let you choose based on that.
2. Choose a larger set of maps and pick out a few players from each. Average those players points and base the game off of that average. This would be less accurate but would provide more results.

Even after picking one of these strategies their is a second challenge of actually figuring out which game is a closer match than the other. Should it be based on number of turns missed, points, user ratings, number of games played or something else? I can theoretically make this as complex as I want, but I don't have a great grasp on what the greater community values most/least. As such, any suggestions towards either of these issues would be helpful.

I intend to have a beta of the matchmaking source finished by the end of the week so you should be able to test it out soon! Until then here are two screens from the Windows Phone version of the matchmaker (The UI is not final and may change).

Image
Conquer Club Mobile Apps: Conqueror for Windows Phone and Windows 8
Conqueror's going Open Source: Conqueror on CodePlex
User avatar
Corporal 1st Class runewake2
 
Posts: 95
Joined: Sun May 23, 2010 1:50 pm
Location: Betwixt Two Curly Braces

Re: Matchmaking - How Would You Do It

Postby degaston on Thu Sep 25, 2014 1:22 pm

I posted a similar suggestion about a week ago, and then I saw this.

I can't try your method because I don't have a Windows phone, but I think it makes more sense for it to be a part of CC instead of an external app. CC has all of the information it needs to do this, and it would be open to everyone.

I would like the option to set a range for opponents, but I know that idea has been rejected many times before.

It's frustrating when the game finder lists many games with slightly different options, and all of them need several people in order to start. Something like this could really help improve the level of activity here.
User avatar
Brigadier degaston
 
Posts: 989
Joined: Fri Apr 01, 2011 10:12 am

Re: Matchmaking - How Would You Do It

Postby runewake2 on Thu Sep 25, 2014 5:58 pm

My current implementation is currently only in beta. But I understand your points. I don't have much influence over what gets developed on the site itself, only my own apps unfortunately. However, my apps are open source so anyone that knows C# or really any .NET compatible language could work with my code to get it to pretty much any platform.

My current algorithm does the following:
1. Allow the user to select a map and the settings they want the game to include.
2. Download the first 200 maps that match these criteria.
3. Compare games until it has a working set (~10-20 games)
4. Download the players scores in all of those games and find the average for that game.
5. Rank the games based on the difference between the players own points and the games average points.

The idea here isn't to create an unbalanced game or enable finding games that should be easy wins, it's to find games that are balanced.

I'd also point out that there is no "range" limitation on this that prevents higher ranked players from joining later and screwing up the balance. That would indeed cause issues as it'd allow people to find games that could be easily won.

Thanks for the feedback, I'll take some of the points you made in your post under consideration.
Conquer Club Mobile Apps: Conqueror for Windows Phone and Windows 8
Conqueror's going Open Source: Conqueror on CodePlex
User avatar
Corporal 1st Class runewake2
 
Posts: 95
Joined: Sun May 23, 2010 1:50 pm
Location: Betwixt Two Curly Braces

Re: Matchmaking - How Would You Do It

Postby macbone on Fri Sep 26, 2014 8:29 am

Wow, this is impressive!

Some things I'd be interested in for match-making purposes:

- Points - it'd be great to find games with players at my point level or higher
- Experience on the maps - Here, I'd be looking for players at roughly my experience level on the map, weeding out map experts on each map.

However, for me, settings are the single greatest determiner. It's easy enough to scan through the games available on the settings I'm looking for. In general, if I can find higher-ranked players on the settings I'm looking for, I'm going to join those games.

Ratings are useful, too, yeah. For looking for teammates, turns taken would be key, too.
User avatar
Colonel macbone
 
Posts: 6217
Joined: Wed Jun 03, 2009 7:12 pm
Location: Running from a cliff racer

Re: Matchmaking - How Would You Do It

Postby runewake2 on Fri Sep 26, 2014 5:30 pm

Unfortunately I don't think that the current API makes it possible to do the Map Experience thing. I can only make 5 calls to the API for this and currently already do two. I'd maybe be able to get details about 1 or 2 players maps played before I broke that limit. The settings was a thing I really wanted to get right and I think I have. The good news is this should be coming to Windows 8 and as a Windows desktop client as well shortly after I release it on Windows Phone. Thanks for the suggestion, if you have more I'd love to hear them!
Conquer Club Mobile Apps: Conqueror for Windows Phone and Windows 8
Conqueror's going Open Source: Conqueror on CodePlex
User avatar
Corporal 1st Class runewake2
 
Posts: 95
Joined: Sun May 23, 2010 1:50 pm
Location: Betwixt Two Curly Braces

Re: Matchmaking - How Would You Do It

Postby Dukasaur on Thu Oct 02, 2014 6:55 am

The Map Experience suggestion would be amazing. Okay, I can accept that it's not technically possible. But please keep it in the back of your head, in case something down the road makes it possible.

In answer to your primary suggestion, I think points would be everyone's prime consideration. Ratings would be second.

I don't know if it would be possible to look back and see if you've beaten this player before, but many people are looking for unique wins (for medal purposes) and if this would be possible then that would make it enormously more useful.

As a final suggestion: previous saved searches.
“‎Life is a shipwreck, but we must not forget to sing in the lifeboats.”
― Voltaire
User avatar
Sergeant 1st Class Dukasaur
Community Coordinator
Community Coordinator
 
Posts: 27718
Joined: Sat Nov 20, 2010 4:49 pm
Location: Beautiful Niagara
32


Return to Tool Archives

Who is online

Users browsing this forum: No registered users