Game Progressions

Game progressions are all of the progressions defined for your game in the Web Console.

You can create as many progressions with as many tiers and rewards as your game needs, go wild!

This section shows you how to fetch progressions, tiers and rewards in your game.

Retrieving progressions

Retrieving a single progression using the progression key

string progressionKey = "mage";

LootLockerSDKManager.GetProgression(progressionKey, response =>
{
    if (!response.success) {
        Debug.Log("Failed: " + response.Error);
    }
    
    // Output the name of the fetched progression
    Debug.Log(response.name);
});

Retrieving all progressions

LootLockerSDKManager.GetProgressions(response =>
{
    if (!response.success) {
        Debug.Log("Failed: " + response.Error);
    }

    if (!response.items.Any())
    {
        Debug.Log("Your game does not have any progressions, login to your LootLocker web console and create some");
    }
    
    // Output the name for all progressions
    foreach (var progression in response.items)
    {
        Debug.Log(progression.name);
    }
});

Retrieving all progressions using count

Count can be used to limit the number of entries returned.

int count = 20;

LootLockerSDKManager.GetProgressions(count, response =>
{
    if (!response.success) {
        Debug.Log("Failed: " + response.Error);
    }

    if (!response.items.Any())
    {
        Debug.Log("Your game does not have any progressions, login to your LootLocker web console and create some");
    }
    
    // Output the name for all progressions
    foreach (var progression in response.items)
    {
        Debug.Log(progression.name);
    }
});

Paginating through progressions

You can use "after" parameter to paginate if your game has many progressions.

int numberOfItemsPerPage = 10;
LootLockerPaginatedProgressionsResponse progressions;

void Start()
{
    LootLockerSDKManager.StartGuestSession(_ =>
    {
        // Fetch the initial progressions list
        LootLockerSDKManager.GetProgressions(numberOfItemsPerPage, response =>
        {
            if (!response.success)
            {
                Debug.Log("Failed: " + response.Error);
            }

            if (response.pagination.total == 0)
            {
                Debug.Log("You game does not have any progressions, login to your LootLocker web console and create some");
            }

            progressions = response;
        });
    });
}

void Update()
{
    if (progressions == null) return;

    // Fetch the next page if more progressions exist
    if (Input.GetKeyDown(KeyCode.RightArrow) && progressions.pagination.next_cursor != null)
    {
        LootLockerSDKManager.GetProgressions(numberOfItemsPerPage, progressions.pagination.next_cursor, response =>
        {
            if (!response.success)
            {
                Debug.Log("Failed: " + response.Error);
            }
            
            progressions = response;
            Debug.Log($"Paginating right, got {progressions.items.Count} progressions");
        });
    }

    // Fetch the previous page if we are not on the first page
    if (Input.GetKeyDown(KeyCode.LeftArrow) && progressions.pagination.previous_cursor != null)
    {
        LootLockerSDKManager.GetProgressions(numberOfItemsPerPage, progressions.pagination.previous_cursor, response =>
        {
            if (!response.success)
            {
                Debug.Log("Failed: " + response.Error);
            }

            progressions = response;
            Debug.Log($"Paginating left, got {progressions.items.Count} progressions");
        });
    }
}

Retrieving progression tiers

Retrieving all progression tiers

string progressionKey = "mage";

LootLockerSDKManager.GetProgressionTiers(progressionKey, response =>
{
    if (!response.success) {
        Debug.Log("Failed: " + response.Error);
    }
    
    // Output the progression tiers with levels, required points and rewards
    foreach (var progressionTier in response.items)
    {
        Debug.Log($"Level {progressionTier.step} requires {progressionTier.points_threshold} experience points");

        foreach (var assetReward in progressionTier.rewards.asset_rewards)
        {
            Debug.Log($"Reaching level {progressionTier.step} awards asset with id: {assetReward.asset_id}");
        }
        
        foreach (var progressionPointsReward in progressionTier.rewards.progression_points_rewards)
        {
            Debug.Log($"Reaching level {progressionTier.step} awards {progressionPointsReward.amount} points in {progressionPointsReward.progression_name} progression");
        }
        
        foreach (var progressionResetReward in progressionTier.rewards.progression_reset_rewards)
        {
            Debug.Log($"Reaching level {progressionTier.step} resets the {progressionResetReward.progression_name} progression");
        }
    }
});

Retrieving all progression tiers using count

Count can be used to limit the number of entries returned.

string progressionKey = "mage";
int count = 20;

LootLockerSDKManager.GetProgressionTiers(progressionKey, count, response =>
{
    if (!response.success) {
        Debug.Log("Failed: " + response.Error);
    }
    
    // Output the progression tiers with levels, required points and rewards
    foreach (var progressionTier in response.items)
    {
        Debug.Log($"Level {progressionTier.step} requires {progressionTier.points_threshold} experience points");

        foreach (var assetReward in progressionTier.rewards.asset_rewards)
        {
            Debug.Log($"Reaching level {progressionTier.step} awards asset with id: {assetReward.asset_id}");
        }
        
        foreach (var progressionPointsReward in progressionTier.rewards.progression_points_rewards)
        {
            Debug.Log($"Reaching level {progressionTier.step} awards {progressionPointsReward.amount} points in {progressionPointsReward.progression_name} progression");
        }
        
        foreach (var progressionResetReward in progressionTier.rewards.progression_reset_rewards)
        {
            Debug.Log($"Reaching level {progressionTier.step} resets the {progressionResetReward.progression_name} progression");
        }
    }
});

Paginating through progression tiers

You can use "after" parameter to paginate if your progression has many tiers.

string progressionKey = "mage";
int numberOfItemsPerPage = 10;
LootLockerPaginatedProgressionTiersResponse progressionTiers;

void Start()
{
    LootLockerSDKManager.StartGuestSession(_ =>
    {
        // Fetch the initial list of character progressions
        LootLockerSDKManager.GetProgressionTiers(progressionKey, numberOfItemsPerPage, response =>
        {
            if (!response.success)
            {
                Debug.Log("Failed: " + response.Error);
            }

            progressionTiers = response;
        });
    });
}

void Update()
{
    if (progressionTiers == null) return;

    // Fetch the next page if more tiers exist
    if (Input.GetKeyDown(KeyCode.RightArrow) && progressionTiers.pagination.next_cursor != null)
    {
        LootLockerSDKManager.GetProgressionTiers(progressionKey, numberOfItemsPerPage, progressionTiers.pagination.next_cursor, response =>
        {
            if (!response.success)
            {
                Debug.Log("Failed: " + response.Error);
            }
            
            progressionTiers = response;
            Debug.Log($"Paginating right, got {progressionTiers.items.Count} progression tiers");
        });
    }
    
    // Fetch the previous page if we are not on the first page
    if (Input.GetKeyDown(KeyCode.LeftArrow) && progressionTiers.pagination.previous_cursor != null)
    {
        LootLockerSDKManager.GetProgressionTiers(progressionKey, numberOfItemsPerPage, progressionTiers.pagination.previous_cursor, response =>
        {
            if (!response.success)
            {
                Debug.Log("Failed: " + response.Error);
            }

            progressionTiers = response;
            Debug.Log($"Paginating left, got {progressionTiers.items.Count} progression tiers");
        });
    }
}

Last updated