GS2-Exchange SDK for Game Engine API リファレンス
モデル
EzRateModel
交換レートモデル
交換レートはリソースとリソースを交換する際に使用するレートを定義するエンティティです。
直ちに交換できるレートだけでなく、現実時間で一定時間経過したのちに交換できるレートを設定できます。
現実時間での時間経過が必要な交換レートには、更に即時交換を実行するために必要なリソースを定義することが可能です。
| 型 | 必須 | デフォルト | 値の制限 | 説明 |
---|
name | string | ✓ | | ~ 128文字 | 交換レートの名前 |
metadata | string | | | ~ 2048文字 | メタデータ |
timingType | enum [‘immediate’, ‘await’] | ✓ | “immediate” | ~ 128文字 | 交換の種類 |
lockTime | int | {timingType} == “await” | | ~ 525600 | 交換実行から実際に報酬を受け取れるようになるまでの待ち時間(分) |
consumeActions | List<EzConsumeAction> | | [] | | 消費アクションリスト |
acquireActions | List<EzAcquireAction> | | [] | | 入手アクションリスト |
EzAwait
交換待機
現実時間の時間経過が交換条件の交換処理の実行状態を表すエンティティ。
| 型 | 必須 | デフォルト | 値の制限 | 説明 |
---|
userId | string | ✓ | | ~ 128文字 | ユーザーID |
rateName | string | ✓ | | ~ 128文字 | 交換レート名 |
name | string | ✓ | UUID | ~ 36文字 | 交換待機の名前 |
exchangedAt | long | ✓ | | | 作成日時 |
EzConfig
| 型 | 必須 | デフォルト | 値の制限 | 説明 |
---|
key | string | | | ~ 64文字 | 名前 |
value | string | | | ~ 51200文字 | 値 |
EzAcquireAction
| 型 | 必須 | デフォルト | 値の制限 | 説明 |
---|
action | enum [] | ✓ | | ~ 128文字 | スタンプシートを使用して実行するアクションの種類 |
request | string | ✓ | | ~ 1048576文字 | リクエストのJSON |
EzConsumeAction
| 型 | 必須 | デフォルト | 値の制限 | 説明 |
---|
action | enum [] | ✓ | | ~ 128文字 | スタンプタスクで実行するアクションの種類 |
request | string | ✓ | | ~ 1048576文字 | 入手リクエストのJSON |
メソッド
acquire
交換待機の報酬を取得
Request
| 型 | 必須 | デフォルト | 値の制限 | 説明 |
---|
namespaceName | string | ✓ | | ~ 32文字 | ネームスペース名 |
accessToken | string | ✓ | | ~ 128文字 | ユーザーID |
awaitName | string | ✓ | UUID | ~ 36文字 | 交換待機の名前 |
Result
| 型 | 説明 |
---|
item | EzAwait | 交換待機 |
transactionId | string | 発行されたスタンプシートのトランザクションID |
stampSheet | string | 報酬取得処理の実行に使用するスタンプシート |
stampSheetEncryptionKeyId | string | スタンプシートの署名計算に使用した暗号鍵GRN |
autoRunStampSheet | bool | スタンプシートの自動実行が有効か |
実装例
var domain = gs2.Exchange.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Await(
awaitName: "await-0001"
);
var result = await domain.AcquireAsync(
);
// New Experience ではスタンプシートはSDKレベルで自動的に実行されます。
// エラーが発生すると TransactionException がスローされます。
// TransactionException::Retry() でリトライが可能です。
// In New Experience, stamp sheets are automatically executed at the SDK level.
// If an error occurs, a TransactionException is thrown.
// you can retry with TransactionException::Retry().
var domain = gs2.Exchange.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Await(
awaitName: "await-0001"
);
var future = domain.Acquire(
);
yield return future;
if (future.Error != null)
{
onError.Invoke(future.Error, null);
yield break;
}
// New Experience ではスタンプシートはSDKレベルで自動的に実行されます。
// エラーが発生すると TransactionException がスローされます。
// TransactionException::Retry() でリトライが可能です。
// In New Experience, stamp sheets are automatically executed at the SDK level.
// If an error occurs, a TransactionException is thrown.
// you can retry with TransactionException::Retry().
const auto Domain = Gs2->Exchange->Namespace(
"namespace-0001" // namespaceName
)->Me(
AccessToken
)->Await(
"await-0001" // awaitName
);
const auto Future = Domain->Acquire(
);
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}
deleteAwait
交換待機情報を取得
Request
| 型 | 必須 | デフォルト | 値の制限 | 説明 |
---|
namespaceName | string | ✓ | | ~ 32文字 | ネームスペース名 |
accessToken | string | ✓ | | ~ 128文字 | ユーザーID |
awaitName | string | ✓ | UUID | ~ 36文字 | 交換待機の名前 |
Result
実装例
var domain = gs2.Exchange.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Await(
awaitName: "await-0001"
);
var result = await domain.DeleteAwaitAsync(
);
var domain = gs2.Exchange.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Await(
awaitName: "await-0001"
);
var future = domain.DeleteAwait(
);
yield return future;
if (future.Error != null)
{
onError.Invoke(future.Error, null);
yield break;
}
const auto Domain = Gs2->Exchange->Namespace(
"namespace-0001" // namespaceName
)->Me(
AccessToken
)->Await(
"await-0001" // awaitName
);
const auto Future = Domain->DeleteAwait(
);
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}
getAwait
交換待機情報を取得
Request
| 型 | 必須 | デフォルト | 値の制限 | 説明 |
---|
namespaceName | string | ✓ | | ~ 32文字 | ネームスペース名 |
accessToken | string | ✓ | | ~ 128文字 | ユーザーID |
awaitName | string | ✓ | UUID | ~ 36文字 | 交換待機の名前 |
Result
実装例
var domain = gs2.Exchange.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Await(
awaitName: "await-0001"
);
var item = await domain.ModelAsync();
var domain = gs2.Exchange.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Await(
awaitName: "await-0001"
);
var future = domain.Model();
yield return future;
var item = future.Result;
const auto Domain = Gs2->Exchange->Namespace(
"namespace-0001" // namespaceName
)->Me(
AccessToken
)->Await(
"await-0001" // awaitName
);
const auto item = Domain.Model();
listAwaits
交換待機情報の一覧を取得
Request
| 型 | 必須 | デフォルト | 値の制限 | 説明 |
---|
namespaceName | string | ✓ | | ~ 32文字 | ネームスペース名 |
rateName | string | | | ~ 128文字 | 交換レート名 |
accessToken | string | ✓ | | ~ 128文字 | ユーザーID |
pageToken | string | | | ~ 1024文字 | データの取得を開始する位置を指定するトークン |
Result
| 型 | 説明 |
---|
items | List<EzAwait> | 交換待機のリスト |
nextPageToken | string | リストの続きを取得するためのページトークン |
実装例
var domain = gs2.Exchange.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
);
var items = await domain.AwaitsAsync(
).ToListAsync();
var domain = gs2.Exchange.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
);
var it = domain.Awaits(
);
List<EzAwait> items = new List<EzAwait>();
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->Exchange->Namespace(
"namespace-0001" // namespaceName
)->Me(
AccessToken
);
const auto It = Domain->Awaits( // rateName
);
for (auto Item : *It)
{
}
skip
交換待機を対価を払ってスキップ
Request
| 型 | 必須 | デフォルト | 値の制限 | 説明 |
---|
namespaceName | string | ✓ | | ~ 32文字 | ネームスペース名 |
accessToken | string | ✓ | | ~ 128文字 | ユーザーID |
awaitName | string | ✓ | UUID | ~ 36文字 | 交換待機の名前 |
Result
| 型 | 説明 |
---|
item | EzAwait | 交換待機 |
transactionId | string | 発行されたスタンプシートのトランザクションID |
stampSheet | string | 報酬取得処理の実行に使用するスタンプシート |
stampSheetEncryptionKeyId | string | スタンプシートの署名計算に使用した暗号鍵GRN |
autoRunStampSheet | bool | スタンプシートの自動実行が有効か |
実装例
var domain = gs2.Exchange.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Await(
awaitName: "await-0001"
);
var result = await domain.SkipAsync(
);
// New Experience ではスタンプシートはSDKレベルで自動的に実行されます。
// エラーが発生すると TransactionException がスローされます。
// TransactionException::Retry() でリトライが可能です。
// In New Experience, stamp sheets are automatically executed at the SDK level.
// If an error occurs, a TransactionException is thrown.
// you can retry with TransactionException::Retry().
var domain = gs2.Exchange.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Await(
awaitName: "await-0001"
);
var future = domain.Skip(
);
yield return future;
if (future.Error != null)
{
onError.Invoke(future.Error, null);
yield break;
}
// New Experience ではスタンプシートはSDKレベルで自動的に実行されます。
// エラーが発生すると TransactionException がスローされます。
// TransactionException::Retry() でリトライが可能です。
// In New Experience, stamp sheets are automatically executed at the SDK level.
// If an error occurs, a TransactionException is thrown.
// you can retry with TransactionException::Retry().
const auto Domain = Gs2->Exchange->Namespace(
"namespace-0001" // namespaceName
)->Me(
AccessToken
)->Await(
"await-0001" // awaitName
);
const auto Future = Domain->Skip(
);
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}
getRateModel
交換レートモデル情報を取得
Request
| 型 | 必須 | デフォルト | 値の制限 | 説明 |
---|
namespaceName | string | ✓ | | ~ 32文字 | ネームスペース名 |
rateName | string | ✓ | | ~ 128文字 | 交換レートの名前 |
Result
実装例
var domain = gs2.Exchange.Namespace(
namespaceName: "namespace-0001"
).RateModel(
rateName: "character-level"
);
var item = await domain.ModelAsync();
var domain = gs2.Exchange.Namespace(
namespaceName: "namespace-0001"
).RateModel(
rateName: "character-level"
);
var future = domain.Model();
yield return future;
var item = future.Result;
const auto Domain = Gs2->Exchange->Namespace(
"namespace-0001" // namespaceName
)->RateModel(
"character-level" // rateName
);
const auto item = Domain.Model();
listRateModels
交換レートモデル情報の一覧を取得
Request
| 型 | 必須 | デフォルト | 値の制限 | 説明 |
---|
namespaceName | string | ✓ | | ~ 32文字 | ネームスペース名 |
Result
実装例
var domain = gs2.Exchange.Namespace(
namespaceName: "namespace-0001"
);
var items = await domain.RateModelsAsync(
).ToListAsync();
var domain = gs2.Exchange.Namespace(
namespaceName: "namespace-0001"
);
var it = domain.RateModels(
);
List<EzRateModel> items = new List<EzRateModel>();
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->Exchange->Namespace(
"namespace-0001" // namespaceName
);
const auto It = Domain->RateModels(
);
for (auto Item : *It)
{
}
exchange
交換を実行
Request
| 型 | 必須 | デフォルト | 値の制限 | 説明 |
---|
namespaceName | string | ✓ | | ~ 32文字 | ネームスペース名 |
rateName | string | ✓ | | ~ 128文字 | 交換レートの名前 |
accessToken | string | ✓ | | ~ 128文字 | ユーザーID |
count | int | ✓ | | 1 ~ 2147483646 | 交換するロット数 |
config | List<EzConfig> | | [] | | スタンプシートの変数に適用する設定値 |
Result
| 型 | 説明 |
---|
item | EzRateModel | 交換レートモデル |
transactionId | string | 発行されたスタンプシートのトランザクションID |
stampSheet | string | 交換処理の実行に使用するスタンプシート |
stampSheetEncryptionKeyId | string | スタンプシートの署名計算に使用した暗号鍵GRN |
autoRunStampSheet | bool | スタンプシートの自動実行が有効か |
実装例
var domain = gs2.Exchange.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Exchange(
);
var result = await domain.ExchangeAsync(
rateName: "rate-0001",
count: 1,
config: null
);
// New Experience ではスタンプシートはSDKレベルで自動的に実行されます。
// エラーが発生すると TransactionException がスローされます。
// TransactionException::Retry() でリトライが可能です。
// In New Experience, stamp sheets are automatically executed at the SDK level.
// If an error occurs, a TransactionException is thrown.
// you can retry with TransactionException::Retry().
var domain = gs2.Exchange.Namespace(
namespaceName: "namespace-0001"
).Me(
gameSession: GameSession
).Exchange(
);
var future = domain.Exchange(
rateName: "rate-0001",
count: 1,
config: null
);
yield return future;
if (future.Error != null)
{
onError.Invoke(future.Error, null);
yield break;
}
// New Experience ではスタンプシートはSDKレベルで自動的に実行されます。
// エラーが発生すると TransactionException がスローされます。
// TransactionException::Retry() でリトライが可能です。
// In New Experience, stamp sheets are automatically executed at the SDK level.
// If an error occurs, a TransactionException is thrown.
// you can retry with TransactionException::Retry().
const auto Domain = Gs2->Exchange->Namespace(
"namespace-0001" // namespaceName
)->Me(
AccessToken
)->Exchange(
);
const auto Future = Domain->Exchange(
"rate-0001",
1,
nullptr // config
);
Future->StartSynchronousTask();
if (Future->GetTask().IsError())
{
return false;
}