Links

Character Progressions

Character progressions are progressions that the character is currently on, your game may have many progressions but the character doesn't necessarily progress through all of them at a given time, some may need to be unlocked or may be mutually exclusive.
Starting a character on a progression is as easy as just starting to add points to it. That progression will then be listed when retrieving progressions for that character.

Retrieving character progressions

Retrieving a single character progression using the progression key

Unity
Unreal
int characterId = 1;
string progressionKey = "mage";
LootLockerSDKManager.GetCharacterProgression(characterId, progressionKey, response =>
{
if (!response.success) {
Debug.Log("Failed: " + response.Error);
}
// Output the character level and show how much points are needed to progress to the next tier
Debug.Log($"The character is currently level {response.step}");
if (response.next_threshold != null)
{
Debug.Log($"Points needed to reach next level: {response.next_threshold - response.points}");
}
});
Blueprint example of how to retrieve a single character progression using a progression key. To copy the example, see https://blueprintue.com/blueprint/8ky5so9r/.
Above is an example of how to implement retrieval of a single character progression using blueprints in Unreal Engine. For an example you can copy and paste into your editor, look here.

Input

You need to exchange the trigger with an event that you want to trigger the flow. For example a button click or xp gain.
Progression Key is required for this node so connect it from a variable or remove the reroute node and hard code a value in the node.
You also need to supply the id of the character for which you want to retrieve the progression.

Output

We recommend branching the completed event on the success flag, and if you do this you will probably want to add error handling in case the request fails.
The retrieved progression provides the id, key, and name of the progression. It also provides properties that tell you the place in the progression ladder, among that current amount of points, the previous threshold (points needed to achieve this level), next threshold (points needed to achieve next level), step (number of points between levels), as well as the date of the last level up.

Retrieving all character progressions

Unity
Unreal
int characterId = 1;
LootLockerSDKManager.GetCharacterProgressions(characterId, response =>
{
if (!response.success) {
Debug.Log("Failed: " + response.Error);
}
// Output the character level and show how much points are needed to progress to the next tier for all character progressions
foreach (var characterProgression in response.items)
{
Debug.Log($"Current level in {characterProgression.progression_name} is {characterProgression.step}");
if (characterProgression.next_threshold != null)
{
Debug.Log($"Points needed to reach next level in {characterProgression.progression_name}: {characterProgression.next_threshold - characterProgression.points}");
}
}
});
Blueprint example of how to retrieve multiple character progressions. To copy the example, see https://blueprintue.com/blueprint/dcmlm8nc/.
Above is an example of how to implement retrieval of multiple character progressions using blueprints in Unreal Engine. For an example you can copy and paste into your editor, look here.

Input

You need to exchange the trigger with an event that you want to trigger the flow. For example a button click or level start.
You also need to supply the id of the character for which you want to retrieve the progression.

Output

We recommend branching the completed event on the success flag, and if you do this you will probably want to add error handling in case the request fails.
The response is a list of progressions as well as pagination data (for information on how to use that see the section on it). The returned progressions contain the needed information on each progression that you may want to use for display or flow control.

Retrieving character progressions using count

Count can be used to limit the number of entries returned.
Unity
int characterId = 1;
int count = 20;
LootLockerSDKManager.GetCharacterProgressions(characterId, count, response =>
{
if (!response.success) {
Debug.Log("Failed: " + response.Error);
}
// Output the character level and show how much points are needed to progress to the next tier for all character progressions
foreach (var characterProgression in response.items)
{
Debug.Log($"Current level in {characterProgression.progression_name} is {characterProgression.step}");
if (characterProgression.next_threshold != null)
{
Debug.Log($"Points needed to reach next level in {characterProgression.progression_name}: {characterProgression.next_threshold - characterProgression.points}");
}
}
});

Paginating through character progressions

You can use "after" parameter to paginate if the character is on many progressions.
Unity
Unreal
int characterId = 1;
int numberOfItemsPerPage = 10;
LootLockerPaginatedCharacterProgressionsResponse characterProgressions;
void Start()
{
LootLockerSDKManager.StartGuestSession(_ =>
{
// Fetch the initial character progressions list
LootLockerSDKManager.GetCharacterProgressions(characterId, numberOfItemsPerPage, response =>
{
if (!response.success)
{
Debug.Log("Failed: " + response.Error);
}
if (response.pagination.total == 0)
{
Debug.Log("You character does not have any progressions, start them by giving some exp to the character");
}
characterProgressions = response;
});
});
}
void Update()
{
if (characterProgressions == null) return;
// Fetch the next page if more character progressions exist
if (Input.GetKeyDown(KeyCode.RightArrow) && characterProgressions.pagination.next_cursor != null)
{
LootLockerSDKManager.GetCharacterProgressions(characterId, numberOfItemsPerPage, characterProgressions.pagination.next_cursor, response =>
{
if (!response.success)
{
Debug.Log("Failed: " + response.Error);
}
characterProgressions = response;
Debug.Log($"Paginating right, got {characterProgressions.items.Count} character progressions");
});
}
// Fetch the previous page if we are not on the first page
if (Input.GetKeyDown(KeyCode.LeftArrow) && characterProgressions.pagination.previous_cursor != null)
{
LootLockerSDKManager.GetCharacterProgressions(characterId, numberOfItemsPerPage, characterProgressions.pagination.previous_cursor, response =>
{
if (!response.success)
{
Debug.Log("Failed: " + response.Error);
}
characterProgressions = response;
Debug.Log($"Paginating left, got {characterProgressions.items.Count} character progressions");
});
}
}
Blueprint example of how to retrieve multiple character progressions. To copy the example, see https://blueprintue.com/blueprint/cpluomb6/.
Above is an example of how to implement retrieval of multiple character progressions supplying a count to limit the number of progressions to receive and supplying a cursor into the after parameter to paginate using blueprints in Unreal Engine. For an example you can copy and paste into your editor, look here.

Input

You need to exchange the trigger with an event that you want to trigger the flow. For example a button click or level start.
You also need to supply the id of the character for which you want to retrieve the progression.
To use pagination you should supply a value to the after parameter and optionally a value to the count parameter. For an explanation, see below.

Output

We recommend branching the completed event on the success flag, and if you do this you will probably want to add error handling in case the request fails.
The response contains a list of progressions. The returned progressions contain the needed information on each progression that you may want to use for display or flow control.
The response also contains pagination data which you use as follows.
Usage example
Understanding pagination for the first time can be a challenge. So an example can help.
Say you have 50 progressions to receive. You can do this with pagination like this:
  1. 1.
    Trigger the GetCharacterProgressions node with a count parameter of 10.
    1. 1.
      Use the 10 progression items returned as you want (for example display in the UI). Note that out of your 50 progressions, these are progressions 1-10.
    2. 2.
      Save the returned pagination data to make the next request. The most important here is the "Next Cursor" property. This is the value that you need to submit to subsequent GetCharacterProgressions calls to "offset" the call to start at the next progression item after the ones you've already received.
  2. 2.
    Trigger the GetCharacterProgressions node again with a count of 10 but now also input the value "Next Cursor" into the after parameter. This tells the node to start off where it finished last time.
    1. 1.
      Use the 10 new progression items returned as you want. Note that this time it is progressions 11-20 of your 50 progressions.
    2. 2.
      Again, save the returned pagination data so that you can make subsequent requests.
  3. 3.
    Repeat step 2 with new values for "Next Cursor" until you have received all the progressions.
This is how you paginate. It may seem redundant in this example because you could just set Count to 50 and get everything at once. But imagine you have thousands of progressions with rewards of all kinds. Then this system is very valuable.

Interacting with character progressions

Adding points to a character progression

Unity
Unreal
int characterId = 1;
string progressionKey = "mage";
ulong amountOfPoints = 100;
LootLockerSDKManager.AddPointsToCharacterProgression(characterId, progressionKey, amountOfPoints, response =>
{
if (!response.success) {
Debug.Log("Failed: " + response.Error);
}
// If the awarded_tiers array contains any items that means the character leveled up
// There can also be multiple level-ups at once
if (response.awarded_tiers.Any())
{
foreach (var awardedTier in response.awarded_tiers)
{
Debug.Log($"Reached level {awardedTier.step}!");
foreach (var assetReward in awardedTier.rewards.asset_rewards)
{
Debug.Log($"Rewarded with an asset, id: {assetReward.asset_id}!");
}
foreach (var progressionPointsReward in awardedTier.rewards.progression_points_rewards)
{
Debug.Log($"Rewarded with {progressionPointsReward.amount} bonus points in {progressionPointsReward.progression_name} progression!");
}
foreach (var progressionResetReward in awardedTier.rewards.progression_reset_rewards)
{
Debug.Log($"Progression {progressionResetReward.progression_name} has been reset as a reward!");
}
}
}
});
Blueprint example of how to add points to a character progression. To copy the example, see https://blueprintue.com/blueprint/w9mso2e7/.
Above is an example of how to add points to a character progression using blueprints in Unreal Engine. For an example you can copy and paste into your editor, look here.

Input

You need to exchange the trigger with an event that you want to trigger the flow. For example a button click or level start.
You also need to supply the id of the character for which you want to retrieve the progression.
Progression Key is required for this node so connect it from a variable or remove the reroute node and hard code a value in the node.
The node also requires you to supply an amount of points to add to the progression.

Output

We recommend branching the completed event on the success flag, and if you do this you will probably want to add error handling in case the request fails.
The response contains the current state of the progression, like when getting a single progression. It also contains a list of all the awards received after the points were added.

Subtracting points from a character progression

Unity
Unreal
int characterId = 1;
string progressionKey = "mage";
ulong amountOfPoints = 10;
LootLockerSDKManager.SubtractPointsFromCharacterProgression(characterId, progressionKey, amountOfPoints, response =>
{
if (!response.success) {
Debug.Log("Failed: " + response.Error);
}
// Output the amount of points the character has after subtracting points
Debug.Log($"Character now has {response.points} points in {response.progression_name} progression");
});
Blueprint example of how to subtracting points from a character progression. To copy the example, see https://blueprintue.com/blueprint/h42fj_00/.
Above is an example of how to subtract points from a character progression using blueprints in Unreal Engine. For an example you can copy and paste into your editor, look here.

Input

You need to exchange the trigger with an event that you want to trigger the flow. For example a button click or level start.
You also need to supply the id of the character for which you want to retrieve the progression.
Progression Key is required for this node so connect it from a variable or remove the reroute node and hard code a value in the node.
The node also requires you to supply points to subtract from the progression.

Output

We recommend branching the completed event on the success flag, and if you do this you will probably want to add error handling in case the request fails.
The response contains the current state of the progression, like when getting a single progression. It also contains a list of all the awards received after the points were subtracted.

Resetting a character progression

Resets the character progression points to 0, effectively returning the character to level 1, if you want to remove the progression from a character see below.
Unity
Unreal
int characterId = 1;
string progressionKey = "mage";
LootLockerSDKManager.ResetCharacterProgression(characterId, progressionKey, response =>
{
if (!response.success) {
Debug.Log("Failed: " + response.Error);
}
// Character level is now 1
Debug.Log($"Character is level {response.step} since the {response.progression_name} was reset");
});
Blueprint example of how to resetting a character progression. To copy the example, see https://blueprintue.com/blueprint/0aie8c1f/.
Above is an example of how to reset a character progression using blueprints in Unreal Engine. For an example you can copy and paste into your editor, look here.

Input

You need to exchange the trigger with an event that you want to trigger the flow. For example a button click or level start.
You also need to supply the id of the character for which you want to retrieve the progression.
Progression Key is required for this node so connect it from a variable or remove the reroute node and hard code a value in the node.

Output

We recommend branching the completed event on the success flag, and if you do this you will probably want to add error handling in case the request fails.
The response contains the current state of the progression, like when getting a single progression. It also contains a list of all the awards received after the points were subtracted.

Deleting a character progression

Completely removes a character progression, it will no longer be listed when retrieving character progressions.
Unity
Unreal
int characterId = 1;
string progressionKey = "mage";
LootLockerSDKManager.DeleteCharacterProgression(characterId, progressionKey, response =>
{
if (!response.success) {
Debug.Log("Failed: " + response.Error);
}
// Trying to fetch the deleted character progression will result in a "Not Found" error
LootLockerSDKManager.GetCharacterProgression(progressionKey, response =>
{
if (!response.success) {
Debug.Log("Failed: " + response.Error);
}
}
});
Blueprint example of how to delete a character progression. To copy the example, see https://blueprintue.com/blueprint/zx2b8owe/.
Above is an example of how to delete a character progression using blueprints in Unreal Engine. For an example you can copy and paste into your editor, look here.

Input

You need to exchange the trigger with an event that you want to trigger the flow. For example a button click or level start.
You also need to supply the id of the character for which you want to retrieve the progression.
Progression Key is required for this node so connect it from a variable or remove the reroute node and hard code a value in the node.

Output

We recommend branching the completed event on the success flag, and if you do this you will probably want to add error handling in case the request fails.