Roblox - System Design
Summary
I recently had a system design interview with Roblox, where I was challenged to design a scalable matchmaking service for their multiplayer gaming platform.
Full Experience
During my interview at Roblox, I was presented with a comprehensive system design problem. The core challenge was to design a matchmaking service for millions of multiplayer game sessions daily. This service needed to allow users to join a waiting queue, group them by skill level, and then allocate them to a new game server simultaneously. I had to consider a popular game potentially having up to 500k concurrent players and hundreds joining per second, grouping users into sets of 16, and ensuring a user only queues for one game at a time. The problem provided specific ID types and a UserSkill table to guide my design process.
Interview Questions (1)
Roblox hosts millions of multiplayer game sessions daily. It is planning to release a Matchmaking Service for game developers such that users can join a waiting queue, be grouped together by skill level and join a new gameserver at the same time.
A popular game may have upto 500k concurrent players, hundreds of players joining per second.
A user may have a skill level e.g userid : skill (0-100)
Design a service to help organize these users into groups of 16 before allocating them a new empty gameserver.
A user may only queue for 1 game at a time
You may assume the following ID types exist: long GameID long UserID long ServerID
And the following table: Table UserSkill - long GameID long UserID int Skill