NAV
Unity Unreal Engine 4

GS2-Stamina

GS2-SDK for Game Engine のリファレンス

ゲームエンジン向けSDK

モデル

EzStaminaModel

スタミナモデル

スタミナの最大値や、回復間隔、回復量といったパラメータを定義できます。
GS2-Experience と連動させて、最大値や回復量をコントロールすることもできます。

説明
name string スタミナモデル名
metadata string メタデータ
recoverIntervalMinutes int スタミナを回復する速度(分)
recoverValue int 時間経過後に回復する量
initialCapacity int スタミナの最大値の初期値
isOverflow bool 最大値を超えて回復するか
maxCapacity int 溢れた状況での最大値
maxStaminaTable EzMaxStaminaTable GS2-Experience と連携する際に使用するスタミナ最大値テーブル
recoverIntervalTable EzRecoverIntervalTable GS2-Experience と連携する際に使用する回復間隔テーブル
recoverValueTable EzRecoverValueTable GS2-Experience と連携する際に使用する回復量テーブル

EzMaxStaminaTable

スタミナ最大値テーブル

GS2-Experience のランクごとにスタミナの最大値を定義するエンティティです。

説明
name string 最大スタミナ値テーブル名
metadata string メタデータ
experienceModelId string 経験値モデルGRN
values List<int> ランク毎のスタミナの最大値テーブル

EzRecoverIntervalTable

スタミナ回復間隔テーブル

GS2-Experience のランクごとにスタミナの回復間隔を定義するエンティティです。

説明
name string スタミナ回復間隔テーブル名
metadata string メタデータ
experienceModelId string 経験値モデルGRN
values List<int> ランク毎のスタミナ回復間隔テーブル

EzRecoverValueTable

スタミナ回復量テーブル

GS2-Experience のランクごとにスタミナの回復量を定義するエンティティです。

説明
name string スタミナ回復量テーブル名
metadata string メタデータ
experienceModelId string 経験値モデルGRN
values List<int> ランク毎のスタミナ回復量テーブル

EzStamina

スタミナ

スタミナとは現実時間の時間経過で回復するポイントです。
一般的にこのスタミナを消費してゲームをプレイできるようにすることで、プレイヤーの1日のプレイ回数を制限し、ゲームの進行速度をゲーム提供側がコントロールする目的で使用されます。

説明
staminaName string スタミナモデルの名前
value int スタミナ値
overflowValue int スタミナの最大値を超えて格納されているスタミナ値
maxValue int スタミナの最大値
recoverIntervalMinutes int スタミナの回復間隔(分)
recoverValue int スタミナの回復量
nextRecoverAt long 次回スタミナが回復する時間

メソッド

getStaminaModel

getStaminaModel

ProfilePtr = std::make_shared<gs2::ez::Profile>(
    TCHAR_TO_ANSI(*ClientId),
    TCHAR_TO_ANSI(*ClientSecret),
    gs2::ez::Gs2BasicReopener()
);

ClientPtr = std::make_shared<gs2::ez::Client>(
    *ProfilePtr
);

ProfilePtr->initialize(
    [this](gs2::ez::Profile::AsyncInitializeResult r)
    {
        if (r.getError())
        {
            GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, "profile.initialize failed.");
        }
        else
        {
            AccountCreate();
        }
    }
);

// Up to this line is the initialization process.

ClientPtr->stamina.getStaminaModel(
    [](gs2::ez::account::AsyncEzGetStaminaModelResult r)
    {
        if (r.getError())
        {
            GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, "stamina.getStaminaModel failed.");
        }
        else
        {
            Item = r.getResult()->getItem();
        }
    },
    TCHAR_TO_ANSI("namespace2"), // namespaceName
    TCHAR_TO_ANSI("stamina-0001") // staminaName
);

///////////////////////////////////////////////////////////////
// New Experience (Enabled UniTask)
///////////////////////////////////////////////////////////////

using Gs2.Unity.Util;
#if GS2_ENABLE_UNITASK
using Cysharp.Threading.Tasks;
using Cysharp.Threading.Tasks.Linq;
#endif

var profile = new Profile(
    clientId: "your client id",
    clientSecret: "your client secret",
    reopener: new Gs2BasicReopener()
);
await profile.InitializeAsync();
var gs2 = new Gs2.Unity.Core.Gs2Domain(profile);

// Up to this line is the initialization process.

{
    var domain = gs2.Stamina.Namespace(
        namespaceName: "namespace2"
    ).StaminaModel(
        staminaName: "stamina-0001"
    );
    var item = await domain.ModelAsync();
}
///////////////////////////////////////////////////////////////
// Legacy Experience
///////////////////////////////////////////////////////////////

using Gs2.Core.AsyncResult;
using Gs2.Gs2Account.Unity.Result;
using Gs2.Unity.Util;

var profile = new Profile(
    clientId: "your client id",
    clientSecret: "your client secret",
    reopener: new Gs2BasicReopener()
);

{
    AsyncResult<object> asyncResult = null;

    var current = profile.Initialize(
        r => { asyncResult = r; }
    );

    yield return current;

    if (asyncResult.Error != null)
    {
        OnError(asyncResult.Error);
        yield break;
    }
}
var gs2 = new Gs2.Unity.Client(profile);

// Up to this line is the initialization process.

{
    AsyncResult<EzGetStaminaModelResult> asyncResult = null;
    var current = gs2.Stamina.GetStaminaModel(
        callback: r => { asyncResult = r; },
        namespaceName: "namespace2",
        staminaName: "stamina-0001"
    );

    yield return current;
    if (asyncResult.Error != null)
    {
        OnError(asyncResult.Error);
        yield break;
    }

    var result = asyncResult.Result;
    var item = result.Item;
}

スタミナモデルを取得

Request

必須 デフォルト 値の制限 説明
namespaceName string ~ 32文字 ネームスペース名
staminaName string ~ 128文字 スタミナモデル名

Result

説明
item EzStaminaModel スタミナモデル

listStaminaModels

listStaminaModels

ProfilePtr = std::make_shared<gs2::ez::Profile>(
    TCHAR_TO_ANSI(*ClientId),
    TCHAR_TO_ANSI(*ClientSecret),
    gs2::ez::Gs2BasicReopener()
);

ClientPtr = std::make_shared<gs2::ez::Client>(
    *ProfilePtr
);

ProfilePtr->initialize(
    [this](gs2::ez::Profile::AsyncInitializeResult r)
    {
        if (r.getError())
        {
            GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, "profile.initialize failed.");
        }
        else
        {
            AccountCreate();
        }
    }
);

// Up to this line is the initialization process.

ClientPtr->stamina.describeStaminaModels(
    [](gs2::ez::account::AsyncEzDescribeStaminaModelsResult r)
    {
        if (r.getError())
        {
            GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, "stamina.describeStaminaModels failed.");
        }
        else
        {
            Items = r.getResult()->getItems();
        }
    },
    TCHAR_TO_ANSI("namespace2") // namespaceName
);

///////////////////////////////////////////////////////////////
// New Experience (Enabled UniTask)
///////////////////////////////////////////////////////////////

using Gs2.Unity.Util;
#if GS2_ENABLE_UNITASK
using Cysharp.Threading.Tasks;
using Cysharp.Threading.Tasks.Linq;
#endif

var profile = new Profile(
    clientId: "your client id",
    clientSecret: "your client secret",
    reopener: new Gs2BasicReopener()
);
await profile.InitializeAsync();
var gs2 = new Gs2.Unity.Core.Gs2Domain(profile);

// Up to this line is the initialization process.

{
    var domain = gs2.Stamina.Namespace(
        namespaceName: "namespace2"
    );
    var items = await domain.StaminaModelsAsync(
    ).ToListAsync();
}
///////////////////////////////////////////////////////////////
// Legacy Experience
///////////////////////////////////////////////////////////////

using Gs2.Core.AsyncResult;
using Gs2.Gs2Account.Unity.Result;
using Gs2.Unity.Util;

var profile = new Profile(
    clientId: "your client id",
    clientSecret: "your client secret",
    reopener: new Gs2BasicReopener()
);

{
    AsyncResult<object> asyncResult = null;

    var current = profile.Initialize(
        r => { asyncResult = r; }
    );

    yield return current;

    if (asyncResult.Error != null)
    {
        OnError(asyncResult.Error);
        yield break;
    }
}
var gs2 = new Gs2.Unity.Client(profile);

// Up to this line is the initialization process.

{
    AsyncResult<EzListStaminaModelsResult> asyncResult = null;
    var current = gs2.Stamina.ListStaminaModels(
        callback: r => { asyncResult = r; },
        namespaceName: "namespace2"
    );

    yield return current;
    if (asyncResult.Error != null)
    {
        OnError(asyncResult.Error);
        yield break;
    }

    var result = asyncResult.Result;
    var items = result.Items;
}

スタミナモデルリストを取得

Request

必須 デフォルト 値の制限 説明
namespaceName string ~ 32文字 ネームスペース名

Result

説明
items List<EzStaminaModel> スタミナモデルのリスト

consume

consume

ProfilePtr = std::make_shared<gs2::ez::Profile>(
    TCHAR_TO_ANSI(*ClientId),
    TCHAR_TO_ANSI(*ClientSecret),
    gs2::ez::Gs2BasicReopener()
);

ClientPtr = std::make_shared<gs2::ez::Client>(
    *ProfilePtr
);

ProfilePtr->initialize(
    [this](gs2::ez::Profile::AsyncInitializeResult r)
    {
        if (r.getError())
        {
            GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, "profile.initialize failed.");
        }
        else
        {
            AccountCreate();
        }
    }
);

// Up to this line is the initialization process.

ClientPtr->stamina.consumeStamina(
    [](gs2::ez::account::AsyncEzConsumeStaminaResult r)
    {
        if (r.getError())
        {
            GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, "stamina.consumeStamina failed.");
        }
        else
        {
            Item = r.getResult()->getItem();
            StaminaModel = r.getResult()->getStaminaModel();
        }
    },
    ProfilePtr->getGs2Session(),
    TCHAR_TO_ANSI("namespace2"), // namespaceName
    TCHAR_TO_ANSI("stamina-0001"), // staminaName
    50 // consumeValue
);

///////////////////////////////////////////////////////////////
// New Experience (Enabled UniTask)
///////////////////////////////////////////////////////////////

using Gs2.Unity.Util;
#if GS2_ENABLE_UNITASK
using Cysharp.Threading.Tasks;
using Cysharp.Threading.Tasks.Linq;
#endif

var profile = new Profile(
    clientId: "your client id",
    clientSecret: "your client secret",
    reopener: new Gs2BasicReopener()
);
await profile.InitializeAsync();
var gs2 = new Gs2.Unity.Core.Gs2Domain(profile);

// Up to this line is the initialization process.

{
    var domain = gs2.Stamina.Namespace(
        namespaceName: "namespace2"
    ).Me(
        gameSession: gameSession
    ).Stamina(
        staminaName: "stamina-0001"
    );
    var result = await domain.ConsumeAsync(
        consumeValue: 50
    );
    var item = await result.ModelAsync();
    var staminaModel = result.StaminaModel;
}
///////////////////////////////////////////////////////////////
// Legacy Experience
///////////////////////////////////////////////////////////////

using Gs2.Core.AsyncResult;
using Gs2.Gs2Account.Unity.Result;
using Gs2.Unity.Util;

var profile = new Profile(
    clientId: "your client id",
    clientSecret: "your client secret",
    reopener: new Gs2BasicReopener()
);

{
    AsyncResult<object> asyncResult = null;

    var current = profile.Initialize(
        r => { asyncResult = r; }
    );

    yield return current;

    if (asyncResult.Error != null)
    {
        OnError(asyncResult.Error);
        yield break;
    }
}
var gs2 = new Gs2.Unity.Client(profile);

// Up to this line is the initialization process.

{
    AsyncResult<EzConsumeResult> asyncResult = null;
    var current = gs2.Stamina.Consume(
        callback: r => { asyncResult = r; },
        session: session,
        namespaceName: "namespace2",
        staminaName: "stamina-0001",
        consumeValue: 50
    );

    yield return current;
    if (asyncResult.Error != null)
    {
        OnError(asyncResult.Error);
        yield break;
    }

    var result = asyncResult.Result;
    var item = result.Item;
    var staminaModel = result.StaminaModel;
}

スタミナを消費

Request

必須 デフォルト 値の制限 説明
namespaceName string ~ 32文字 ネームスペース名
staminaName string ~ 128文字 スタミナモデルの名前
accessToken string ~ 128文字 ユーザーID
consumeValue int 1 ~ 2147483646 消費するスタミナ量

Result

説明
item EzStamina スタミナ
staminaModel EzStaminaModel スタミナモデル

getStamina

getStamina

ProfilePtr = std::make_shared<gs2::ez::Profile>(
    TCHAR_TO_ANSI(*ClientId),
    TCHAR_TO_ANSI(*ClientSecret),
    gs2::ez::Gs2BasicReopener()
);

ClientPtr = std::make_shared<gs2::ez::Client>(
    *ProfilePtr
);

ProfilePtr->initialize(
    [this](gs2::ez::Profile::AsyncInitializeResult r)
    {
        if (r.getError())
        {
            GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, "profile.initialize failed.");
        }
        else
        {
            AccountCreate();
        }
    }
);

// Up to this line is the initialization process.

ClientPtr->stamina.getStamina(
    [](gs2::ez::account::AsyncEzGetStaminaResult r)
    {
        if (r.getError())
        {
            GEngine->AddOnScreenDebugMessage(-1, 5.f, FColor::Red, "stamina.getStamina failed.");
        }
        else
        {
            Item = r.getResult()->getItem();
            StaminaModel = r.getResult()->getStaminaModel();
        }
    },
    ProfilePtr->getGs2Session(),
    TCHAR_TO_ANSI("namespace1"), // namespaceName
    TCHAR_TO_ANSI("stamina-0001") // staminaName
);

///////////////////////////////////////////////////////////////
// New Experience (Enabled UniTask)
///////////////////////////////////////////////////////////////

using Gs2.Unity.Util;
#if GS2_ENABLE_UNITASK
using Cysharp.Threading.Tasks;
using Cysharp.Threading.Tasks.Linq;
#endif

var profile = new Profile(
    clientId: "your client id",
    clientSecret: "your client secret",
    reopener: new Gs2BasicReopener()
);
await profile.InitializeAsync();
var gs2 = new Gs2.Unity.Core.Gs2Domain(profile);

// Up to this line is the initialization process.

{
    var domain = gs2.Stamina.Namespace(
        namespaceName: "namespace1"
    ).Me(
        gameSession: gameSession
    ).Stamina(
        staminaName: "stamina-0001"
    );
    var item = await domain.ModelAsync();
}
///////////////////////////////////////////////////////////////
// Legacy Experience
///////////////////////////////////////////////////////////////

using Gs2.Core.AsyncResult;
using Gs2.Gs2Account.Unity.Result;
using Gs2.Unity.Util;

var profile = new Profile(
    clientId: "your client id",
    clientSecret: "your client secret",
    reopener: new Gs2BasicReopener()
);

{
    AsyncResult<object> asyncResult = null;

    var current = profile.Initialize(
        r => { asyncResult = r; }
    );

    yield return current;

    if (asyncResult.Error != null)
    {
        OnError(asyncResult.Error);
        yield break;
    }
}
var gs2 = new Gs2.Unity.Client(profile);

// Up to this line is the initialization process.

{
    AsyncResult<EzGetStaminaResult> asyncResult = null;
    var current = gs2.Stamina.GetStamina(
        callback: r => { asyncResult = r; },
        session: session,
        namespaceName: "namespace1",
        staminaName: "stamina-0001"
    );

    yield return current;
    if (asyncResult.Error != null)
    {
        OnError(asyncResult.Error);
        yield break;
    }

    var result = asyncResult.Result;
    var item = result.Item;
    var staminaModel = result.StaminaModel;
}

現在のスタミナを取得

Request

必須 デフォルト 値の制限 説明
namespaceName string ~ 32文字 ネームスペース名
staminaName string ~ 128文字 スタミナモデルの名前
accessToken string ~ 128文字 ユーザーID

Result

説明
item EzStamina スタミナ
staminaModel EzStaminaModel スタミナモデル