How would you design the backend for an online game with matchmaking and dedicated servers?
What the interviewer wants to hear
- Separate services: accounts, matchmaking, game server fleet, persistence
- Matchmaker groups players by skill, latency and region, relaxing rules over time
- Fleet manager allocates dedicated servers and autoscales by demand
- Authoritative game servers report results; player data stored server-side
- Security, anti-cheat, rate limits, and handling outages gracefully
- Use platforms like Agones, GameLift or vendor services where it saves effort
Model answer
I would separate the backend into services. An account and identity service handles login through platforms like Steam or console networks. The matchmaker takes tickets with skill rating, party size and ping to each region, groups compatible players, and relaxes rules the longer people wait so queues stay short. When a match forms, a fleet manager allocates a dedicated game server in the best region; I would use something like Agones on Kubernetes or Amazon GameLift so servers autoscale with demand and scale down at night. The game server is authoritative, validates gameplay, and reports results to a stats service that updates ratings and inventory, which only the backend can change. I would add rate limiting, anti-cheat checks, health monitoring, and degrade gracefully, for example letting players stay in menus if matchmaking is down.
Can you answer it under time pressure?
Take a timed hard round and get scored on every answer.
More hard Game Developer questions
- How would you design the networking for a fast-paced online multiplayer shooter?
- Design a flexible ability and buff system for an RPG with hundreds of skills.
- How do you manage memory in a large game that ships on consoles with fixed memory?
- Explain how a modern real-time rendering pipeline draws a frame, and where the common performance costs are.
- How would you reduce cheating in an online game?
- The game averages 60 FPS but players complain about hitches every few seconds. How do you find and fix them?
- How would you build a replay system that lets players rewatch a match, and what makes it hard?
- How would you architect world streaming for a large open-world game?
- How do you use multiple CPU cores in a game without race conditions and with real speed-ups?