Skip to main content
All CollectionsPortal-X Pages
Design | Gamification | Milestones
Design | Gamification | Milestones

Build Objectives and Rewards on top of your core gameplay loop to boost engagement and retention

Jason Liang avatar
Written by Jason Liang
Updated over a week ago


Use Milestones in your game to define conditions that deliver rewards to your players. Unlock requirements for Milestones can also be set up to control when milestones become available to earn.

After establishing the core loop of gameplay, Design should have some ideas about the types of events and actions in the game that occur regularly. Eg. "Run a distance of 10,000m", "Fire 1,000,000 shots" or "Collect 1,000 powerups". Establishing Milestones with rewards for these events will give your users progression goals to work towards.


  • Create Milestones in sets with gradually increasing goal amounts. After a player completes the first goal in the set, unlock the next one. "Run 1,000 meters", "Run 5,000 meters", "Run 10,000 meters" (and so on...)

  • Implement Milestones for several different kinds of progression so the user always has a combination of near and far-term goals to work towards, and can focus on different types of actions to progress.

  • Consider if sequential goals should increase in effort linearly (500, 1000, 1500, 2000) or in an increasing curve (500, 1000, 2000, 4000). One issue with increasing curve effort is that eventually the effort to the next objective may feel insurmountable.

  • Assign rewards according to effort. Consider if your rewards should be equal (1000 coins, 1000 coins, 1000 coins) or Increasing (1000 coins, 2000 coins, 3000 coins) for each Objective . Another option is to have equal rewards in general, but then have spikes of bigger rewards periodically: (1000 coins, 1000 coins, 3000 coins, 1000 coins, 1000 coins, 5000 coins.) This format helps to make progression feel less monotonous.


To get started, Milestones can be created on the brainCloud Portal.

Setting up your Milestones

  • Click the [+ Add Milestone] button with the plus icon.

  • The milestone ID is the unique identifier for the milestone, which will be used to reference it when making API calls.

  • Enter your title, description, and category of the milestone. You can use the category to filter which milestones are visible on the dashboard, or control which are returned by the ReadMilestonesByCategory API call.

  • Extra Data, is any extra information the milestone needs to return. For example, if you wanted to return the release date of when the milestone was added to the game.

  • Enter the Unlock Thresholds and Competition Thresholds. Players' stats can be at, or above, the indicated thresholds for them to be reached.

    • Experience Level - the level required to reach the needed threshold. You can configure the level on the Design | Gamification | XP Levels page.

    • Experience Points - the XP points required to reach. Can grant XP with the IncrementExperiencePoints API call.

    • User Statistics - a user stat required for the achievement to be awarded, such as 10 carriersDestroyed.

    • Global Stats - you can also use Global Stats to create a form of Globally shared milestone. ie. if your player base as a whole played a certain amount of matches.

  • Set up your Rewards granted by the Milestone.

    • You can award Achievement for milestone completion. Create new ones on the Design | Gamification | Achievements page.

    • You can award also Currencies to the player, and also create new ones on the Design | Marketplace | Virtual Currencies page.

  • After the above step, be sure to click [Save]!

These Milestones can be returned with 4 different states when calling ReadMilestones.

"data": {
"milestones": [
"id": "1",
"status": "LOCKED"
"id": "2",
"status": "UNLOCKED"
"id": "4",
"status": "IN_PROGRESS"
"id": "5",
"status": "SATISFIED"
"status": 200
  • LOCKED - Indicates the user hasn't met the unlock threshold requirements.

  • UNLOCKED - Indicates the user has met those requirements.

  • IN_PROGRESS - Indicates that the Milestone is unlocked, and the user has partially completed the milestone. For example, if the milestone required the user to have 10 of the carriersDestroyed stat, and they were at 5, this would indicate they are in progress, and roughly halfway.

  • SATISFIED - Indicates both the unlock and completion thresholds have been met.

By the nature of these four states, Milestones can go from directly LOCKED to SATISFIED, if the completion threshold is less strict than the unlock threshold.

Your test user unexpectedly has a Milestone listed as SATISFIED? brainCloud may have awarded the Milestone before an unlock or completion threshold was added or changed. The system will not retroactively remove an awarded Milestone. You can reset the current user profile with ResetUser, reset the current milestone with ResetMilestones, or create a new user, to test the new condition requirements.

Did this answer your question?