Skip to main content

Forums / Games / Halo 5: Guardians

Matchmaking Infrastructure

OP NNMS MXMS

I included this as a small element in another post that was quite long and had a bunch of other topics in it. I would like to take the opportunity to describe this particular one in more detail, as I think it warrants separate consideration.

In the H4 system, players choose gametypes by searching in a list that contains several different gametypes. The voting options are randomly chosen from the available types. This has the following drawbacks - among many (quote box just for ease of reading):

Quote:
1. You may have to play a gametype you do not want to play - especially as a lone wolf.

2. You cannot restrict players from leaving lobbies when a gametype they do not want is selected.

3. Skill matching is done on a playlist level rather than a gametype level, which matters for players (like me) who are reasonably good at one game but not at another.

4. You must limit the number of gametypes in the list, which limits the player pool available for matching and requires more playlists to cover all types.

4a. Due to limiting the player pool, skill matches are poorer, which dissuades players from playing, further limiting the pool.

4b. Population may not support all the lists, leading to cutting gametypes from the available options.

5. Gametypes with a different number of players cannot be combined into the same list.

6. Players can only search one list at a time.
There is a way to do matching that avoids all of these drawbacks. I have actually modeled and tested this in R (a statistical programming language). Here is how:

Instead of being done on a playlist basis, matching is done on a gametype basis. For each iteration, the matching algorithm orders all players based on time-in-queue for each gametype. It takes the oldest player in each queue and builds the best possible match. It compares all of the matches for the overall best match, and places those players into a game. Then it returns to the beginning, adds new players to the queues, and repeats.

Having it only draw matches from the oldest in queue ensures both a maximum wait time and removes the statistical bias for smaller team sizes (since those would normally make the better match). Note also that the gametype is pre-selected at the time the algorithm makes the match.

Playlists, then, become a GUI item - not a structural one. The purpose of the playlists is only to organize the gametypes in a logical manner for the players. So, for example, you could have:

--------------------------------------------------
[X] Search by Category..........[-] Search by Game Type..........[-] Search by Team Size

RANKED GAMES

SLAYER
[X] Expand
.....[-] Doubles (2v2)
.....[X] Squad (4v4)
.....[X] Squad Regicide (4v4)
.....[-] FFA (8 players)
.....[-] FFA Regicide (8 players)
.....[X] Multi-Team (3v3v3)
.....[-] SWAT (4v4)

OBJECTIVES
[-] Expand

SPORTS
[X] Expand
.....[X] Grifball (4v4)
.....[-] Ricochet (4v4)

SOCIAL GAMES

SLAYER
[X] Expand
.....[-] Squad (4v4)
.....[X] Heavies (6v6)
.....[X] Big Team (8v8)

ACTION SACK
[-] Expand
--------------------------------------------------

When the player goes to the MM screen, he sees only the underlined headers and the option to search by category (shown), or by gametype / team size (with their appropriate headers). The default is that all options under the header are enabled, but the header can be expanded to deselect certain games. So if someone wants to just jump into Slayer but doesn't care about team size - click Slayer and go. If someone wants just CTF, search by gametype, click CTF, and go. If someone wants just Oddball, bring up Objectives, deselect everything but Oddball, and go. If a player is in a party, only those gametypes that allow that party size would be included in the selection.

The real benefit of this is that many players are willing to play multiple gametypes (CTF, Extraction, Dominion, 4v4 Slayer), but these are often separated into different lists. This forces them to choose one list, and prevents them from being part of the player pool from the other lists. If it is done by gametype, players can now be part of the player pool for multiple lists. This increases the player pool available for matching for EVERY gametype.

In the limit that every player only wants to play a single type, the player pool becomes the current system, but with the important advantage that the pool is limited before matching rather than by players backing out of the lobby once the match has been formed. If players select multiple gametypes, this system will always generate superior quality matches in less time than H4 does. Here's an example why, using the defunct Slayer Pro list:

Total population who want to play Slayer: 5,000
% who only want to play Infinity: 70%
% who only want to play Pro: 5%
% who would play either: 25%

With the split lists, Pro would only have a population of 250, guaranteeing poor matches. But with the combined lists, Pro would (actually, did) get outvoted the vast majority of the time - so those players who wanted to play Pro were screwed. However, with the gametype-based search, the effective matching population becomes:

Infinity: 4,750
Pro: 1,500

And you can definitely get good games with reasonable match times in a 4v4 list with a population of 1,500 players.

The gametype matching method yields the following benefits:

Quote:
1. Higher matching populations for every gametype = faster matches and better skill matching.

2. Since gametypes are preselected, lobbies can be locked, reducing the need for JIP due to people leaving lobbies.

3. No need to separate gametypes by number of players.

4. Skill matching can be done on a gametype-specific basis.

5. Lists can be consolidated further than possible today, making a less intimidating matching main menu.

6. Players can search across lists and gametypes to select all of the games they are willing to play.

7. Substantially more accurate statistics at 343i for tracking the popularity of gametypes.

And, most of all:

8. Players are not forced to take a chance on having to play something they don't want to play when searching for something they do want to play.
Please consider something like this for H5. It is one suggestion that, I think, virtually all players would appreciate.
This would be my formula

Ranked Playlists

- FFA (8 players)
- Team Doubles (2v2)
- Team Slayer (4v4)
- Team objective (5v5)
- Squads (4v4, requires full party, both slayer and objective)

Un-ranked Playlists

- FFA (8 players)
- Multi-team (3v3v3v3)
- Griffball (4v4)
- Team Swat (4v4)
- Team Snipers (4v4)
- Social Squads (5v5, both slayer and objective)
- Dominion/Invasion/Whatever's cool next Halo (6v6)
- Big Team Battle (8v8)
- Featured Playlists (Including community maps i.e race tracks, zombie maps ect)
Quote:
Stuff
I'm not sure you understood the main point. I wasn't proposing a playlist organization; I was explaining how doing matching differently would have all kinds of benefits - including allowing the playlists to be organized in any fashion - be it my example, your proposal, or something entirely different.
I know, and all of that was very long winded. The only thing I really noticed was the organisation of the playlists themselves.
I had a little read but I wasn't really on board with the idea. Searching by gametype creates way to many options and could spread the players even thinner. It maybe nice to pick the exact thing you want but there would be so many options, on top of which there is a variable of players per game to consider.

As for quicker searches created by using a broader selection of gametypes, I would prefer to see the playlist structure I suggested along with a quick match option in the un-ranked section.

On a further note, perhaps you could have all un-ranked playlists to include JIP, but after a game, the lobby stays and re-organises the players based on how everyone did, and also brings in new players to fill empty spaces rather than placing everyone back into searching for games. This would make it quick and easy to get into a game, and keep you in the lobby giving you more game time. Ranked playlists however should have no JIP and you should search for new players each time.

As for the actual structure of how to find players, I believe for Ranked Playlists (using 1-50 skill system as an example) players should search for their team within a range starting at 1 and increasing to 10 as time goes. Once they have their team, the game should take the average of the players and that average should be used to find the closest skilled team to play against. In Un-ranked playlists the game should still find you a team, but not based on skill(yet), it should find anyone. Once in teams, you will find a team to play based on your average skill that will be completely invisible for Un-ranked. This allows for more fair un-ranked teams but keeping it so you can find Halo players of any skill level rather than sectioning people of into categories.

I haven't created programs to test these ideas but I would be more than happy if I saw this put into play.
I've always really liked this idea and think it would work out great.
Spoiler:
Show
I Like that idea of yours. It's kinda what I had in mind.
Though there should still be a quicker/easier/less complex way for those who are new and stuff.
Quote:
I had a little read but I wasn't really on board with the idea. Searching by gametype creates way to many options and could spread the players even thinner. It maybe nice to pick the exact thing you want but there would be so many options, on top of which there is a variable of players per game to consider.
It can spread players no thinner than the current system. It is not mathematically possible for this to result in a gametype having less population than the current method if you define gametypes in the same manner. It must be at least equal.

For organization, this method allows the playlists to be freely organized without affecting either skill ranks or the matching process. 343i will have free reign to reorganize as they wish. That is the exact opposite of the current way, where the playlists and matching algorithm are tied together.

Lastly, for options, it is not necessary to have more options than current. Consider CTF: you would not necessarily need (but you could, if you wanted) to split CTF into 2-flag, 1-flag, and neutral. It could just be "CTF", with the algorithm picking the variant randomly behind the scenes. Or it could just be "CTF", with the variant chosen at the map selection screen. What would be easiest for players can be discussed. The nice thing about the above matching method is that multiple ways are possible without affecting skill ranks or matching. If one way doesn't work, 343i could reorganize to do it differently without changing any matching programming. All that needs to change is how the gametypes are organized in the table.

Quote:
On a further note, perhaps you could have all un-ranked playlists to include JIP, but after a game, the lobby stays and re-organises the players based on how everyone did, and also brings in new players to fill empty spaces rather than placing everyone back into searching for games. This would make it quick and easy to get into a game, and keep you in the lobby giving you more game time. Ranked playlists however should have no JIP and you should search for new players each time.
I agree with ranked play getting a new lobby each time. If you want to play with the same set of players, then invite them to a party to stay together. Doing brand-new lobbies for each game (like when 343i did the tournament) should help reduce or eliminate the need for JIP.

However, I don't see why you would make unranked different. Reducing the need for JIP in unranked play is important, too. I would take your new lobby idea and apply it universally (with unranked allowing JIP if there are quits after the game starts, but JIP avoided or kept to a very very tight window for ranked).

In short, if you want to play with friends, invite them to your party.

Quote:
As for the actual structure of how to find players, I believe for Ranked Playlists (using 1-50 skill system as an example) players should search for their team within a range starting at 1 and increasing to 10 as time goes. Once they have their team, the game should take the average of the players and that average should be used to find the closest skilled team to play against. In Un-ranked playlists the game should still find you a team, but not based on skill(yet), it should find anyone. Once in teams, you will find a team to play based on your average skill that will be completely invisible for Un-ranked. This allows for more fair un-ranked teams but keeping it so you can find Halo players of any skill level rather than sectioning people of into categories.
Unranked lists still need to use skill rankings for matching purposes. If you do not, blowouts will be the norm, not the exception. The only difference is that skill is not shown for unranked lists (and this is a pretty universal feature for all matchmade games - not just Halo or FPSs). So that portion of your paragraph is a no-go.

However, the expanding tolerance for finding a good match as match times increase is a good one. It is already part of the H4 formula, as well as my simulation. The only small issue is that you cannot restrict it as you have done. The restrictions need to be more complex - primarily due to parties - but also due to population, where a max tolerance of 10 will result in no match ever being found. Regardless, time-varying tolerances for defining a "good" match were, indeed, built into the model I used. They are not necessarily indispensable for a matching system, but they are critical for a good matching system. So your point there is spot-on.
Quote:
I Like that idea of yours. It's kinda what I had in mind.
Though there should still be a quicker/easier/less complex way for those who are new and stuff.
When you select the MM screen, the GUI should look pretty much like what we have now, and if you select one of the playlists there, it should go into the search screen (with all gametypes under that header selected) just like it does now. Only if you expand the headers should you see the added complexity. So new users (and ones who don't want to have to click more than one button) would not have any additional button-pushes beyond what H4 has.

Note: Game populations should only be shown at the header level, not at the individual gametype level.
Quote:
I had a little read but I wasn't really on board with the idea. Searching by gametype creates way to many options and could spread the players even thinner. It maybe nice to pick the exact thing you want but there would be so many options, on top of which there is a variable of players per game to consider.

As for quicker searches created by using a broader selection of gametypes, I would prefer to see the playlist structure I suggested along with a quick match option in the un-ranked section.
I do agree that too many options to pick up make the playlists unclear and are rather detrimental to the matchmaking's organization and population. It was the case in another topic and I thought the proposed solutions were too much restrictive at the end of the day.

But here, it's not the case since the way it works is not to select modes in a restrictive way where you exclude variants, but rather to expand your choice. As Caboose explained, the limit case of this system (when people are the most restrictive possible in their choice) is strictly equivalent to the current playlist organization and not worse. That is, there are at worst the same amount of people per playlist than with the current system.

Moreover, this system favors more voting options for one mode since players have already agreed on the playlists there are intersting in playing:

Quote:
Consider CTF: you would not necessarily need (but you could, if you wanted) to split CTF into 2-flag, 1-flag, and neutral. It could just be "CTF", with the algorithm picking the variant randomly behind the scenes. Or it could just be "CTF", with the variant chosen at the map selection screen. What would be easiest for players can be discussed.
This way, you are not exluding variants or maps (like in other proposals), since everything can be proposed to the player and accepted by him since he knows he can only have gametypes that he chose before (ex: Slayer + Extraction + CTF). If the game match other players for extraction for instance, the player can now vote the proposed maps and variants (1-site, 2-sites) he prefers. That's why I find this system so interesting.

BTW Caboose, you forgot Team Snipers :p.

EDIT: And also, while I don't really enjoy Regicide and would rather like to avoid it, I think your Regicide selections in the Slayer part are too much specific. Regicide should maybe be chosen later on with the map choice IMO.
Quote:
Unranked lists still need to use skill rankings for matching purposes. If you do not, blowouts will be the norm, not the exception. The only difference is that skill is not shown for unranked lists (and this is a pretty universal feature for all matchmade games - not just Halo or FPSs). So that portion of your paragraph is a no-go.
I know unranked playlists still have hidden ranks, in fact I mentioned it. But what I was suggesting is that it finds you a team not based on skill allowing you to team up with anyone, even people you may not normally meet due to the fact your in opposite worlds where skill is involved. Once you have found a team it takes an average of your hidden skills and uses that to find the best possible match. This allows you to literally play with anyone, increasing the players you can be paired with, all while creating a fair game of evenly split teams.

And I don't know what kind of hidden skills Halo 4 has, but I am CSR 50 in Team Slayer and regularly get placed in games with people who are literally playing their first game ever. This ends in so many teams never being able to make it into double figures in kills, Steak Dinners all round.
Quote:
EDIT: And also, while I don't really enjoy Regicide and would rather like to avoid it, I think your Regicide selections in the Slayer part are too much specific. Regicide should maybe be chosen later on with the map choice IMO.
Just examples. Regicide is really just a Slayer variant, and would be perfectly fine to keep at the voting screen. So I agree.

P.S. I didn't forget snipers. Sniper rifles hate me, so I hated them back. Lol.
Quote:
I know unranked playlists still have hidden ranks, in fact I mentioned it. But what I was suggesting is that it finds you a team not based on skill allowing you to team up with anyone, even people you may not normally meet due to the fact your in opposite worlds where skill is involved. Once you have found a team it takes an average of your hidden skills and uses that to find the best possible match. This allows you to literally play with anyone, increasing the players you can be paired with, all while creating a fair game of evenly split teams.

And I don't know what kind of hidden skills Halo 4 has, but I am CSR 50 in Team Slayer and regularly get placed in games with people who are literally playing their first game ever. This ends in so many teams never being able to make it into double figures in kills, Steak Dinners all round.
While I do agree that social lists could have looser matching criteria, it cannot be as wide open as you suggest. Your second paragraph demonstrates why the first does not work. Those with low skills would get crushed, even if each team had equal numbers of low/high skill players. And if one side is playing as a party, then your solution cannot even be implemented.

As far as H4 goes, it really depends on the playing population at the time. If you're playing off-peak, it can be very hard due to the population to find equitable matches. The whole idea of matching on a gametype rather than playlist level is to allow more equitable matches as the population drops.
I have not that much to add. I'm glad you found something that seems well thought (:
So just by the way: Don't let it end up in digital Nirvana. At least sent someone there a mail or letter.
Not sure that would have any more effect. I'm sure 343i gets lots of them, and for the sake of their own sanity, relegate most to the garbage can.

This particular topic is kind of technical and requires a long explanation that most forum-goers won't have the patience for. It's not likely to stay visible for long. I hope that people periodically dump a comment to keep it alive to increase the odds that it might be seen by 343i as a good idea - but that's not terribly likely.

But I'm not sure sending a letter increases the likelihood of them considering it. So I will be satisfied having posted it and gotten a few responses, with the hope that someone from 343i read it and liked it.

Or - better yet - 343i has already developed an even better way on their own and this post is completely irrelevant.
"Twenty years from now you will be more disappointed by the things that you didn't do than by the ones you did do." :F
Quote:
Just examples. Regicide is really just a Slayer variant, and would be perfectly fine to keep at the voting screen. So I agree.

P.S. I didn't forget snipers. Sniper rifles hate me, so I hated them back. Lol.
Fine, I just wanted ot mention it, because even if they are just examples, the list you wrote already look damn good :p
Quote:
Quote:
Just examples. Regicide is really just a Slayer variant, and would be perfectly fine to keep at the voting screen. So I agree.

P.S. I didn't forget snipers. Sniper rifles hate me, so I hated them back. Lol.
Fine, I just wanted ot mention it, because even if they are just examples, the list you wrote already look damn good :p
And the cool thing is that even if my list looked like poo, the method above allows a different list to be substituted at will.