Progression Dashboard
Track player progression, level completion, and achievement unlocks.
Overview
The Progression Dashboard provides insights into how players move through your game:
- Level Funnels -- Completion rates by level/stage
- Drop-off Points -- Where players stop progressing
- Difficulty Analysis -- Attempts and failure rates per level
- Player Velocity -- How fast different player segments progress
- Achievement Distribution -- Unlock rates across your player base
Required Events
| Event | SDK Method | Auto-Tracked | Priority |
|---|---|---|---|
progression | TrackProgression() | No | Required |
level_up | TrackLevelUp() | No | Recommended |
achievement | TrackAchievement() | No | Recommended |
Event Implementation
Progression Event
The progression event is the most detailed tracking method for player advancement. Use it for level starts, completions, and failures to build full-funnel visibility.
using GameRebellionSdk.Unity;
// Level start
GameRebellion.TrackProgression(new GrProgressionEvent
{
Type = "level",
Status = "start",
Progression01 = "world_1",
Progression02 = "level_5",
Difficulty = "normal"
});
// Level complete
GameRebellion.TrackProgression(new GrProgressionEvent
{
Type = "level",
Status = "complete",
Progression01 = "world_1",
Progression02 = "level_5",
Score = 15000,
CompletionTime = 245.0,
Difficulty = "normal",
AttemptNumber = 2,
ObjectivesCompleted = 3,
ObjectivesTotal = 3,
EnemiesDefeated = 12,
CurrencyEarned = 500,
CurrencyType = "gold",
ExperienceGained = 200
});
// Level fail
GameRebellion.TrackProgression(new GrProgressionEvent
{
Type = "level",
Status = "fail",
Progression01 = "world_1",
Progression02 = "level_5",
Difficulty = "hard",
AttemptNumber = 3,
DeathsCount = 5,
HealthRemaining = 0,
CompletionPercentage = 72.5
});
// Boss fight
GameRebellion.TrackProgression(new GrProgressionEvent
{
Type = "boss",
Status = "complete",
Progression01 = "world_1",
Progression02 = "boss_dragon",
Score = 25000,
LivesUsed = 2,
LivesRemaining = 1,
NewRecord = true
});
// Tutorial completion
GameRebellion.TrackProgression(new GrProgressionEvent
{
Type = "tutorial",
Status = "complete",
Progression01 = "onboarding",
CompletionTime = 180.0
});
GrProgressionEvent Fields
| Field | Type | Required | Description |
|---|---|---|---|
Type | string | Yes | Progression category: "level", "boss", "tutorial", "quest". |
Status | string | Yes | "start", "complete", or "fail". |
Progression01 | string | No | Top-level grouping (e.g., world or chapter). |
Progression02 | string | No | Mid-level grouping (e.g., level or stage). |
Progression03 | string | No | Fine-grained grouping (e.g., sub-level or wave). |
Difficulty | string | No | Difficulty setting. |
AttemptNumber | double? | No | How many times the player has tried this. |
Score | double? | No | Score achieved. |
CompletionTime | double? | No | Time to complete in seconds. |
CompletionPercentage | double? | No | How far the player got (0-100) on failure. |
ObjectivesCompleted | double? | No | Number of objectives completed. |
ObjectivesTotal | double? | No | Total objectives available. |
LivesUsed | double? | No | Lives consumed during the attempt. |
LivesRemaining | double? | No | Lives left after the attempt. |
HealthRemaining | double? | No | Remaining health on completion/failure. |
NewRecord | bool? | No | Whether this was a personal best. |
EnemiesDefeated | double? | No | Enemy kill count. |
ItemsCollected | double? | No | Items picked up. |
DistanceTraveled | double? | No | Distance covered. |
DeathsCount | double? | No | Number of deaths. |
CurrencyEarned | double? | No | In-game currency earned. |
CurrencyType | string | No | Type of currency earned (e.g., "gold", "gems"). |
ExperienceGained | double? | No | XP gained. |
LevelUpTriggered | bool? | No | Whether this progression triggered a level up. |
Level Up Event
Track when a player reaches a new character or account level.
// Player reaches level 5
GameRebellion.TrackLevelUp(new GrLevelUpEvent
{
Level = 5
});
// Player reaches max level
GameRebellion.TrackLevelUp(new GrLevelUpEvent
{
Level = 100
});
GrLevelUpEvent Fields
| Field | Type | Required | Description |
|---|---|---|---|
Level | double | No | The new level reached. |
Achievement Event
Track when a player unlocks an achievement.
// First boss defeated
GameRebellion.TrackAchievement(new GrAchievementEvent
{
Id = "dragon_slayer"
});
// Speed run achievement
GameRebellion.TrackAchievement(new GrAchievementEvent
{
Id = "speed_demon_level_1"
});
GrAchievementEvent Fields
| Field | Type | Required | Description |
|---|---|---|---|
Id | string | Yes | Unique achievement identifier. |
Metrics Unlocked
| Metric | Description | Event Source |
|---|---|---|
| Level Completion Rate | % of players completing each level | progression (start + complete) |
| Level Drop-off | Where players stop progressing | progression (start without complete) |
| Avg Attempts per Level | Difficulty indicator | progression (AttemptNumber) |
| Player Velocity | Progression speed by segment | progression (CompletionTime) |
| Achievement Unlock Rate | % of players unlocking each achievement | achievement |
| Level Distribution | Player level distribution | level_up |
Best Practices
- Track both start and complete. Sending
Status = "start"andStatus = "complete"(or"fail") gives you funnel data. Without start events, you cannot calculate completion rates. - Use the 3-tier progression hierarchy.
Progression01>Progression02>Progression03maps naturally to World > Level > Wave or Chapter > Stage > Checkpoint. - Include attempt count.
AttemptNumberreveals difficulty spikes and helps identify levels that need balancing. - Track tutorial completion. Use
Type = "tutorial"withStatus = "complete"to measure your onboarding funnel.
Implementation Checklist
-
TrackProgression()withStatus = "start"at level/stage beginning -
TrackProgression()withStatus = "complete"or"fail"at level/stage end -
TrackLevelUp()called on character/account level changes -
TrackAchievement()called for achievement unlocks - Tutorial completion tracked via
TrackProgression()