How is matchmaking done at competitions? (Kind of a rant)

FWIW, this is actually a really good situation (playing against very good teams and ranking low as a result). If the top 1-3 alliances at your event have even reasonably good scouting data, you have good odds of being picked up as a 3rd bot to an already-strong alliance. Ranking too high means that you might get picked in the middle of the draft, which is the least desirable outcome for an elimination rounds run.
Now in districts, you do get points for seeding, so it’s not all that cut-and-dried. But it’s definitely nice to seed low in a regional system in an area strong enough to have good scouts.

As usual, you have to make your own luck, if you want to rank high. This year, that means building a robot that can move a lot of game pieces, as well as 3 climb. And if you want to be on top, be able to complete a rocket by yourself. And make sure all your qualifying match partners have working robots


Nowadays, We get our share of good (and weaker) partners and usually competive enough to hold our own against any comers if challenged. I guess my perception was formed when we were younger and notice the strong coicedence pairings to this day.

I know how you feel. This weekend at FMA Springside we were ranked 19 but averaged the 7th most points per match. Also we were the 4th best hatch bot and 4th best climber. It just happens sometimes, unfortunately.

1 Like

My son Perry did field reset Friday and scoring Saturday at Rock City, and felt that alliances were stacked against rookies and for a couple of older teams in particular. I broke down the likelihood of each alliance consisting of 0, 1, 2, or 3 rookie teams (based on 18 rookies and 41 veterans) and scaling to the 174 quals alliances. Each of the numbers was correct to within an error margin of [redone] 1.1 matches. The maximum delta was 56 alliances containing no rookies; the prediction was 57.056+ alliances with no rookies.

Still trying to figure out how to analyze and define “strength/weakness of schedule”.

Caleb tried looking at defining one such metric and detailed it in his blog post:


There is something different about the scheduling recently and it’s noticable. First, after two events, I had quite a few matches that only had a gap of one match in between. And then I see the same teams throughout the whole event, and never see other teams.

The back to back issue is maybe forgivable, especially since I was at two smaller events, but I don’t understand why there isn’t more variance in teams were with/against. I don’t remember it being this bad.

“It’s especially desirable for a given team not to have the same team as a partner more than once, nor as an opponent more than once. If match duplication does occur, it’s preferable that a team that is seen twice is seen once as a partner and once as an opponent, rather than twice in either role.”
At FMA SCH event we just got to face 225 three. times. I guess we were really unlucky.

1 Like

I feel your struggle. We had a rough first day schedule (winning several matches by penalties) and we were going back and forth with 133 for first all day. We were against 133 twice, and we’re down a bot both matches and we lost both matches. If it makes you feel better though, all teams have the same system to work with and everyone has bad matches. It’s a fact of the scheduler

The answer to both of these is the fact that Westtown and Springside-Chestnut Hill were 31 team events. With only 31 teams, that means each “round” only lasts 5 matches (with one team bleeding into the sixth match). That really makes for some quick turnarounds, and the need to set the minimum match gap to only 1 match. And even with only 1 map gap, there’s still a significant chunk of the team pool that won’t be eligible to be placed in a match because of how small the group of teams is.

To put that another way, 20% of the field of teams is competing in the match before yours and thus not eligible to be scheduled in your match. With only a 5 match round, the effects of that stack rapidly across multiple matches.

We had to face 2168 twice times at SCH this weekend but only faced one rookie the whole comp (not including QFs). The scheduling was really tough.

This year Heartland was a 36 team regional. With such a small number, the algorithm can pair you with or against teams more often.

But chance gave my team 1108 a bad break.

We ended up against Titanium 1986 in three quals matches.

The match schedule Gods giveth and taketh. All you can do is roll with it and play your game and hope the scouters are doing their due diligence.


Personally, something that has always puzzled me is why the “matchmaking” is performed on an event-by-event basis, at the day of the event, rather than have pre-computed “optimized” schedules pre-generated, and then have the “matchmaking” simply be randomizing the assignment of teams into the pre-generated schedule.

In my experience, well-intentioned volunteers, who don’t know the unintended side effects of setting the various parameters in matchmaker (such as minimum match separation, quality, etc.), choose parameters which lead to such unintended problems as having teams play one another too many times, etc.

It really seems that it would be better to have “pre-vetted” match schedules defined for each combination of # teams and # rounds, which are very good schedules and then randomize the teams into those schedules. To have pre-determined match schedules for every combination of # teams and # rounds from 12-100 teams and 4-15 rounds would only be about 1000 schedules.

At an event, the numbers of teams competing in the event could be randomized into the pre-computed schedule, which would allow essentially instant schedule determination, and a very good, pre-vetted schedule.

I just don’t get it as to why this change hasn’t been made yet. I can’t be the only person who’s thought of this idea. Am I missing some reason that the above approach wouldn’t work?


Is there a valid argument against pre-generating the pairings (or a couple of pairings so that you couldn’t game it even if you wanted to) and then randomly seeding the teams in?

This would cut down on the requirement to be able to generate the schedule on a slow computer and would lead to the “ideal” schedules

1 Like

One more point about the scheduler… People have “complained” in the past about the schedule being skewed to face tougher opponents, or weaker ones, more often.

If you are at a week 1 event, how do you know that team 9994 is going to be tough to beat? How do you know that that powerhouse team didn’t just have a really bad build season? The problem is there is no fair way to quantify a strength of schedule modifier without data. And should a vertran team have a very bad build coming off a championship winning season, how “fair” would that be to them?

Looking at it another way, if you have a week 6 event with only 1 robot that hasn’t played another event, you’ve got lots of data to use to try to even the strength of schedule, but that’s not something week 1 had available to them, and now you’re not being fair across competition weeks.

Sometimes, you just have to hope for the luck of the draw.

1 Like

Yes, the Schedule giveth and it taketh away. I have seen a few mentions of initial seedings. Is there some effort then to not combine three rookie level teams against an alliance of two digit juggernauts? In our rookie year we got some favorable pairings early and I’ve never known if it was just luck - which we had a lot of that year - or not.


Fwiw, i believe it’s because the teams who signed up for the event are supposed to be there, but generating the schedule the day of guarantees all the teams put into the schedule compiler did actually show up and are able to (eventually) field something.


I get that but why can’t you pre-generate schedules with teams 1-x and then just replace 1-x with the actual list of teams that’ll be playing? I think cheesy arena does this. Cuts down on unnecessarily generating 1,000,000 schedules at each event and finding the best one.