Page 1 of 1

Matchmaking - How Would You Do It

PostPosted: Mon Aug 25, 2014 11:13 pm
by runewake2
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

Re: Matchmaking - How Would You Do It

PostPosted: Thu Sep 25, 2014 1:22 pm
by degaston
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.

Re: Matchmaking - How Would You Do It

PostPosted: Thu Sep 25, 2014 5:58 pm
by runewake2
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.

Re: Matchmaking - How Would You Do It

PostPosted: Fri Sep 26, 2014 8:29 am
by macbone
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.

Re: Matchmaking - How Would You Do It

PostPosted: Fri Sep 26, 2014 5:30 pm
by runewake2
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!

Re: Matchmaking - How Would You Do It

PostPosted: Thu Oct 02, 2014 6:55 am
by Dukasaur
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.