GS2-Stamina SDK for Game Engine API リファレンス
モデル
EzStaminaModel
スタミナモデル
スタミナの最大値や、回復間隔、回復量といったパラメータを定義できます。 GS2-Experience と連動させて、最大値や回復量をコントロールすることもできます。
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
name | string | ✓ | ~ 128文字 | スタミナモデル名 | |
metadata | string | ~ 128文字 | メタデータ | ||
recoverIntervalMinutes | int | ✓ | ~ 2147483646 | スタミナを回復する速度(分) | |
recoverValue | int | ✓ | 1 | ~ 2147483646 | 時間経過後に回復する量 |
initialCapacity | int | ✓ | ~ 2147483646 | スタミナの最大値の初期値 | |
isOverflow | bool | ✓ | 最大値を超えて回復するか | ||
maxCapacity | int | {isOverflow} | ~ 2147483646 | 溢れた状況での最大値 | |
maxStaminaTable | EzMaxStaminaTable | GS2-Experience と連携する際に使用するスタミナ最大値テーブル | |||
recoverIntervalTable | EzRecoverIntervalTable | GS2-Experience と連携する際に使用する回復間隔テーブル | |||
recoverValueTable | EzRecoverValueTable | GS2-Experience と連携する際に使用する回復量テーブル |
EzMaxStaminaTable
スタミナ最大値テーブル
GS2-Experience のランクごとにスタミナの最大値を定義するエンティティです。
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
name | string | ✓ | ~ 128文字 | 最大スタミナ値テーブル名 | |
metadata | string | ~ 128文字 | メタデータ | ||
experienceModelId | string | ✓ | ~ 1024文字 | 経験値モデルGRN | |
values | List<int> | ✓ | ランク毎のスタミナの最大値テーブル |
EzRecoverIntervalTable
スタミナ回復間隔テーブル
GS2-Experience のランクごとにスタミナの回復間隔を定義するエンティティです。
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
name | string | ✓ | ~ 128文字 | スタミナ回復間隔テーブル名 | |
metadata | string | ~ 128文字 | メタデータ | ||
experienceModelId | string | ✓ | ~ 1024文字 | 経験値モデルGRN | |
values | List<int> | ✓ | ランク毎のスタミナ回復間隔テーブル |
EzRecoverValueTable
スタミナ回復量テーブル
GS2-Experience のランクごとにスタミナの回復量を定義するエンティティです。
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
name | string | ✓ | ~ 128文字 | スタミナ回復量テーブル名 | |
metadata | string | ~ 128文字 | メタデータ | ||
experienceModelId | string | ✓ | ~ 1024文字 | 経験値モデルGRN | |
values | List<int> | ✓ | ランク毎のスタミナ回復量テーブル |
EzStamina
スタミナ
スタミナとは現実時間の時間経過で回復するポイントです。 一般的にこのスタミナを消費してゲームをプレイできるようにすることで、プレイヤーの1日のプレイ回数を制限し、ゲームの進行速度をゲーム提供側がコントロールする目的で使用されます。
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
staminaName | string | ✓ | ~ 128文字 | スタミナモデルの名前 | |
value | int | ✓ | ~ 2147483646 | スタミナ値 | |
overflowValue | int | ✓ | ~ 2147483646 | スタミナの最大値を超えて格納されているスタミナ値 | |
maxValue | int | ✓ | 1 ~ 2147483646 | スタミナの最大値 | |
recoverIntervalMinutes | int | 1 ~ 2147483646 | スタミナの回復間隔(分) | ||
recoverValue | int | 1 ~ 2147483646 | スタミナの回復量 | ||
nextRecoverAt | long | 次回スタミナが回復する時間 |
メソッド
getStaminaModel
スタミナモデルを取得
Request
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 32文字 | ネームスペース名 | |
staminaName | string | ✓ | ~ 128文字 | スタミナモデル名 |
Result
型 | 説明 | |
---|---|---|
item | EzStaminaModel | スタミナモデル |
実装例
var domain = gs2.Stamina.Namespace(
namespaceName: "namespace-0001"
).StaminaModel(
staminaName: "stamina-0001"
);
var item = await domain.ModelAsync();
var domain = gs2.Stamina.Namespace(
namespaceName: "namespace-0001"
).StaminaModel(
staminaName: "stamina-0001"
);
var future = domain.Model();
yield return future;
var item = future.Result;
const auto Domain = Gs2->Stamina->Namespace(
"namespace-0001" // namespaceName
)->StaminaModel(
"stamina-0001" // staminaName
);
const auto item = Domain.Model();
listStaminaModels
スタミナモデルリストを取得
Request
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 32文字 | ネームスペース名 |
Result
型 | 説明 | |
---|---|---|
items | List<EzStaminaModel> | スタミナモデルのリスト |
実装例
var domain = gs2.Stamina.Namespace(
namespaceName: "namespace-0001"
);
var items = await domain.StaminaModelsAsync(
).ToListAsync();
var domain = gs2.Stamina.Namespace(
namespaceName: "namespace-0001"
);
var it = domain.StaminaModels(
);
List<EzStaminaModel> items = new List<EzStaminaModel>();
while (it.HasNext())
{
yield return it.Next();
if (it.Error != null)
{
onError.Invoke(it.Error, null);
break;
}
if (it.Current != null)
{
items.Add(it.Current);
}
else
{
break;
}
}
const auto Domain = Gs2->Stamina->Namespace(
"namespace-0001" // namespaceName
);
const auto It = Domain->StaminaModels(
);
for (auto Item : *It)
{
}
consume
スタミナを消費
Request
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 32文字 | ネームスペース名 | |
staminaName | string | ✓ | ~ 128文字 | スタミナモデルの名前 | |
accessToken | string | ✓ | ~ 128文字 | ユーザーID | |
consumeValue | int | ✓ | 1 ~ 2147483646 | 消費するスタミナ量 |
Result
型 | 説明 | |
---|---|---|
item | EzStamina | スタミナ |
staminaModel | EzStaminaModel | スタミナモデル |
Error
このAPIには特別な例外が定義されています。 GS2-SDK for GameEngine ではゲーム内でハンドリングが必要そうなエラーは一般的な例外から派生した特殊化した例外を用意することでハンドリングしやすくしています。 一般的なエラーの種類や、ハンドリング方法は こちら のドキュメントを参考にしてください。
型 | 基底クラス | 説明 |
---|---|---|
InsufficientException | BadRequestException | スタミナの残量が不足しています |
実装例
try {
var domain = gs2.Stamina.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Stamina(
staminaName: "stamina-0001"
);
var result = await domain.ConsumeAsync(
consumeValue: 50
);
var item = await result.ModelAsync();
} catch(Gs2.Gs2Stamina.Exception.Insufficient e) {
// Insufficient remaining stamina.
}
var domain = gs2.Stamina.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Stamina(
staminaName: "stamina-0001"
);
var future = domain.Consume(
consumeValue: 50
);
yield return future;
if (future.Error != null)
{
if (future.Error is Gs2.Gs2Stamina.Exception.InsufficientException)
{
// Insufficient remaining stamina.
}
onError.Invoke(future.Error, null);
yield break;
}
var future2 = future.Result.Model();
yield return future2;
if (future2.Error != null)
{
onError.Invoke(future2.Error, null);
yield break;
}
var result = future2.Result;
const auto Domain = Gs2->Stamina->Namespace(
"namespace-0001" // namespaceName
)->Me(
AccessToken
)->Stamina(
"stamina-0001" // staminaName
);
const auto Future = Domain->Consume(
50
);
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
if (Gs2::Stamina::Error::FInsufficientError::TypeString == Task->GetTask().Error()->Type())
{
// Insufficient remaining stamina.
}
return false;
}
// obtain changed values / result values
const auto Future2 = Future->GetTask().Result()->Model();
Future2->StartSynchronousTask();
if (!TestFalse(WHAT, Future2->GetTask().IsError())) return false;
const auto Result = Future2->GetTask().Result();
getStamina
現在のスタミナを取得
Request
型 | 必須 | デフォルト | 値の制限 | 説明 | |
---|---|---|---|---|---|
namespaceName | string | ✓ | ~ 32文字 | ネームスペース名 | |
staminaName | string | ✓ | ~ 128文字 | スタミナモデルの名前 | |
accessToken | string | ✓ | ~ 128文字 | ユーザーID |
Result
型 | 説明 | |
---|---|---|
item | EzStamina | スタミナ |
staminaModel | EzStaminaModel | スタミナモデル |
実装例
var domain = gs2.Stamina.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Stamina(
staminaName: "stamina-0001"
);
var item = await domain.ModelAsync();
var domain = gs2.Stamina.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Stamina(
staminaName: "stamina-0001"
);
var future = domain.Model();
yield return future;
var item = future.Result;
const auto Domain = Gs2->Stamina->Namespace(
"namespace-0001" // namespaceName
)->Me(
AccessToken
)->Stamina(
"stamina-0001" // staminaName
);
const auto item = Domain.Model();