Challenges #

Overview #

Challenges are player-driven competitions that encourage players to invite their friends to compete for prizes and prestige, boosting retention and engagement in your game.

Developers pre-configure Challenge templates on the server, each with specific rules and scoring systems. Players then choose from these templates and may optionally customize certain parameters like participant count and duration before inviting their friends to play with them.

Add Challenges to your game to create dynamic social competitions and foster a sense of community and friendly rivalry, providing replayable content that keeps players engaged over time.

Use Cases #

Game developers are often tasked with keeping players engaged beyond single sessions. Players complete content and move on, resulting in declining retention rates and stagnant growth.

Challenges transform this dynamic by turning score-based or timed solo gameplay into shared social experiences. Instead of playing alone and leaving, players now have reasons to return, compete, and bring friends along.

Speedrunning Challenges #

A player has just finished your platformer’s campaign - instead of uninstalling, they can now challenge friends to beat their best completion time on their favorite stage. This creates a cycle where completed content becomes the foundation for new competitive experiences. Winners might earn profile badges that showcase their skills and motivate others to challenge them.

Kill Streak Challenges #

Rather than players having isolated matches that only they remember, these challenges let them prove their skills in friendly competitions. Players compete to see who can achieve the highest damage numbers or most KOs across multiple matches, with top performers earning exclusive rewards that demonstrate their prowess.

Every Challenge transforms individual achievements into shared experiences, incentivizng players to return and introduce new players to your game.

Key Terminology #

  • ChallengesConfig: The configuration object that defines all available Challenges, each with its own rules, rewards, and properties (see JSON example below).

  • Reward Tiers: Structured brackets that determine what rewards players receive based on their final rank or score, if any.

  • Operators: Determines how scores are evaluated by default (see Operators table). Can be overriden when making a score update request.

  • Player Limits: Minimum and maximum player counts for each Challenge, supporting either duo (two players) or group (more than two players) competitions.

  • Duration and Scheduling: Challenges can be scheduled with flexible start delays, durations and a min/max amount of participants.

  • Additional Properties: Custom metadata fields for each Challenge. Consider adding these to enable deep integration with game lore or progression systems e.g., image URLs.

Challenges vs Event Leaderboards #

While both Challenges and Event Leaderboards provide competitive gameplay features, they serve different purposes and have distinct characteristics. Challenges are designed for on-demand social competitions where players control when, how, and with whom they compete. Event Leaderboards, on the other hand, are structured systems for large-scale competitive events with automated matchmaking and scheduled tournaments.

PropertyChallengesEvent Leaderboards
StructurePlayer-driven competitions with limited player customization.Recurring or one-off events with predefined cohorts and tiered progression.
SchedulingFlexible, on-demand scheduling with player-defined start times.Fixed schedules with predetermined periodic cadence.
MatchmakingPlayers can invite other players to join their events or make them open to the public.Automated matchmaking (based on skill, region, etc) with tiered cohorts.
Individual competition-based progression.Long-term progression through tier system.
Use CaseFriendly competitions and community events.Structured competitive seasons and tournaments.

The key distinction is that Challenges prioritize social relationships and community building over competitive ranking systems.

Configuring Challenges #

Challenge Properties #

PropertyTypeDescription
reward_tiers[]ChallengeRewardTierList of reward tiers, each defining rank ranges and associated rewards.
max_num_scoreint64Maximum score or value relevant to the challenge (e.g., max time allowed).
start_delay_max_secint64Maximum delay (in seconds) before the challenge can start after creation.
ascendingboolIf true, higher scores are better; if false, lower scores are better.
operatorstringDetermines how scores are evaluated (e.g., best, set, incr, decr).
durationDurationObject specifying the minimum and maximum duration (in seconds) of the challenge.
playersPlayersObject specifying the minimum and maximum number of players allowed in the challenge.
additional_propertiesstring:stringCustom metadata fields for the challenge, such as description, category, or difficulty.

Challenge Reward Tier #

PropertyTypeDescription
rank_minint64The minimum rank number (inclusive) that is eligible for this reward.
rank_maxint64The maximum rank number (inclusive) that is eligible for this reward.
rewardRewardThe rewards that a user should receive when within the eligible range.

Duration #

PropertyTypeDescription
min_secint64Minimum duration in seconds a user can set when creating a Challenge.
max_secint64Maximum duration in seconds a user can set when creating a Challenge.

Players #

PropertyTypeDescription
minint64Minimum limit of players a user can set when creating a Challenge.
maxint64Maximum limit of players a user can set when creating a Challenge.

Operators #

OperatorDescriptionExample Use Case
bestUse the highest submitted value as the score.Arcade challenge where only the highest score matters.
setOverrides the current score with the submitted one.A game where players try to beat their last run. A failed attempt might overwrite their high score, even if it’s worse.
incrAdd the latest value to the current score.Trivia challenge with accumulating points.
decrSubtracts the latest value to the current score until 0.Boss challenge, where each score submission reduces boss HP, until it dies.
incrementAlias for incr.See above.
decrementAlias for decr.See above.

Example: Challenges JSON #

The JSON schema defines a challenges object which must contain an individual object for each challenge you wish to define in the system. You can configure as few or as many challenges as needed for your desired gameplay.

PropertyTypeDescription
challengesstring:ChallengeA map of all challenges.

The following JSON showcases the customization parameters you can use to configure the default user experience for a particular Challenge.

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
{
  "challenges": {
    "speed_runner": {
      "reward_tiers": [
        {
          "rank_min": 1,
          "rank_max": 3,
          "reward": {
            "coins": 300,
            "gems": 15,
            "items": ["speed_boots", "time_crystal"]
          }
        },
        {
          "rank_min": 4,
          "rank_max": 10,
          "reward": {
            "coins": 150,
            "gems": 8,
            "items": ["speed_boots"]
          }
        }
      ],
      "additional_properties": {
        "description": "Score the most points by collecting crystals!",
        "category": "arcade",
        "difficulty": "expert",
        "dungeon_id": "crystal_caverns"
      },
      "max_num_score": 3600,
      "start_delay_max_sec": 60,
      "ascending": false,
      "operator": "best",
      "duration": {
        "min_sec": 1800,
        "max_sec": 3600
      },
      "players": {
        "min": 1,
        "max": 100
      }
    }
  }
}