Skip to content

A/B Testing & Experiments

Experiments (A/B tests) let you test design changes with specific player cohorts before rolling out globally. Quest Data uses deterministic hashing so players see consistent variants.

  1. Go to Live Ops > Experiments
  2. Click New Experiment and fill:
    • Name: e.g., “Tutorial Difficulty Test”
    • Description: What you’re testing and why
    • Traffic %: 50% (test 50% of new players)
    • Variants: Add Control (A) and Treatment (B)
  3. Click Start
AllocationUse Case
10%High-risk changes, measure impact first
50%Balanced testing, fast results
90%Near-rollout, verify before 100%

Players are assigned consistently via hashing on player_id, so they always see the same variant.

Check which variant a player is assigned to:

var variant = await QuestData.get_experiment_variant("Tutorial Difficulty Test")
match variant:
"control":
difficulty = 1.0
"treatment":
difficulty = 0.75 # Easier tutorial

Then track results:

QuestData.track("tutorial_complete", {
"experiment": "Tutorial Difficulty Test",
"variant": variant,
"time_spent_seconds": 300
})
MetricControlTreatmentWinner
Completion Rate85%92%Treatment
Avg Duration420s380sTreatment
Retention Day 142%48%Treatment

Results are marked:

  • Gray: Too small sample size
  • Blue: Statistically meaningful
  • Green: Winner with >95% confidence
  1. Results show Treatment won over Control
  2. Click Rollout to All Players
  3. Select: Gradual (10%/day) or Immediate (100%)
  4. The variant becomes the new default
Terminal window
# Get experiment status
curl "https://api.questdata.io/v1/experiments/tutorial-test" \
-H "x-game-api-key: YOUR_API_KEY"
# Get player assignment
curl "https://api.questdata.io/v1/experiments/tutorial-test/variant?player_id=player123" \
-H "x-game-api-key: YOUR_API_KEY"

Response:

{
"experiment": "tutorial-test",
"player_id": "player123",
"variant": "treatment",
"allocated_at": "2026-04-01T10:00:00Z"
}