To build this into your app, you will need to understand Divisions and Tiers.

What are Divisions?

The goal of Divisions is to drive higher engagement in your users by reducing the amount of direct competitors to a less intimidating number. 

For example, a user may feel there is more reason to play, and a greater chance to win if he is competing only against 10 players, as opposed being one player in a Worldwide tournament where there might be thousands of opponents. 

Divisions relieve some of the economy problems that arise when the same users win Worldwide Tournaments over and over again. This is because Worldwide tournaments usually have big prizes to match the number of players enrolled. The smaller Tournaments that Divisions allow decrease the scale of payout that Design must offer to drive participation from the user. 

Pro tip: There are benefits to both Worldwide and Division based Tournaments, and it is up to your Design department to decide which ones to emphasize in your app. 

Support for Divisions is included in Business Plan and above subscriptions.

With brainCloud Divisions, enrollees will be entered into a Division until the cap on the number of entrants is reached. When the cap is reached, entrants are then funneled into a new Division. This process repeats as players continue to enroll, up to as many Divisions as needed. Each Division of users competes for its own set of prizes without interference from any other Division. 

Division Scheduling

To create a division, you must first configure a leaderboard template for it to be based upon. The template must be tournament-enabled, and must have the Division Template option checked.

Each division instance, when dynamically created, essentially instantiates a copy of the the template leaderboard - which lives only for the duration of the tournament period.

Speaking of tournament period - the designer gets to choose how each division works within the tournament (scheduling-wise).

There are two main options:

  • Synchronized (recommended) - the tournaments for all the division instances will complete at the same time. In this way, you can have for example a weekly tournament, when every individual division tournament ends on Friday - no matter when that division was created throughout the week.
  • Floating - with floating schedules, the duration of the leaderboard period is respected - but the end date is not. Thus - for every division instance created, it's period will run for the full duration of the tournament. This means that tournaments will be starting and ending continually throughout the week.

We recommend synchronized tournaments because they are easier to coordinate event-wise. i.e. We're kicking off a new set of tournaments with twice the stakes from Sunday to Saturday. Be sure to join early to maximize your scores!

Division Caveat

Note that Divisions do not divide players by skill level. The division of players is random, based on when they join the tournament. To group players by skill level, you'll want to look at Tiers (below). 

---

What are Tiers?

When Design wants to implement a ladder of Tournaments (i.e. Gold, Silver, Bronze) that admit enrollees based on performance from previous Tournaments, we call this mechanic Tiers

Support for Tiers is doable with a bit of configuration and some custom cloud code scripts. 

To begin, your Design team should set up a series of separate Leaderboards (with associated Tournaments) for each tier: For example:  

  • "WeeklyTourneyBronze", 
  • "WeeklyTourneySilver", 
  • "WeeklyTourneyGold", etc...

Pro Tip: Prizing for your tournaments should rise with Tier. Players of the Gold tournament will be your most-engaged and highly-competitive players. Rigging the prize table payouts to increase with Tier will create a strong incentive for players to reach and stay in the highest tier. Balance prizing against your economy for your highest tier, and then reduce prizing for the lower tiers accordingly.  

When you rig the rewards, in addition to the payouts for a given rank, use a custom data entry in the tournament rewards to award a rankUp or rankDown. 

Awarding rankUp
Top performers in Bronze and Silver Tiers should win a rankUp as well as their prize. Do not award a RankUp for top performers in the highest Tier, since there is nowhere for them to rankUp to.

Awarding rankDown
Weak performers in the Silver and Gold tiers should win a rankDown.
Do not award rankDown for low performers in your lowest Tier, since there is nowhere for them to rank down to.
To isolate low performers for a rankDown, award a token prize to everyone above the threshold value, for example 75% and up. Then use Remainder to award a consolation prize and the rankDown to the users that will be demoted.

For example:
Rank == 1: coin = 10000, rankUp = True
Rank <= 25%: coin 500, rankUp = True
Rank <= 75%: coin 250
Remainder: coin 200, rankDown = True

For example, if the user is in a "bronze" tournament, and finishes in the top 25%, they will receive { "rankUp": "true" } in the response. 

(Design should adjust payouts and rankUp / rankDown thresholds as appropriate for the app economy.) 

Managing the User's Tier

Upon receiving a payout response, the developer should direct braincloud to process the rankUp / rankDown reward to set the user's new Tier. Store this tier in a user-entity. 

Upon receiving a payout response, the developer should direct brainCloud to process the rankUp / rankDown reward to set the user's new Tier. Store this tier in a user-entity. An example of contents to store in a user entity can be found here.

{ 
  "currentTournamentRank": "bronze",
  "lastRewards" : {
     "rankUp":true }
  }
}

Call a cloud script GetTournamentTier, when determining which tier the user should belong to in the upcoming tournament, check the current stored entity info.

Withering a User's Tier

Design may further wish the implementation of a system that reduces the user's eligible Tier if they fail to enter the next available Tournament.

Add additional info, lastTournamentVersion, { "currentTournamentRank": "silver", "lastTournamentVersion":1}.  Update GetTournamentTier to force certain tiers to wither when players weren't enrolled in the previous tournament version.  Do this by comparing the versionId of the tournament to join.

https://getbraincloud.com/apidocs/apiref/#capi-tournament-gettournamentstatus


User seeks to enter next Tournament

The next time the user goes to view the tournament offers in your app, look up their Tier  user entity to determine which tier they should be offered, and upon enrollment enroll them into the appropriate leaderboard/tournament. 

https://getbraincloud.com/apidocs/apiref/#capi-tournament-jointournament 

Create a cloud script JoinTournament that can confirm enrollment based on the data provided and strategies mentioned previously.

We recommend doing this via cloud code scripts so that it's simple to make adjustments, plus the tournament rewards themselves are already data-driven. 


Did this answer your question?