Skip to content

Exploration & Ranking

Game States

Every visible game exists in one of two data-maturity states:

StatePurpose
ExplorationCollecting initial data through controlled exposure
RankedOrdered by performance metrics in game lists

A game can be in different states on different platforms (e.g., Ranked on desktop, Exploration on mobile).

Exploration

Purpose

Exploration gives new or experimental games controlled exposure to collect enough data for fair ranking. While in Exploration:

  • Games are shown in dedicated exploration slots
  • All metrics are collected but not used for ranking
  • The goal is data collection, not competitive positioning

Slot Allocation

Game lists use a hybrid layout:

PortionSource
90%Ranked games, ordered by rank
10%Exploration games, drawn from the rotation queue

If there are not enough Ranked games to fill the list, Exploration games fill the remaining space.

Exploration slots are available on all list surfaces:

  • Home page
  • Category pages
  • Game detail page (recommended games below the player)

Exception: Author pages do not include exploration slots.

Rotation Queue

Each surface (Home or category) and platform (desktop or mobile) maintains its own exploration queue.

How it works:

  1. Exploration slots display the first N games from the queue
  2. When a game receives one new unique player who triggers gameplay_start, the game moves to the end of the queue
  3. The game stays in the queue and will reappear later

This distributes exposure across different traffic periods and prevents any single game from monopolizing exploration slots.

Exit Threshold

Each game in Exploration has a configurable exit threshold defined as a number of unique players who triggered gameplay_start.

Use CaseDefault Threshold
New public game1,000 unique players
Playtest build500 unique players
Experimental contentCustom threshold

A game exits Exploration only when its threshold is reached.

Transition to Ranked

When the threshold is reached:

  1. The game transitions to Ranked state
  2. Collected metrics are used to compute its initial rank
  3. The game appears in normal list ordering

Ranking

How Ranking Works

Ranked games are ordered using platform metrics. Ranking is:

  • Data-driven based on collected events and computed KPIs
  • Computed separately for:
    • Home vs. each category
    • Desktop vs. mobile
  • Recalculated periodically (not real-time)

Ranking Algorithm

The ranking algorithm takes multiple metrics as input (see Data Model for the full list). The exact formula and weights are tunable and will evolve based on platform data.

Reuse: Generic Exposure System

Exploration is designed as a generic exposure system that supports multiple use cases beyond new game discovery:

Use CaseExit Behavior
New game discoveryTransitions to Ranked
Developer playtestsArchived or removed
Experimental buildsCustom lifecycle
A/B testingCustom outcome

Each use case can define its own threshold, lifecycle, and outcome.

Queue Initialization

When a new surface is created (e.g., a new category), its exploration queue is initialized as follows:

  1. All games in Exploration state that belong to the surface are added to the queue
  2. Initial queue order is randomized (not by creation date) to avoid bias
  3. Each game starts with uniquePlayers = 0 and the default threshold

When a game first enters Exploration (via visibility change to Visible):

  1. The game is added to the end of every applicable queue (Home + each of its categories)
  2. Separate queue entries are created for each platform (desktop, mobile)

Demotion from Ranked

Whether a Ranked game can be demoted back to Exploration is an open question — see Decisions → Open Questions.

Currently, once a game reaches Ranked, it stays Ranked. Poor-performing games naturally sink to the bottom of ranked lists through the ranking algorithm.


Why Separate States?

  • Prevents ranking instability from low data volume
  • Guarantees fair exposure for new content
  • Keeps ranked lists stable and data-driven
  • Allows future systems (playtests, experiments) without changing core logic