Katkat

Design a Game Recommendation System

RobloxMachine Learning Engineer · Onsite

Last updated

This problem tests your ability to design a multi-stage recommendation architecture tailored to a gaming platform, focusing on user-specific constraints like age-appropriateness and the challenges of the long-tail game distribution.

Scenario

Roblox hosts millions of user-created experiences. Design an end-to-end recommendation system that suggests games to users on the home feed. The system must account for a massive catalog size, highly dynamic game popularity, and strict age-appropriateness filters.

Requirements

1. Functional Requirements

  • Provide a personalized 'Recommended for You' feed.
  • Incorporate explicit and implicit feedback (clicks, playtime, favorites, group joins).
  • Enforce safety filters based on the user's account age and parental controls.

2. Non-functional Requirements

  • Low latency for the initial feed load (< 200ms).
  • High throughput to handle millions of daily active users.
  • Adaptability to 'viral' games that gain popularity in hours.

Expectations

Your design should cover:

  1. System Architecture: Describe the multi-stage pipeline (e.g., candidate generation, filtering, ranking, re-ranking).
  2. Feature Engineering: What user, game, and context features are most predictive?
  3. Handling Constraints: How do you enforce safety/age filters without significantly increasing latency?
  4. Cold-start Strategy: How do you surface new, high-quality games that lack historical interaction data?
  5. Evaluation: How would you measure success offline and online?

Hints

Hint 1

Consider a funnel approach starting with efficient retrieval (e.g., Approximate Nearest Neighbors) before moving to expensive deep-learning ranking models.

Hint 2

For the age-appropriateness constraint, think about whether to apply filters at the retrieval stage (index level) or the ranking stage (post-processing).

Hint 3

To address the cold-start problem, consider using game metadata and creator reputation as features rather than relying solely on collaborative filtering.

Follow-up questions

  • How would you handle a 'gaming session' context where recommendations need to evolve after a user finishes one game and returns to the home page?
  • If we discover that our model is showing popular games exclusively, how would you adjust the ranking objective to increase discovery for long-tail, high-quality games?
  • Describe how you would implement a continuous training loop to ensure the model reflects current player trends within minutes rather than days.