Skip to main content

Recommendation Architecture

This document outlines the architecture for the SplitScreen user recommendation engine. The system is designed to be flexible, catering to two primary client types:

  1. Single-Game Clients: Typically a game studio that wants to provide social matchmaking for their specific game.
  2. Multi-Game Clients: Platforms like gamer hubs (e.g., Shonen) where users have profiles with multiple games.

The recommendation engine is built around the GenericUserProfile model.

Core Recommendation Factors

These are the primary factors used to calculate a match score between two users, based on the current GenericUserProfile model.

1. Games & In-Game Progress

  • Logic: The primary factor for matching. The scoring logic adapts based on the client type.
  • Adaptation:
    • Multi-Game Clients: The score increases with the number of games two users have in common.
    • Single-Game Clients: This becomes a simple check for the one shared game. The recommendation score will then heavily rely on the in-game metrics below.
  • Metrics:
    • PlaytimeMinutes: A strong indicator of experience. The system will reward users with similar playtime.
    • AchievementsCount: A proxy for skill and dedication. Similar counts suggest a better match.

2. Genres

  • Logic: Shared taste in genres is a good indicator of compatibility.
  • Adaptation:
    • Multi-Game Clients: This is a powerful signal. Overlap in preferred genres will significantly boost the match score.
    • Single-Game Clients: This factor has less weight, as all users are technically playing the same genre. However, it can still be useful if the user has provided a broader list of genre preferences.

3. Availability & Schedule

  • Logic: Critical for social matchmaking. Users must be able to play at the same time.
  • Metrics:
    • Schedule.Timezone: Used for a baseline grouping of users.
    • Schedule.Slots: The system will perform an overlap analysis on users' available time slots to calculate a "schedule compatibility score."

4. Location & Language

  • Logic: Determines network latency and the ability to communicate.
  • Metrics:
    • LocationInfo.CountryCode / Region: Used to estimate latency. Users in the same region receive a higher score.
    • Note: CountryCode can be a proxy for language, but an explicit language field is recommended for better accuracy (see enhancements below).

5. Personality (Optional)

  • Logic: Gauges social compatibility. This is an optional but powerful factor. The documentation should emphasize that providing this data leads to better recommendations.
  • Metrics:
    • MBTI: Uses the Myers-Briggs Type Indicator. A scoring matrix will be used to compare two MBTI types.
    • Yee's Gamer Motivation Model: This model can also be supported to provide a different lens on player personality and motivation.
  • Note: If a user has not provided this information, it will not negatively or positively impact their score.

Scoring & Ranking

The recommendation engine will use a weighted scoring system. Each of the factors above will be assigned a weight, which can be adjusted based on client feedback and performance analysis. Clients can configure these weights for themselves using the API.

  • Initial Weights (Example):
    • Games: 30%
    • Skill/Rank: 25%
    • Availability: 20%
    • Playstyle: 10%
    • Location/Language: 10%
    • Personality: 5%

The final output will be a ranked list of users, ordered by their total match score.


Data Flow

  1. User Data Ingestion: Clients send user profiles via the /v1/users endpoint.
  2. Asynchronous Processing: The system asynchronously processes new and updated user profiles.
  3. Pre-computation: To ensure low-latency recommendations, the system will pre-compute potential matches.
  4. Recommendation Request: When a client requests recommendations via /v1/users/{user_id}/recommendations, the system retrieves the pre-computed, ranked list.
  5. Real-time Filtering (Optional): The system can apply real-time filters to the pre-computed list (e.g., "recommend me users only for a specific timezone or users who play a specific game.").