GS2-Experience

Experience and rank functions

Growth is an essential element of game as a service. We provide experience and ranking features to implement a game cycle in which players can grow their characters and take on more challenging content with their grown characters.

Rank

GS2-Experience automatically calculates ranks from experience values. To do this, you need to define an experience value table that uses master data as rank-up thresholds. You can manage the rank-up thresholds in the experience model and hang property IDs with arbitrary values below them. For each property ID, the experience value is managed and the rank is determined based on the experience value.

Rank Cap

Ranks can be capped. If an experience value is gained while the rank cap is reached, the experience value is discarded.

The rank cap is initially set in the experience model, but can be raised for each property ID individually. This makes it possible to raise the experience cap when it is exceeded.

Example of implementation

Experience value addition

The game engine SDK does not handle experience accumulation.

Please add experience as a reward for completing GS2 quests or as a reward for upgrading GS2-Enhance.

Raising the Rank Cap

Raising the rank cap cannot be handled by the game engine SDK.

Please use GS2-Exchange to raise the rank cap as a reward for enhancement materials or exchange for the same character.

Get a list of experience values

    var items = await gs2.Experience.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).StatusesAsync(
    ).ToListAsync();
    const auto Domain = Gs2->Experience->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        AccessToken
    );
    const auto It = Domain->Statuses( // experienceName
    );
    TArray<Gs2::UE5::Experience::Model::FEzStatusPtr> Result;
    for (auto Item : *It)
    {
        if (Item.IsError())
        {
            return false;
        }
        Result.Add(Item.Current());
    }

Get a experience value

    var item = await gs2.Experience.Namespace(
        namespaceName: "namespace-0001"
    ).Me(
        gameSession: GameSession
    ).Status(
        experienceName: "character_ssr",
        propertyId: "property-0001"
    ).ModelAsync();
    const auto Domain = Gs2->Experience->Namespace(
        "namespace-0001" // namespaceName
    )->Me(
        AccessToken
    )->Status(
        "character_ssr", // experienceName
        "property-0001" // propertyId
    );
    const auto item = Domain.Model();

Detailed Reference