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: Logic for how scores are evaluated (e.g., “best”, “set”, “incr”, “decr”), supporting a wide range of competition types.
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.
Property | Challenges | Event Leaderboards |
---|---|---|
Structure | Player-driven competitions with limited player customization. | Recurring or one-off events with predefined cohorts and tiered progression. |
Scheduling | Flexible, on-demand scheduling with player-defined start times. | Fixed schedules with predetermined periodic cadence. |
Matchmaking | Players 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. |
Use Case | Friendly 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 #
Each individual Challenge is keyed by ID and may define the following:
Property | Type | Description |
---|---|---|
reward_tiers | List(string:RewardTiers) | List of reward tiers, each defining rank ranges and associated rewards. |
max_num_score | number | Maximum score or value relevant to the challenge (e.g., max time allowed). |
start_delay_max_sec | number | Maximum delay (in seconds) before the challenge can start after creation. |
ascending | boolean | If true, higher scores are better; if false, lower scores are better. |
operator | string | Determines how scores are evaluated (e.g., best, set, incr, decr). |
duration | object | Object specifying the minimum and maximum duration (in seconds) of the challenge. |
players | object | Object specifying the minimum and maximum number of players allowed in the challenge. |
additional_properties | object | Custom metadata fields for the challenge, such as description, category, or difficulty. |
Operators #
Operator | Description | Example Use Case |
---|---|---|
best | Use the highest submitted value as the score. | Arcade challenge where only the highest score matters. |
set | Use the latest submitted value as the score. | Puzzle challenge that uses the completion time. |
incr | Add the latest value to the current score. | Trivia challenge with accumulating points. |
decr | Score decreases over time. | Speed run challenge where a lower time is better. |
increment | Alias for incr. | See above. |
decrement | Alias 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.
Property | Type | Description |
---|---|---|
challenges | string:Challenge | A map of all challenges. |
The following JSON showcases the customization parameters you can use to configure the default user experience for a particular Challenge.
|
|