Login Register
RSS Feed Twitter Facebook YouTube

Dev Jam #1 – Simmons on Matchmaking



We wanted to use this blog segment we’re calling ‘Dev Jam’ to discuss any plans, thoughts, insights we have on Robocraft with you guys, the community; so you have a greater understanding of what drives us to makes the decisions that we do. We wanted to let you know what we’re up to and why, and to give you a chance to comment and give us feedback so we can sanity check that what we’re doing is stuff that will be good.


Robocraft has evolved to become more of a very unique ‘Arena’ game than a ‘Sandbox’ game. When I say ‘Arena’ game, I really mean any game where the focus is two teams competing against each other, in a fixed size Arena, with well matchmade players, where one team will win and the other will lose (some games have draws too). Although Robocraft is pretty unique, it’s probably more like games like Battlefield, World of Tanks, Halo, Overwatch, Rocket League, even HOTS, LOL and DOTA2 than it is like Minecraft, Roblox, or Besiege.


Good Arena games rely heavily on very good matchmaking to be fun. This would involve the following:


The mainstay of good matchmaking in Arena games is the ELO. ELO was invented by a guy (called ‘Arpad Elo’) https://en.wikipedia.org/wiki/Elo_rating_system. This system has been adopted by many Arena games to ensure that players of similar skill play together, to ensure elite players play against other elite players so they get challenging and fun gameplay, and ensure that new and less skilled players play together to protect them from getting constantly dominated by elite players (resulting in them leaving and playing another game).

In some games ELO is displayed to the user in the form of a ‘Rank’ and in other games or in casual game modes it is hidden from the user but is often still used (under the hood) along with other parameters such as Player Level.


Another thing games need to ensure is that Party sizes are matched fairly, since a Party of 5 will have a huge advantage over a team of 5 randoms. Ideally Parties would be perfectly matched, with equal size and exactly the same ELOs.


A good Arena team often needs to be formed from a variety of character types that are designed to work well together, i.e. Tank, Healer, DPS is a classic. In order to have good team compositions some games do this by matchmaking Character Types to form good teams automatically, and other games pass the responsibility of forming good teams over to the players, i.e. via ‘Draft’ systems that allow players a period of time to select characters whilst seeing the selections of their team mates before the start of battles.



All Arena games have a finite number of players online at any one point in time called CCU (Concurrent Users). Those players will be doing a variety of things, that subdivides the player base into ‘buckets’. Here is a little diagram showing a typical Arena game and how it subdivides its CCU:


The example above demonstrates all the online players for a typical Arena game (say HOTS or Overwatch) being subdivided as follows:

  • Geo Located servers allow for low ping times for players in those regions = x3 subdivisions
  • Game modes split online players between each game mode, in each Geo = 3×4 subdivisions
  • Party sizes must be matched fairly, in each game mode, in each geo = 3x4x5 subdivisions
  • Then ideally players wouldn’t be more than +/-100 ELO apart from each other, so with 3,400 ELO’s subdivided by 100, you get 3x4x5x34 subdivisions
  • Finally, the team size dictates how many individual players you need that meet the above criteria to form a game, and in most Arena games it’s 5 vs. 5, so 3x4x5x34x10 subdivisions

So, that’s 20,400 subdivisions of CCU to match-make well.


Robocraft struggles to match-make players well as it subdivides its online audience significantly more than a typical Arena game:


We’re not happy with the way we matchmake in Robocraft at the moment. Too often Robot CPU, player skill, and Parties are not matchmade well enough. This leads to a poor game experience for everyone.

The reasons for this are pretty clear when you look at the way we subdivide our audience:

  • We do not have Geo Located servers, but if we did add them, players playing in USA, South America, Asia and Russia would get a better game experience, less disconnections, better ping times, less dropped packets, etc., but if we do add them right now we’d subdivide the audience even more x3
  • Robocraft is unique in that it allows you to build your own Character (Robot in our case). Players spend on average around twice as much time building and testing Robots as they do in battle (mainly as building takes longer). This means that we have only 1/3rd of the audience available to battle, so we have 3×3 subdivisions
  • We have 5 game modes, so 3x3x5 subdivisions
  • We have CPU, and if we matchmake Robots by CPU with a difference no greater than +/-100 CPU we have 3x3x5x17 subdivisions
  • We need to match Party size and ideally ELO too, so 3x3x5x17x5x34
  • And we have larger team sizes also, i.e. in BA we have 8 vs. 8
  • So, a grand total of 3x3x5x17x5x34x16

So, that’s 2,080,800 subdivisions. Ouch!

Now, when you consider that Dota2 has a CCU of around 1 million, and Robocraft has a CCU of closer to 5,000, we should be much more careful with our CCU than Dota2 subdividing our audience less, but we subdivide it much more than even Dota2.

On top of this we need to make sure we keep queue times in the Lobby down. In most Arena games players will typically accept queue times of around 1-2 mins, longer than that they start to feel like it’s long, and although players expect to wait longer in ‘Ranked’ for close ELO MM, they expect more casual game modes (like ‘Quick Play’ in Overwatch) to launch quickly.


Now, at this point it’s important to clarify, i’m not going to propose 7 chapters of overhauling Robocraft to fix this stuff. We’re only interested in making changes to the game that will improve it for you all and that you would in general want, but I think it’s pretty clear that there isn’t much hope of good matchmaking if we don’t focus the game more and subdivide the audience in a more intelligent way than we do now.


  • Geo Located servers – we don’t’ have these yet, but if we are serious about making a good game we need to have them. If we want good network connectivity, low latency, less players disconnecting, low packet loss, etc. we need them
  • Building, Testing and Battling with Robots – well, that is simply Robocraft. It’s our unique proposition and something you just don’t get in other Arena games, so that will never go
  • ELO – If you want good matchmaking you need to match-make by ELO, it’s the best way of getting players of the same skill playing together
  • Parties – I think we need to ensure that Parties never have to fight against a Party more than +/-1 in size difference, otherwise the advantage/disadvantage will be too great
  • CPU – Perhaps we can find a way of adding game mechanics where low CPU Robots can compete with high CPU Robots, i.e. add in some kind of mechanic where there is a reason to have both high CPU Tanks and low CPU DPS dealers in your Party or Pro team. Perhaps low CPU can mean agile, fast, high DPS, and high CPU can be slow, heavy, tanky and low DPS? Perhaps we could break the link between Player Level and CPU and give everyone max CPU and even increase the max CPU this way (since there would be pro’s and con’s to building big Robots). Any ideas you have would be great. If we can add this kind of mechanic we can almost completely remove x17 subdivisions which is like having 17x as many players online waiting in the queue
  • Team Sizes – I don’t think current Battle Arena would be very good if we simply make the team’s 5 vs. 5 and scaled the maps down. Typically Arena games have 3 objectives split between 5 players per team, creating a nice uneven dynamic between the two teams. BA currently has 5 objectives (3 towers and 2 bases) so too many for 5. Perhaps there is a way of sequencing the objectives or altering BA so that 5 vs 5 would be great? Maybe you have some ideas for ways to do this? I do believe that having team sizes in the game modes that match the max Party size (i.e. 5) could be a good thing, in particular in the most competitive games where two top Parties fight it out, it could be really cool, what do you think?
  • Game Modes – I think having a ‘Quick Play’ mode, a ‘Ranked’ mode, a ‘Fun’ mode (like Brawl, which could contain fun variants on Elimination, The Pit, and more fun stuff in future), and a form of ‘Custom Games’ is the perfect mix. What do you think? Remember, more game modes equals worse matchmaking, so we need to be careful
  • Draft – Perhaps we could add a ‘Draft pick’ or simple ‘team pick’ screen at the start of battles, so players can chose their Robot based on those in the team, so players have the responsibility to form good teams. ‘Draft pick’ would be where you could see the choices made by the other team also and could inspect their Robots perhaps? Just a thought.

Anyway, i’d love to hear your thoughts on this, and thanks for listening.

My Twitter is @MarkDJammer if you want to message me, I’ll always try to reply when I have time. We have posted this on the forums and I’ll keep an eye on what you’re saying by reading the thread regularly over the next few days.

Mark Simmons, Game Director and CEO, Freejam