GS2-Idle SDK for Game Engine API リファレンス
モデル
EzStatus
ステータス
初めて GetIdleStatus を呼び出した時に作成され、その時間から放置時間のカウントが始まります。
放置時間のカウントは報酬を受け取るとリセットされます。
GS2-Schedule のイベントが関連づけられている場合、イベントの開催前には Category にアクセスできず、ステータスを作成することもできません。
イベントが関連づけられている場合、ステータス はイベントの繰り返し回数を保持します。
現在のイベントIDとステータス作成時のイベントIDが一致しない場合、現在のイベントの繰り返し回数とステータスが保持する繰り返し回数が一致しない場合、またはイベントの開始時刻より前にステータスが作成されている場合、待機時間 はリセットされます。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| categoryName | string | ✓ | ~ 128文字 | カテゴリーモデル名 このステータスが属するカテゴリーモデルの名前です。放置報酬計算に使用される報酬間隔、最大放置時間、入手アクション、スケジュール設定を含むカテゴリーモデル定義を参照します。 | ||
| randomSeed | long | 0 | 0 ~ 9223372036854775805 | 乱数シード 放置報酬の計算時に決定論的な乱数生成に使用されるシード値です。報酬計算が再現可能で一貫性があることを保証し、サーバーが報酬結果を検証できるようにします。報酬を受け取るたびに更新されます。 | ||
| idleMinutes | int | ✓ | 0 ~ 2147483646 | 放置時間(分) 最後の報酬受け取りまたはステータス作成からの累積放置時間(分)です。この値は idleStartedAt からの経過時間から計算され、maximumIdleMinutes で上限が設定されます。利用可能な報酬数はこの値をカテゴリーモデルの rewardIntervalMinutes で割ることで決定されます。 | ||
| maximumIdleMinutes | int | 0 | 0 ~ 2147483646 | 最大放置時間(分) このステータスが蓄積できる最大放置時間(分)です。ステータス作成時にカテゴリーモデルの defaultMaximumIdleMinutes から初期化されます。入手アクションを通じてユーザーごとに増加でき、プレミアムユーザーやイベント参加者がより多くの放置報酬を蓄積できるようにします。 |
EzCategoryModel
カテゴリーモデル
カテゴリーモデルとは、放置報酬を得られる待機カテゴリーを設定するエンティティです。
設定には、待機時間ごとの報酬や、最大待機時間などの情報が含まれます。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| name | string | ✓ | ~ 128文字 | カテゴリーモデル名 カテゴリーモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| metadata | string | ~ 2048文字 | メタデータ メタデータには任意の値を設定できます。 これらの値は GS2 の動作には影響しないため、ゲーム内で利用する情報の保存先として使用できます。 | |||
| rewardIntervalMinutes | int | ✓ | 0 ~ 2147483646 | 報酬間隔(分) 各放置報酬の間の時間間隔(分)です。例えば60に設定すると、ユーザーは放置時間60分ごとに1つの報酬ユニットを獲得します。報酬の総数は(経過放置分数)/ rewardIntervalMinutes として計算され、acquireActions配列を循環します。 | ||
| defaultMaximumIdleMinutes | int | ✓ | 0 ~ 2147483646 | デフォルト最大放置時間(分) このカテゴリーの新しいステータスに対するデフォルトの最大放置時間(分)です。この制限を超える放置時間は追加の報酬を蓄積しません。この値はステータス作成時に各ステータスの maximumIdleMinutes にコピーされ、入手アクションを通じてユーザーごとに拡張できます。 | ||
| acquireActions | List<EzAcquireActionList> | [] | 1 ~ 100 items | 待機時間ごとに得られる入手アクションリスト 待機時間を「X分」だと仮定すると 「X / rewardIntervalMinutes」が報酬を受け取れる数になりますが、ここで指定した配列の要素をループすることで、待機時間ごとに異なる報酬を付与できます。 | ||
| idlePeriodScheduleId | string | ~ 1024文字 | 放置期間スケジュールID 放置時間が蓄積される期間を定義するGS2-ScheduleイベントのGRNです。設定すると、イベントがアクティブな間のみ放置時間がカウントされます。イベントが繰り返される場合、ステータスは繰り返し回数を追跡し、新しいサイクルの開始時に放置時間をリセットして、イベント期間ごとに報酬が計算されるようにします。 | |||
| receivePeriodScheduleId | string | ~ 1024文字 | 受取期間スケジュールID ユーザーが蓄積された放置報酬を受け取れる時間枠を定義するGS2-ScheduleイベントのGRNです。設定すると、イベントがアクティブな間のみ報酬の受け取りが受け付けられます。これにより、放置蓄積期間とは別の期間限定の報酬受取期間を設定できます。 |
EzConfig
コンフィグ設定
トランザクションの変数に適用する設定値
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| key | string | ✓ | ~ 64文字 | 名前 | ||
| value | string | ~ 51200文字 | 値 |
EzAcquireAction
入手アクション
放置報酬として使用される単一の入手アクションを表します。アクションタイプ(例:アイテム追加、通貨増加)とそのリクエストパラメータで構成されます。放置報酬が受け取られると、これらのアクションがトランザクションに組み立てられ、実行されてユーザーに報酬が配布されます。
EzAcquireActionList
入手アクションリスト
1つの報酬間隔で一括して付与される複数の入手アクションをグループ化するラッパーです。各 AcquireActionList はカテゴリーモデルの acquireActions 配列内の1つの報酬サイクルに対応し、各間隔で異なる報酬の組み合わせを設定できます。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| acquireActions | List<EzAcquireAction> | [] | 0 ~ 100 items | 入手アクションリスト この報酬間隔がトリガーされた時に一括で実行される入手アクションのコレクションです。複数のアクションを組み合わせて、1つの放置報酬サイクルで異なる種類の報酬を同時に付与できます。リストあたり最大100アクションです。 |
EzVerifyActionResult
検証アクションの実行結果
EzConsumeActionResult
消費アクションの実行結果
EzAcquireActionResult
入手アクションの実行結果
EzTransactionResult
トランザクション実行結果
サーバーサイドでのトランザクションの自動実行機能を利用して実行されたトランザクションの実行結果
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| transactionId | string | ✓ | 36 ~ 36文字 | トランザクションID | ||
| verifyResults | List<EzVerifyActionResult> | 0 ~ 10 items | 検証アクションの実行結果リスト | |||
| consumeResults | List<EzConsumeActionResult> | [] | 0 ~ 10 items | 消費アクションの実行結果リスト | ||
| acquireResults | List<EzAcquireActionResult> | [] | 0 ~ 100 items | 入手アクションの実行結果リスト |
メソッド
getCategoryModel
名前を指定して放置報酬カテゴリー定義を取得する
名前を指定して、放置報酬カテゴリーモデルを1件取得します。
取得できる情報には、報酬間隔(何分ごとに報酬が蓄積されるか)、最大待機時間の上限、付与される報酬の内容、スケジュール設定が含まれます。
特定の放置報酬タイプの詳細を表示するのに使います。たとえば「金鉱 — 30分ごとに10ゴールド — 最大蓄積: 8時間 — 現在: 160ゴールド受け取り可能」のような表示に便利です。
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| categoryName | string | ✓ | ~ 128文字 | カテゴリーモデル名 カテゴリーモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
Result
| 型 | 説明 | |
|---|---|---|
| item | EzCategoryModel | カテゴリーモデル |
実装例
var domain = gs2.Idle.Namespace(
namespaceName: "namespace-0001"
).CategoryModel(
categoryName: "category-0001"
);
var item = await domain.ModelAsync(); var domain = gs2.Idle.Namespace(
namespaceName: "namespace-0001"
).CategoryModel(
categoryName: "category-0001"
);
var future = domain.ModelFuture();
yield return future;
var item = future.Result; const auto Domain = Gs2->Idle->Namespace(
"namespace-0001" // namespaceName
)->CategoryModel(
"category-0001" // categoryName
);
const auto Future = Domain->Model();
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}値の変更イベントハンドリング
var domain = gs2.Idle.Namespace(
namespaceName: "namespace-0001"
).CategoryModel(
categoryName: "category-0001"
);
// イベントハンドリングを開始
var callbackId = domain.Subscribe(
value => {
// 値が変化した時に呼び出される
// value には変更後の値が渡ってくる
}
);
// イベントハンドリングを停止
domain.Unsubscribe(callbackId); var domain = gs2.Idle.Namespace(
namespaceName: "namespace-0001"
).CategoryModel(
categoryName: "category-0001"
);
// イベントハンドリングを開始
var callbackId = domain.Subscribe(
value => {
// 値が変化した時に呼び出される
// value には変更後の値が渡ってくる
}
);
// イベントハンドリングを停止
domain.Unsubscribe(callbackId); const auto Domain = Gs2->Idle->Namespace(
"namespace-0001" // namespaceName
)->CategoryModel(
"category-0001" // categoryName
);
// イベントハンドリングを開始
const auto CallbackId = Domain->Subscribe(
[](TSharedPtr<Gs2::Idle::Model::FCategoryModel> value) {
// 値が変化した時に呼び出される
// value には変更後の値が渡ってくる
}
);
// イベントハンドリングを停止
Domain->Unsubscribe(CallbackId);Warning
このイベントはSDKがもつローカルキャッシュの値が変更された時に呼び出されます。
ローカルキャッシュは SDK が持つ API の実行、または GS2-Gateway の通知を有効にした GS2-Distributor 経由でのスタンプシートの実行、または GS2-Gateway の通知を有効にした GS2-JobQueue の実行によって変化したもののみが対象となります。
そのため、これらの方法以外で値が変更されてもコールバックは呼び出されません。
listCategoryModels
放置報酬カテゴリー定義の一覧を取得する
このネームスペースに登録されているすべての放置報酬カテゴリーを取得します。
カテゴリーモデルは、放置(AFK)報酬の仕組みを定義します。報酬が蓄積される間隔(例: 10分ごと)、最大待機時間(例: 最大8時間)、プレイヤーが受け取る報酬の内容、受け取り後にタイマーをリセットするかどうかなどです。
カテゴリーをスケジュールに紐づけて、放置報酬が有効な期間を制御することもできます(例: 平日イベント中のみ有効)。
プレイヤーにどんな種類の放置報酬があるかを表示するのに使います。たとえば「金鉱(30分ごとに10ゴールド、最大8時間)」「修行場(1時間ごとに50 XP、最大24時間)」のような表示に便利です。
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
Result
| 型 | 説明 | |
|---|---|---|
| items | List<EzCategoryModel> | カテゴリーモデルリスト |
実装例
var domain = gs2.Idle.Namespace(
namespaceName: "namespace-0001"
);
var items = await domain.CategoryModelsAsync(
).ToListAsync(); var domain = gs2.Idle.Namespace(
namespaceName: "namespace-0001"
);
var it = domain.CategoryModels(
);
List<EzCategoryModel> items = new List<EzCategoryModel>();
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->Idle->Namespace(
"namespace-0001" // namespaceName
);
const auto It = Domain->CategoryModels(
);
TArray<Gs2::UE5::Idle::Model::FEzCategoryModelPtr> Result;
for (auto Item : *It)
{
if (Item.IsError())
{
return false;
}
Result.Add(Item.Current());
}値の変更イベントハンドリング
var domain = gs2.Idle.Namespace(
namespaceName: "namespace-0001"
);
// イベントハンドリングを開始
var callbackId = domain.SubscribeCategoryModels(
() => {
// リストの要素が変化した時に呼び出される
}
);
// イベントハンドリングを停止
domain.UnsubscribeCategoryModels(callbackId); var domain = gs2.Idle.Namespace(
namespaceName: "namespace-0001"
);
// イベントハンドリングを開始
var callbackId = domain.SubscribeCategoryModels(
() => {
// リストの要素が変化した時に呼び出される
}
);
// イベントハンドリングを停止
domain.UnsubscribeCategoryModels(callbackId); const auto Domain = Gs2->Idle->Namespace(
"namespace-0001" // namespaceName
);
// イベントハンドリングを開始
const auto CallbackId = Domain->SubscribeCategoryModels(
[]() {
// リストの要素が変化した時に呼び出される
}
);
// イベントハンドリングを停止
Domain->UnsubscribeCategoryModels(CallbackId);Warning
このイベントはSDKがもつローカルキャッシュの値が変更された時に呼び出されます。
ローカルキャッシュは SDK が持つ API の実行、または GS2-Gateway の通知を有効にした GS2-Distributor 経由でのスタンプシートの実行、または GS2-Gateway の通知を有効にした GS2-JobQueue の実行によって変化したもののみが対象となります。
そのため、これらの方法以外で値が変更されてもコールバックは呼び出されません。
getStatus
特定カテゴリーの放置報酬ステータスを取得する
特定のカテゴリーにおけるプレイヤーの放置報酬ステータスを取得します。
ステータスには放置タイマーの開始時刻と現在の最大待機時間が含まれます。ステータスがまだ存在しない場合、現在時刻を開始時刻として自動的に作成されます。
特定の放置報酬の進捗を表示するのに使います。たとえば「金鉱 — 放置中 4時間30分 / 最大8時間 — 90ゴールド受け取り可能」のような表示に便利です。
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| categoryName | string | ✓ | ~ 128文字 | カテゴリーモデル名 このステータスが属するカテゴリーモデルの名前です。放置報酬計算に使用される報酬間隔、最大放置時間、入手アクション、スケジュール設定を含むカテゴリーモデル定義を参照します。 | ||
| gameSession | GameSession | ✓ | GameSession |
Result
| 型 | 説明 | |
|---|---|---|
| item | EzStatus | ステータス |
実装例
var domain = gs2.Idle.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Status(
categoryName: "category-0001"
);
var item = await domain.ModelAsync(); var domain = gs2.Idle.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Status(
categoryName: "category-0001"
);
var future = domain.ModelFuture();
yield return future;
var item = future.Result; const auto Domain = Gs2->Idle->Namespace(
"namespace-0001" // namespaceName
)->Me(
GameSession
)->Status(
"category-0001" // categoryName
);
const auto Future = Domain->Model();
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}値の変更イベントハンドリング
var domain = gs2.Idle.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Status(
categoryName: "category-0001"
);
// イベントハンドリングを開始
var callbackId = domain.Subscribe(
value => {
// 値が変化した時に呼び出される
// value には変更後の値が渡ってくる
}
);
// イベントハンドリングを停止
domain.Unsubscribe(callbackId); var domain = gs2.Idle.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Status(
categoryName: "category-0001"
);
// イベントハンドリングを開始
var callbackId = domain.Subscribe(
value => {
// 値が変化した時に呼び出される
// value には変更後の値が渡ってくる
}
);
// イベントハンドリングを停止
domain.Unsubscribe(callbackId); const auto Domain = Gs2->Idle->Namespace(
"namespace-0001" // namespaceName
)->Me(
GameSession
)->Status(
"category-0001" // categoryName
);
// イベントハンドリングを開始
const auto CallbackId = Domain->Subscribe(
[](TSharedPtr<Gs2::Idle::Model::FStatus> value) {
// 値が変化した時に呼び出される
// value には変更後の値が渡ってくる
}
);
// イベントハンドリングを停止
Domain->Unsubscribe(CallbackId);Warning
このイベントはSDKがもつローカルキャッシュの値が変更された時に呼び出されます。
ローカルキャッシュは SDK が持つ API の実行、または GS2-Gateway の通知を有効にした GS2-Distributor 経由でのスタンプシートの実行、または GS2-Gateway の通知を有効にした GS2-JobQueue の実行によって変化したもののみが対象となります。
そのため、これらの方法以外で値が変更されてもコールバックは呼び出されません。
listStatuses
プレイヤーの放置報酬ステータスの一覧を取得する
すべてのカテゴリーにわたるプレイヤーの放置報酬ステータスを取得します。
各ステータスには、プレイヤーがいつから放置を開始したか(最後に報酬を受け取った時刻またはタイマー開始時刻)と、現在の最大待機時間が含まれます。
「放置報酬」の概要画面を構築するのに使います。たとえば「金鉱: 4時間30分蓄積中、修行場: 1時間15分蓄積中」のように各カテゴリーに「受け取る」ボタンをつけて表示する画面に便利です。
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| gameSession | GameSession | ✓ | GameSession | |||
| pageToken | string | ~ 1024文字 | データの取得を開始する位置を指定するトークン | |||
| limit | int | 30 | 1 ~ 1000 | データの取得件数 |
Result
| 型 | 説明 | |
|---|---|---|
| items | List<EzStatus> | ステータスのリスト |
| nextPageToken | string | リストの続きを取得するためのページトークン |
実装例
var domain = gs2.Idle.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
);
var items = await domain.StatusesAsync(
).ToListAsync(); var domain = gs2.Idle.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
);
var it = domain.Statuses(
);
List<EzStatus> items = new List<EzStatus>();
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->Idle->Namespace(
"namespace-0001" // namespaceName
)->Me(
GameSession
);
const auto It = Domain->Statuses(
);
TArray<Gs2::UE5::Idle::Model::FEzStatusPtr> Result;
for (auto Item : *It)
{
if (Item.IsError())
{
return false;
}
Result.Add(Item.Current());
}値の変更イベントハンドリング
var domain = gs2.Idle.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
);
// イベントハンドリングを開始
var callbackId = domain.SubscribeStatuses(
() => {
// リストの要素が変化した時に呼び出される
}
);
// イベントハンドリングを停止
domain.UnsubscribeStatuses(callbackId); var domain = gs2.Idle.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
);
// イベントハンドリングを開始
var callbackId = domain.SubscribeStatuses(
() => {
// リストの要素が変化した時に呼び出される
}
);
// イベントハンドリングを停止
domain.UnsubscribeStatuses(callbackId); const auto Domain = Gs2->Idle->Namespace(
"namespace-0001" // namespaceName
)->Me(
GameSession
);
// イベントハンドリングを開始
const auto CallbackId = Domain->SubscribeStatuses(
[]() {
// リストの要素が変化した時に呼び出される
}
);
// イベントハンドリングを停止
Domain->UnsubscribeStatuses(CallbackId);Warning
このイベントはSDKがもつローカルキャッシュの値が変更された時に呼び出されます。
ローカルキャッシュは SDK が持つ API の実行、または GS2-Gateway の通知を有効にした GS2-Distributor 経由でのスタンプシートの実行、または GS2-Gateway の通知を有効にした GS2-JobQueue の実行によって変化したもののみが対象となります。
そのため、これらの方法以外で値が変更されてもコールバックは呼び出されません。
prediction
今受け取れる放置報酬をプレビューする
プレイヤーが今受け取りを行った場合にもらえる報酬を計算して返します。実際には受け取りは行いません。
報酬量は、放置した時間を報酬間隔で割った値に基づき、最大待機時間で上限が設定されます。
タイマーのリセットや報酬の付与は行いません。読み取り専用のプレビューです。
プレイヤーが「受け取る」ボタンを押す前に、何がもらえるかを表示するのに使います。たとえば「受け取り予定: ゴールド 90個、ジェム 5個」のような表示に便利です。
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| categoryName | string | ✓ | ~ 128文字 | カテゴリーモデル名 このステータスが属するカテゴリーモデルの名前です。放置報酬計算に使用される報酬間隔、最大放置時間、入手アクション、スケジュール設定を含むカテゴリーモデル定義を参照します。 | ||
| gameSession | GameSession | ✓ | GameSession |
Result
| 型 | 説明 | |
|---|---|---|
| items | List<EzAcquireAction> | 報酬 |
| status | EzStatus | ステータス |
実装例
var domain = gs2.Idle.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Status(
categoryName: "category-0001"
);
var result = await domain.PredictionAsync(
);
var item = await result.ModelAsync(); var domain = gs2.Idle.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Status(
categoryName: "category-0001"
);
var future = domain.PredictionFuture(
);
yield return future;
if (future.Error != null)
{
onError.Invoke(future.Error, null);
yield break;
}
var future2 = future.Result.ModelFuture();
yield return future2;
if (future2.Error != null)
{
onError.Invoke(future2.Error, null);
yield break;
}
var result = future2.Result; const auto Domain = Gs2->Idle->Namespace(
"namespace-0001" // namespaceName
)->Me(
GameSession
)->Status(
"category-0001" // categoryName
);
const auto Future = Domain->Prediction(
);
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}
// obtain changed values / result values
const auto Future2 = Future->GetTask().Result()->Model();
Future2->StartSynchronousTask();
if (Future2->GetTask().IsError())
{
return Future2->GetTask().Error();
}
const auto Result = Future2->GetTask().Result();receive
蓄積された放置報酬を受け取る
指定したカテゴリーでプレイヤーの放置時間に基づいて蓄積された報酬を受け取ります。
報酬量はプレイヤーが放置した時間を報酬間隔で割った値から計算され、最大待機時間で上限が設定されます。
受け取り後、放置タイマーはリセットされ、ゼロから再び蓄積が始まります。
放置報酬画面の「報酬を受け取る」「回収する」ボタンに使います。たとえば、プレイヤーが「回収」をタップすると、離れている間に蓄積された「ゴールド 90個、ジェム 5個」を受け取る、といった動作です。
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| categoryName | string | ✓ | ~ 128文字 | カテゴリーモデル名 このステータスが属するカテゴリーモデルの名前です。放置報酬計算に使用される報酬間隔、最大放置時間、入手アクション、スケジュール設定を含むカテゴリーモデル定義を参照します。 | ||
| gameSession | GameSession | ✓ | GameSession |
Result
| 型 | 説明 | |
|---|---|---|
| items | List<EzAcquireAction> | 報酬 |
| status | EzStatus | 更新したステータス |
| transactionId | string | 発行されたトランザクションID |
| stampSheet | string | クエストの開始処理の実行に使用するスタンプシート |
| stampSheetEncryptionKeyId | string | スタンプシートの署名計算に使用した暗号鍵GRN |
| autoRunStampSheet | bool | トランザクションの自動実行が有効か |
| atomicCommit | bool | トランザクションをアトミックにコミットするか |
| transaction | string | 発行されたトランザクション |
| transactionResult | EzTransactionResult | トランザクション実行結果 |
実装例
var domain = gs2.Idle.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Status(
categoryName: "category-0001"
);
var result = await domain.ReceiveAsync(
);
// New Experience ではスタンプシートはSDKレベルで自動的に実行されます。
// エラーが発生すると TransactionException がスローされます。
// TransactionException::Retry() でリトライが可能です。 var domain = gs2.Idle.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Status(
categoryName: "category-0001"
);
var future = domain.ReceiveFuture(
);
yield return future;
if (future.Error != null)
{
onError.Invoke(future.Error, null);
yield break;
}
// New Experience ではスタンプシートはSDKレベルで自動的に実行されます。
// エラーが発生すると TransactionException がスローされます。
// TransactionException::Retry() でリトライが可能です。 const auto Domain = Gs2->Idle->Namespace(
"namespace-0001" // namespaceName
)->Me(
GameSession
)->Status(
"category-0001" // categoryName
);
const auto Future = Domain->Receive(
);
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}