GS2-Quest SDK API リファレンス
モデル
Namespace
ネームスペース
ネームスペースは、一つのプロジェクト内で同じサービスを異なる用途で複数利用するためのエンティティです。
GS2 の各サービスはネームスペース単位で管理されます。ネームスペースが異なれば、同じサービスでも完全に独立したデータ空間として扱われます。
そのため、各サービスの利用を開始するにあたってネームスペースを作成する必要があります。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceId | string | ※ | ~ 1024文字 | ネームスペース
GRN ※ サーバーが自動で設定 | ||
| name | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| description | string | ~ 1024文字 | 説明文 | |||
| transactionSetting | TransactionSetting | ✓ | トランザクション設定 | |||
| startQuestScript | ScriptSetting | クエスト開始したときに実行するスクリプトの設定 Script トリガーリファレンス - startQuest | ||||
| completeQuestScript | ScriptSetting | クエストクリアしたときに実行するスクリプトの設定 Script トリガーリファレンス - completeQuest | ||||
| failedQuestScript | ScriptSetting | クエスト失敗したときに実行するスクリプトの設定 Script トリガーリファレンス - failedQuest | ||||
| logSetting | LogSetting | ログの出力設定 | ||||
| createdAt | long | ※ | 現在時刻 | 作成日時 UNIX 時間・ミリ秒 ※ サーバーが自動で設定 | ||
| updatedAt | long | ※ | 現在時刻 | 最終更新日時 UNIX 時間・ミリ秒 ※ サーバーが自動で設定 | ||
| revision | long | 0 | 0 ~ 9223372036854775805 | リビジョン |
TransactionSetting
トランザクション設定
トランザクション設定は、トランザクションの実行方法・整合性・非同期処理・競合回避の仕組みを制御する設定です。
自動実行(AutoRun)、アトミック実行(AtomicCommit)、GS2-Distributor を利用した非同期実行、スクリプト結果の一括適用、GS2-JobQueue による入手アクションの非同期化などを組み合わせ、ゲームロジックに応じた堅牢なトランザクション管理を可能にします。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| enableAutoRun | bool | false | 発行したトランザクションをサーバーサイドで自動的に実行するか | |||
| enableAtomicCommit | bool | {enableAutoRun} == true | false | トランザクションの実行をアトミックにコミットするか ※ enableAutoRun が true であれば 有効 | ||
| transactionUseDistributor | bool | {enableAtomicCommit} == true | false | トランザクションを非同期処理で実行する ※ enableAtomicCommit が true であれば 有効 | ||
| commitScriptResultInUseDistributor | bool | {transactionUseDistributor} == true | false | スクリプトの結果コミット処理を非同期処理で実行するか ※ transactionUseDistributor が true であれば 有効 | ||
| acquireActionUseJobQueue | bool | {enableAtomicCommit} == true | false | 入手アクションを実行する際に GS2-JobQueue を使用するか ※ enableAtomicCommit が true であれば 有効 | ||
| distributorNamespaceId | string | “grn:gs2:{region}:{ownerId}:distributor:default” | ~ 1024文字 | トランザクションの実行に使用する GS2-Distributor ネームスペース GRN | ||
| queueNamespaceId | string | “grn:gs2:{region}:{ownerId}:queue:default” | ~ 1024文字 | トランザクションの実行に使用する GS2-JobQueue のネームスペース GRN |
ScriptSetting
スクリプト設定
GS2 ではマイクロサービスのイベントに関連づけて、カスタムスクリプトを実行することができます。
このモデルは、スクリプトの実行をトリガーするための設定を保持します。
スクリプトの実行方式は大きく2種類あり、それは「同期実行」と「非同期実行」です。
同期実行は、スクリプトの実行が完了するまで処理がブロックされます。
代わりに、スクリプトの実行結果を使って API の実行を止めたり、API のレスポンス内容を制御することができます。
一方、非同期実行ではスクリプトの完了を待つために処理がブロックされることはありません。
ただし、スクリプトの実行結果を利用して API の実行を停止したり、API の応答内容を変更することはできません。
非同期実行は API の応答フローに影響を与えないため、原則として非同期実行を推奨します。
非同期実行には実行方式が2種類あり、GS2-Script と Amazon EventBridge があります。
Amazon EventBridge を使用することで、Lua 以外の言語で処理を記述することができます。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| triggerScriptId | string | ~ 1024文字 | API 実行時に同期的に実行される GS2-Script のスクリプト
GRN 「grn:gs2:」ではじまる GRN 形式のIDで指定する必要があります。 | |||||||||||
| doneTriggerTargetType | 文字列列挙型 enum { “none”, “gs2_script”, “aws” } | “none” | 非同期スクリプトの実行方法 非同期実行で使用するスクリプトの種類を指定します。 「非同期実行のスクリプトを使用しない(none)」「GS2-Scriptを使用する(gs2_script)」「Amazon EventBridgeを使用する(aws)」が選択できます。
| |||||||||||
| doneTriggerScriptId | string | {doneTriggerTargetType} == “gs2_script” | ~ 1024文字 | 非同期実行する GS2-Script スクリプト
GRN 「grn:gs2:」ではじまる GRN 形式のIDで指定する必要があります。 ※ doneTriggerTargetType が “gs2_script” であれば 有効 | ||||||||||
| doneTriggerQueueNamespaceId | string | {doneTriggerTargetType} == “gs2_script” | ~ 1024文字 | 非同期実行スクリプトを実行する GS2-JobQueue ネームスペース
GRN 非同期実行スクリプトを直接実行するのではなく、GS2-JobQueue を経由する場合は GS2-JobQueue のネームスペースGRN を指定します。 GS2-JobQueue を利用する理由は多くはありませんので、特に理由がなければ指定する必要はありません。 ※ doneTriggerTargetType が “gs2_script” であれば 有効 |
LogSetting
ログの出力設定
ログデータの出力設定を管理します。この型は、ログデータを書き出すために使用される GS2-Log ネームスペースの識別子(Namespace ID)を保持します。
ログネームスペースID(loggingNamespaceId)には、ログデータを収集し保存する GS2-Log のネームスペースを、GRNの形式で指定します。
この設定をすることで、設定されたネームスペース内で発生したAPIリクエスト・レスポンスのログデータが、対象の GS2-Log ネームスペース側へ出力されるようになります。
GS2-Log ではリアルタイムでログが提供され、システムの監視や分析、デバッグなどに利用できます。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| loggingNamespaceId | string | ✓ | ~ 1024文字 | ログを出力する GS2-Log のネームスペース
GRN 「grn:gs2:」ではじまる GRN 形式のIDで指定する必要があります。 |
GitHubCheckoutSetting
GitHubからマスターデータをチェックアウトする設定
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |||||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|---|---|
| apiKeyId | string | ✓ | ~ 1024文字 | GitHub APIキーの GRN | ||||||||||
| repositoryName | string | ✓ | ~ 1024文字 | リポジトリ名 | ||||||||||
| sourcePath | string | ✓ | ~ 1024文字 | マスターデータ(JSON)ファイルのパス | ||||||||||
| referenceType | 文字列列挙型 enum { “commit_hash”, “branch”, “tag” } | ✓ | コードの取得元
| |||||||||||
| commitHash | string | {referenceType} == “commit_hash” | ✓※ | ~ 1024文字 | コミットハッシュ ※ referenceType が “commit_hash” であれば 必須 | |||||||||
| branchName | string | {referenceType} == “branch” | ✓※ | ~ 1024文字 | ブランチ名 ※ referenceType が “branch” であれば 必須 | |||||||||
| tagName | string | {referenceType} == “tag” | ✓※ | ~ 1024文字 | タグ名 ※ referenceType が “tag” であれば 必須 |
Progress
クエスト進行状況
クエストの開始時に作成され、終了時に削除されます。
インゲームの途中でアプリを終了した際にはこのデータが残った状態となり
エンティティが保持する進行中のクエスト情報からゲームをリジュームすることが可能です。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| progressId | string | ※ | ~ 1024文字 | クエスト進行状況
GRN ※ サーバーが自動で設定 | ||
| userId | string | ✓ | ~ 128文字 | ユーザーID | ||
| transactionId | string | ✓ | UUID | ~ 36文字 | トランザクションID | |
| questModelId | string | ✓ | ~ 1024文字 | 進行中のクエストモデル GRN | ||
| randomSeed | long | ✓ | 0 ~ 9223372036854775805 | 乱数シード | ||
| rewards | List<Reward> | [] | 0 ~ 1000 items | クエストで得られる報酬リスト | ||
| failedRewards | List<Reward> | [] | 0 ~ 1000 items | クエストを失敗時に得られる報酬リスト | ||
| metadata | string | ~ 256文字 | メタデータ メタデータには任意の値を設定できます。 これらの値は GS2 の動作には影響しないため、ゲーム内で利用する情報の保存先として使用できます。 | |||
| createdAt | long | ※ | 現在時刻 | 作成日時 UNIX 時間・ミリ秒 ※ サーバーが自動で設定 | ||
| updatedAt | long | ※ | 現在時刻 | 最終更新日時 UNIX 時間・ミリ秒 ※ サーバーが自動で設定 | ||
| revision | long | 0 | 0 ~ 9223372036854775805 | リビジョン |
CompletedQuestList
クリア済みクエストリスト
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| completedQuestListId | string | ※ | ~ 1024文字 | クリア済みクエストリスト
GRN ※ サーバーが自動で設定 | ||
| userId | string | ✓ | ~ 128文字 | ユーザーID | ||
| questGroupName | string | ✓ | ~ 128文字 | クエストグループモデル名 | ||
| completeQuestNames | List<string> | [] | 0 ~ 1000 items | クリア済みクエスト名リスト | ||
| createdAt | long | ※ | 現在時刻 | 作成日時 UNIX 時間・ミリ秒 ※ サーバーが自動で設定 | ||
| updatedAt | long | ※ | 現在時刻 | 最終更新日時 UNIX 時間・ミリ秒 ※ サーバーが自動で設定 | ||
| revision | long | 0 | 0 ~ 9223372036854775805 | リビジョン |
QuestGroupModel
クエストグループモデル
クエストグループは複数のクエストをグルーピングするためのエンティティで、クエストの進行はグループ内で同時に1つしか実行できません。
つまり、並列でクエストを進行できるようにする必要がある場合はグループを分ける必要があります。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| questGroupModelId | string | ※ | ~ 1024文字 | クエストグループ
GRN ※ サーバーが自動で設定 | ||
| name | string | ✓ | ~ 128文字 | クエストグループモデル名 クエストグループモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| metadata | string | ~ 1024文字 | メタデータ メタデータには任意の値を設定できます。 これらの値は GS2 の動作には影響しないため、ゲーム内で利用する情報の保存先として使用できます。 | |||
| quests | List<QuestModel> | [] | 0 ~ 1000 items | グループに属するクエスト | ||
| challengePeriodEventId | string | ~ 1024文字 | クエストに挑戦可能な期間を設定した GS2-Schedule イベント GRN |
QuestModel
クエストモデル
クエストモデルはインゲームの開始に必要な対価とクリアしたときに得られる報酬を保持するエンティティです。
クリアしたときに得られる報酬は複数のバリエーションを用意でき、クエスト開始時に抽選することができます。
例えば、クエスト自体は同じでも、レアモンスターの出現有無によって2種類のコンテンツバリエーションを作成できます。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| questModelId | string | ※ | ~ 1024文字 | クエストモデル
GRN ※ サーバーが自動で設定 | ||
| name | string | ✓ | ~ 128文字 | クエストモデル名 クエストモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| metadata | string | ~ 1024文字 | メタデータ メタデータには任意の値を設定できます。 これらの値は GS2 の動作には影響しないため、ゲーム内で利用する情報の保存先として使用できます。 | |||
| contents | List<Contents> | [] | 1 ~ 10 items | クエストの内容 | ||
| challengePeriodEventId | string | ~ 1024文字 | クエストに挑戦可能な期間を設定した GS2-Schedule イベント GRN | |||
| firstCompleteAcquireActions | List<AcquireAction> | [] | 0 ~ 10 items | 初回クエストクリア時の報酬入手アクションリスト | ||
| verifyActions | List<VerifyAction> | [] | 0 ~ 10 items | クエストの参加条件検証アクションリスト | ||
| consumeActions | List<ConsumeAction> | [] | 0 ~ 10 items | クエストの参加料として実行される消費アクション | ||
| failedAcquireActions | List<AcquireAction> | [] | 0 ~ 100 items | クエスト失敗時に報酬として実行される入手アクション | ||
| premiseQuestNames | List<string> | [] | 0 ~ 10 items | クエストに挑戦するために事前にクリアが必要なクエスト名の一覧 |
Contents
コンテンツ
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| metadata | string | ~ 256文字 | メタデータ メタデータには任意の値を設定できます。 これらの値は GS2 の動作には影響しないため、ゲーム内で利用する情報の保存先として使用できます。 | |||
| completeAcquireActions | List<AcquireAction> | [] | 0 ~ 10 items | クエストクリア時に実行される報酬入手アクション | ||
| weight | int | 1 | 1 ~ 2147483646 | 抽選する重み |
Reward
報酬
AcquireAction
入手アクション
ConsumeAction
消費アクション
VerifyAction
検証アクション
Config
コンフィグ設定
トランザクションの変数に適用する設定値
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| key | string | ✓ | ~ 64文字 | 名前 | ||
| value | string | ~ 51200文字 | 値 |
VerifyActionResult
検証アクションの実行結果
ConsumeActionResult
消費アクションの実行結果
AcquireActionResult
入手アクションの実行結果
TransactionResult
トランザクション実行結果
サーバーサイドでのトランザクションの自動実行機能を利用して実行されたトランザクションの実行結果
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| transactionId | string | ✓ | 36 ~ 36文字 | トランザクションID | ||
| verifyResults | List<VerifyActionResult> | 0 ~ 10 items | 検証アクションの実行結果リスト | |||
| consumeResults | List<ConsumeActionResult> | [] | 0 ~ 10 items | 消費アクションの実行結果リスト | ||
| acquireResults | List<AcquireActionResult> | [] | 0 ~ 100 items | 入手アクションの実行結果リスト | ||
| hasError | bool | false | トランザクション実行中にエラーが発生したかどうか |
CurrentQuestMaster
現在アクティブなクエストモデルのマスターデータ
現在ネームスペース内で有効な、クエストのモデルの定義を記述したマスターデータです。
GS2ではマスターデータの管理にJSON形式のファイルを使用します。
ファイルをアップロードすることで、実際にサーバーに設定を反映することができます。
JSONファイルを作成する方法として、マネージメントコンソール内にマスターデータエディタを提供しています。
また、よりゲームの運営に相応しいツールを作成し、適切なフォーマットのJSONファイルを書き出すことでもサービスを利用可能です。
Note
JSONファイルの形式については GS2-Quest マスターデータリファレンス をご参照ください。| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceId | string | ※ | ~ 1024文字 | ネームスペース
GRN ※ サーバーが自動で設定 | ||
| settings | string | ✓ | ~ 5242880 バイト (5MB) | マスターデータ |
QuestGroupModelMaster
クエストグループモデルマスター
クエストグループモデルマスターは、ゲーム内で使用されるクエストグループモデルの編集・管理用データで、マネージメントコンソールのマスターデータエディタで一時的に保持されます。
インポート・更新処理を行うことで、実際にゲームから参照されるクエストグループモデルとして反映されます。
クエストグループは複数のクエストをグルーピングするためのエンティティで、クエストの進行はグループ内で同時に1つしか実行できません。
つまり、並列でクエストを進行できるようにする必要がある場合はグループを分ける必要があります。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| questGroupModelId | string | ※ | ~ 1024文字 | クエストグループモデルマスター
GRN ※ サーバーが自動で設定 | ||
| name | string | ✓ | ~ 128文字 | クエストグループモデル名 クエストグループモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| description | string | ~ 1024文字 | 説明文 | |||
| metadata | string | ~ 1024文字 | メタデータ メタデータには任意の値を設定できます。 これらの値は GS2 の動作には影響しないため、ゲーム内で利用する情報の保存先として使用できます。 | |||
| challengePeriodEventId | string | ~ 1024文字 | クエストに挑戦可能な期間を設定した GS2-Schedule イベント GRN | |||
| createdAt | long | ※ | 現在時刻 | 作成日時 UNIX 時間・ミリ秒 ※ サーバーが自動で設定 | ||
| updatedAt | long | ※ | 現在時刻 | 最終更新日時 UNIX 時間・ミリ秒 ※ サーバーが自動で設定 | ||
| revision | long | 0 | 0 ~ 9223372036854775805 | リビジョン |
QuestModelMaster
クエストモデルマスター
クエストモデルマスターは、ゲーム内で使用されるクエストモデルの編集・管理用データで、マネージメントコンソールのマスターデータエディタで一時的に保持されます。
インポート・更新処理を行うことで、実際にゲームから参照されるクエストモデルとして反映されます。
クエストモデルはインゲームの開始に必要な費用とクリアしたときに得られる報酬を保持するエンティティです。
クリアしたときに得られる報酬は複数のバリエーションを用意でき、クエスト開始時に抽選することができます。
例えば、クエスト自体は同じでも、レアモンスターの出現有無によって2種類のコンテンツバリエーションを作成できます。
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| questModelId | string | ※ | ~ 1024文字 | クエストモデルマスター
GRN ※ サーバーが自動で設定 | ||
| questGroupName | string | ✓ | ~ 128文字 | クエストグループモデル名 | ||
| name | string | ✓ | ~ 128文字 | クエストモデル名 クエストモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| description | string | ~ 1024文字 | 説明文 | |||
| metadata | string | ~ 1024文字 | メタデータ メタデータには任意の値を設定できます。 これらの値は GS2 の動作には影響しないため、ゲーム内で利用する情報の保存先として使用できます。 | |||
| contents | List<Contents> | ✓ | 1 ~ 10 items | クエストの内容 | ||
| challengePeriodEventId | string | ~ 1024文字 | クエストに挑戦可能な期間を設定した GS2-Schedule イベント GRN | |||
| firstCompleteAcquireActions | List<AcquireAction> | [] | 0 ~ 10 items | 初回クエストクリア時の報酬入手アクションリスト | ||
| verifyActions | List<VerifyAction> | [] | 0 ~ 10 items | クエストの参加条件検証アクションリスト | ||
| consumeActions | List<ConsumeAction> | [] | 0 ~ 10 items | クエストの参加料として実行される消費アクション | ||
| failedAcquireActions | List<AcquireAction> | [] | 0 ~ 100 items | クエスト失敗時に報酬として実行される入手アクション | ||
| premiseQuestNames | List<string> | [] | 0 ~ 10 items | クエストに挑戦するために事前にクリアが必要なクエスト名の一覧 | ||
| createdAt | long | ※ | 現在時刻 | 作成日時 UNIX 時間・ミリ秒 ※ サーバーが自動で設定 | ||
| updatedAt | long | ※ | 現在時刻 | 最終更新日時 UNIX 時間・ミリ秒 ※ サーバーが自動で設定 | ||
| revision | long | 0 | 0 ~ 9223372036854775805 | リビジョン |
メソッド
describeNamespaces
ネームスペースの一覧を取得
プロジェクト内において、サービス単位で作成されたネームスペースの一覧を取得します。
オプションのページトークンを使用して、リストの特定の位置からデータの取得を開始できます。
また、取得するネームスペースの数を制限することも可能です。
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namePrefix | string | ~ 64文字 | ネームスペース名のフィルター接頭辞 | |||
| pageToken | string | ~ 1024文字 | データの取得を開始する位置を指定するトークン | |||
| limit | int | 30 | 1 ~ 1000 | データの取得件数 |
Result
| 型 | 説明 | |
|---|---|---|
| items | List<Namespace> | ネームスペースのリスト |
| nextPageToken | string | リストの続きを取得するためのページトークン |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.DescribeNamespaces(
&quest.DescribeNamespacesRequest {
NamePrefix: nil,
PageToken: nil,
Limit: nil,
}
)
if err != nil {
panic("error occurred")
}
items := result.Items
nextPageToken := result.NextPageTokencreateNamespace
ネームスペースを新規作成
ネームスペースの名前、説明、および各種設定を含む詳細情報を指定する必要があります。
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| name | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| description | string | ~ 1024文字 | 説明文 | |||
| transactionSetting | TransactionSetting | ✓ | トランザクション設定 | |||
| startQuestScript | ScriptSetting | クエスト開始したときに実行するスクリプトの設定 Script トリガーリファレンス - startQuest | ||||
| completeQuestScript | ScriptSetting | クエストクリアしたときに実行するスクリプトの設定 Script トリガーリファレンス - completeQuest | ||||
| failedQuestScript | ScriptSetting | クエスト失敗したときに実行するスクリプトの設定 Script トリガーリファレンス - failedQuest | ||||
| logSetting | LogSetting | ログの出力設定 |
Result
| 型 | 説明 | |
|---|---|---|
| item | Namespace | 作成したネームスペース |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.CreateNamespace(
&quest.CreateNamespaceRequest {
Name: pointy.String("namespace-0001"),
Description: nil,
TransactionSetting: &quest.TransactionSetting{
EnableAutoRun: pointy.Bool(false),
QueueNamespaceId: pointy.String("grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0001"),
},
StartQuestScript: nil,
CompleteQuestScript: nil,
FailedQuestScript: nil,
LogSetting: &quest.LogSetting{
LoggingNamespaceId: pointy.String("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001"),
},
}
)
if err != nil {
panic("error occurred")
}
item := result.ItemgetNamespaceStatus
ネームスペースの状態を取得
指定されたネームスペースの現在の状態を取得します。
これには、ネームスペースがアクティブか、保留中か、またはその他の状態にあるかが含まれます。
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
Result
| 型 | 説明 | |
|---|---|---|
| status | string |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.GetNamespaceStatus(
&quest.GetNamespaceStatusRequest {
NamespaceName: pointy.String("namespace-0001"),
}
)
if err != nil {
panic("error occurred")
}
status := result.StatusgetNamespace
ネームスペースを取得
指定されたネームスペースの詳細情報を取得します。
これには、ネームスペースの名前、説明、およびその他の設定情報が含まれます。
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
Result
| 型 | 説明 | |
|---|---|---|
| item | Namespace | ネームスペース |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.GetNamespace(
&quest.GetNamespaceRequest {
NamespaceName: pointy.String("namespace-0001"),
}
)
if err != nil {
panic("error occurred")
}
item := result.ItemupdateNamespace
ネームスペースを更新
指定されたネームスペースの設定を更新します。
ネームスペースの説明や、特定の設定を変更することができます。
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| description | string | ~ 1024文字 | 説明文 | |||
| transactionSetting | TransactionSetting | ✓ | トランザクション設定 | |||
| startQuestScript | ScriptSetting | クエスト開始したときに実行するスクリプトの設定 Script トリガーリファレンス - startQuest | ||||
| completeQuestScript | ScriptSetting | クエストクリアしたときに実行するスクリプトの設定 Script トリガーリファレンス - completeQuest | ||||
| failedQuestScript | ScriptSetting | クエスト失敗したときに実行するスクリプトの設定 Script トリガーリファレンス - failedQuest | ||||
| logSetting | LogSetting | ログの出力設定 |
Result
| 型 | 説明 | |
|---|---|---|
| item | Namespace | 更新したネームスペース |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.UpdateNamespace(
&quest.UpdateNamespaceRequest {
NamespaceName: pointy.String("namespace-0001"),
Description: pointy.String("description1"),
TransactionSetting: &quest.TransactionSetting{
EnableAutoRun: pointy.Bool(false),
QueueNamespaceId: pointy.String("grn:gs2:ap-northeast-1:YourOwnerId:queue:queue-0002"),
},
StartQuestScript: nil,
CompleteQuestScript: nil,
FailedQuestScript: nil,
LogSetting: &quest.LogSetting{
LoggingNamespaceId: pointy.String("grn:gs2:ap-northeast-1:YourOwnerId:log:namespace-0001"),
},
}
)
if err != nil {
panic("error occurred")
}
item := result.ItemdeleteNamespace
ネームスペースを削除
指定されたネームスペースを削除します。
この操作は不可逆であり、削除されたネームスペースに関連するすべてのデータは回復不能になります。
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
Result
| 型 | 説明 | |
|---|---|---|
| item | Namespace | 削除したネームスペース |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.DeleteNamespace(
&quest.DeleteNamespaceRequest {
NamespaceName: pointy.String("namespace-0001"),
}
)
if err != nil {
panic("error occurred")
}
item := result.ItemgetServiceVersion
マイクロサービスのバージョンを取得
Request
Request parameters: None
Result
| 型 | 説明 | |
|---|---|---|
| item | string | バージョン |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.GetServiceVersion(
&quest.GetServiceVersionRequest {
}
)
if err != nil {
panic("error occurred")
}
item := result.ItemdumpUserDataByUserId
指定したユーザーIDに紐づくデータのダンプを取得
個人情報保護の法的要件を満たすために使用したり、データのバックアップや移行に使用できます。
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| userId | string | ✓ | ~ 128文字 | ユーザーID | ||
| timeOffsetToken | string | ~ 1024文字 | タイムオフセットトークン |
Result
| 型 | 説明 |
|---|
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.DumpUserDataByUserId(
&quest.DumpUserDataByUserIdRequest {
UserId: pointy.String("user-0001"),
TimeOffsetToken: nil,
}
)
if err != nil {
panic("error occurred")
}checkDumpUserDataByUserId
指定したユーザーIDに紐づくデータのダンプが完了しているか確認
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| userId | string | ✓ | ~ 128文字 | ユーザーID | ||
| timeOffsetToken | string | ~ 1024文字 | タイムオフセットトークン |
Result
| 型 | 説明 | |
|---|---|---|
| url | string | 出力データのURL |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.CheckDumpUserDataByUserId(
&quest.CheckDumpUserDataByUserIdRequest {
UserId: pointy.String("user-0001"),
TimeOffsetToken: nil,
}
)
if err != nil {
panic("error occurred")
}
url := result.UrlcleanUserDataByUserId
ユーザーデータの完全削除
指定されたユーザーIDに紐づくデータのクリーニングを実行します。
これにより、特定のユーザーデータをプロジェクトから安全に削除できます。
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| userId | string | ✓ | ~ 128文字 | ユーザーID | ||
| timeOffsetToken | string | ~ 1024文字 | タイムオフセットトークン |
Result
| 型 | 説明 |
|---|
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.CleanUserDataByUserId(
&quest.CleanUserDataByUserIdRequest {
UserId: pointy.String("user-0001"),
TimeOffsetToken: nil,
}
)
if err != nil {
panic("error occurred")
}checkCleanUserDataByUserId
指定したユーザーIDに紐づくデータのダンプが完了しているか確認
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| userId | string | ✓ | ~ 128文字 | ユーザーID | ||
| timeOffsetToken | string | ~ 1024文字 | タイムオフセットトークン |
Result
| 型 | 説明 |
|---|
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.CheckCleanUserDataByUserId(
&quest.CheckCleanUserDataByUserIdRequest {
UserId: pointy.String("user-0001"),
TimeOffsetToken: nil,
}
)
if err != nil {
panic("error occurred")
}prepareImportUserDataByUserId
指定したユーザーIDに紐づくデータのインポートを実行
インポートに使用できるデータは GS2 によってエクスポートして取得したデータに限定され、古いデータはインポートに失敗する可能性があります。
エクスポートしたユーザーIDと異なるユーザーIDでインポートすることができますが、ユーザーデータのペイロード内にユーザーIDが含まれる場合はその限りではありません。
このAPIの戻り値で応答されたURLにエクスポートした zip ファイルをアップロードし、importUserDataByUserId を呼び出すことで実際のインポート処理を開始できます。
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| userId | string | ✓ | ~ 128文字 | ユーザーID | ||
| timeOffsetToken | string | ~ 1024文字 | タイムオフセットトークン |
Result
| 型 | 説明 | |
|---|---|---|
| uploadToken | string | アップロード後に結果を反映する際に使用するトークン |
| uploadUrl | string | ユーザーデータアップロード処理の実行に使用するURL |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.PrepareImportUserDataByUserId(
&quest.PrepareImportUserDataByUserIdRequest {
UserId: pointy.String("user-0001"),
TimeOffsetToken: nil,
}
)
if err != nil {
panic("error occurred")
}
uploadToken := result.UploadToken
uploadUrl := result.UploadUrlimportUserDataByUserId
指定したユーザーIDに紐づくデータのインポートを実行
インポートに使用できるデータは GS2 によってエクスポートして取得したデータに限定され、古いデータはインポートに失敗する可能性があります。
エクスポートしたユーザーIDと異なるユーザーIDでインポートすることができますが、ユーザーデータのペイロード内にユーザーIDが含まれる場合はその限りではありません。
このAPIを呼び出す前に prepareImportUserDataByUserId を呼び出して、アップロード準備を完了させる必要があります。
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| userId | string | ✓ | ~ 128文字 | ユーザーID | ||
| uploadToken | string | ✓ | ~ 1024文字 | アップロード準備で受け取ったトークン | ||
| timeOffsetToken | string | ~ 1024文字 | タイムオフセットトークン |
Result
| 型 | 説明 |
|---|
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.ImportUserDataByUserId(
&quest.ImportUserDataByUserIdRequest {
UserId: pointy.String("user-0001"),
UploadToken: pointy.String("upload-0001"),
TimeOffsetToken: nil,
}
)
if err != nil {
panic("error occurred")
}checkImportUserDataByUserId
指定したユーザーIDに紐づくデータのインポートが完了しているか確認
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| userId | string | ✓ | ~ 128文字 | ユーザーID | ||
| uploadToken | string | ✓ | ~ 1024文字 | アップロード準備で受け取ったトークン | ||
| timeOffsetToken | string | ~ 1024文字 | タイムオフセットトークン |
Result
| 型 | 説明 | |
|---|---|---|
| url | string | 出力ログのURL |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.CheckImportUserDataByUserId(
&quest.CheckImportUserDataByUserIdRequest {
UserId: pointy.String("user-0001"),
UploadToken: pointy.String("upload-0001"),
TimeOffsetToken: nil,
}
)
if err != nil {
panic("error occurred")
}
url := result.UrldescribeProgressesByUserId
クエスト進行状況の一覧を取得
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| userId | string | ✓ | ~ 128文字 | ユーザーID | ||
| pageToken | string | ~ 1024文字 | データの取得を開始する位置を指定するトークン | |||
| limit | int | 30 | 1 ~ 1000 | データの取得件数 | ||
| timeOffsetToken | string | ~ 1024文字 | タイムオフセットトークン |
Result
| 型 | 説明 | |
|---|---|---|
| items | List<Progress> | クエスト進行状況のリスト |
| nextPageToken | string | リストの続きを取得するためのページトークン |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.DescribeProgressesByUserId(
&quest.DescribeProgressesByUserIdRequest {
NamespaceName: pointy.String("namespace-0001"),
UserId: pointy.String("user-0001"),
PageToken: nil,
Limit: nil,
TimeOffsetToken: nil,
}
)
if err != nil {
panic("error occurred")
}
items := result.Items
nextPageToken := result.NextPageTokencreateProgressByUserId
ユーザーIDを指定してクエストの進行状況を作成
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| userId | string | ✓ | ~ 128文字 | ユーザーID | ||
| questModelId | string | ✓ | ~ 1024文字 | 開始するクエストモデル GRN | ||
| force | bool | false | すでに開始しているクエストがある場合にそれを破棄して開始するか | |||
| config | List<Config> | [] | 0 ~ 32 items | トランザクションの変数に適用する設定値 | ||
| timeOffsetToken | string | ~ 1024文字 | タイムオフセットトークン |
Result
| 型 | 説明 | |
|---|---|---|
| item | Progress | クエスト進行状況 |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.CreateProgressByUserId(
&quest.CreateProgressByUserIdRequest {
NamespaceName: pointy.String("namespace-0001"),
UserId: pointy.String("user-0001"),
QuestModelId: pointy.String("grn:gs2:ap-northeast-1:YourOwnerId:quest:namespace-0001:group:main:quest:1-1"),
Force: nil,
Config: nil,
TimeOffsetToken: nil,
}
)
if err != nil {
panic("error occurred")
}
item := result.ItemgetProgress
クエスト進行状況を取得
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| accessToken | string | ✓ | ~ 128文字 | アクセストークン |
Result
| 型 | 説明 | |
|---|---|---|
| item | Progress | クエスト進行状況 |
| questGroup | QuestGroupModel | クエストグループモデル |
| quest | QuestModel | クエストモデル |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.GetProgress(
&quest.GetProgressRequest {
NamespaceName: pointy.String("namespace-0001"),
AccessToken: pointy.String("accessToken-0001"),
}
)
if err != nil {
panic("error occurred")
}
item := result.Item
questGroup := result.QuestGroup
quest := result.QuestgetProgressByUserId
ユーザーIDを指定してクエスト進行状況を取得
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| userId | string | ✓ | ~ 128文字 | ユーザーID | ||
| timeOffsetToken | string | ~ 1024文字 | タイムオフセットトークン |
Result
| 型 | 説明 | |
|---|---|---|
| item | Progress | クエスト進行状況 |
| questGroup | QuestGroupModel | クエストグループモデル |
| quest | QuestModel | クエストモデル |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.GetProgressByUserId(
&quest.GetProgressByUserIdRequest {
NamespaceName: pointy.String("namespace-0001"),
UserId: pointy.String("user-0001"),
TimeOffsetToken: nil,
}
)
if err != nil {
panic("error occurred")
}
item := result.Item
questGroup := result.QuestGroup
quest := result.Queststart
クエストを開始
同一カテゴリ内でゲームプレイヤーは同時に1つのクエストを実行できます。
すでに同一カテゴリ内で実行中のクエストがある場合、このAPIはエラーを返します。
進行中のクエストを取得するAPIを呼び出すことで、クエストを再開するために必要な情報を得ることができます。
強制的にクエストを開始するには force パラメータに true を指定することで強制的にクエストを開始できます。
クエストが正常に開始できた場合、Progress オブジェクトを応答します。
Progress オブジェクトはクエストを実行するために必要ないくつかの情報を応答します。
transactionId は実行中のクエスト固有のIDです。
クエストの完了報告にはこのIDを指定する必要があります。
randomSeed はクエストの内容を決定するために使用できる乱数シードです。
クエストを開始するたびに異なる乱数が払い出されますので、この値をシード値としてゲームを進行させることで
クエスト中にアプリケーションを強制終了したとしても同一条件で再開することができます。
rewards にはこのクエストにおいて入手可能な報酬とその数量の"最大値"が得られます。
クエストの完了報告にも rewards を渡すことができ、そこでクエスト中に実際に入手したアイテムの数量を指定します。
詳細はクエストの完了報告APIのドキュメントを参照してください。
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| questGroupName | string | ✓ | ~ 128文字 | クエストグループモデル名 | ||
| questName | string | ✓ | ~ 128文字 | クエストモデル名 | ||
| accessToken | string | ✓ | ~ 128文字 | アクセストークン | ||
| force | bool | false | すでに開始しているクエストがある場合にそれを破棄して開始するか | |||
| config | List<Config> | [] | 0 ~ 32 items | トランザクションの変数に適用する設定値 |
Result
| 型 | 説明 | |
|---|---|---|
| transactionId | string | 発行されたトランザクションID |
| stampSheet | string | クエストの開始処理の実行に使用するスタンプシート |
| stampSheetEncryptionKeyId | string | スタンプシートの署名計算に使用した暗号鍵GRN |
| autoRunStampSheet | bool? | トランザクションの自動実行が有効か |
| atomicCommit | bool? | トランザクションをアトミックにコミットするか |
| transaction | string | 発行されたトランザクション |
| transactionResult | TransactionResult | トランザクション実行結果 |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.Start(
&quest.StartRequest {
NamespaceName: pointy.String("namespace-0001"),
QuestGroupName: pointy.String("group-0001"),
QuestName: pointy.String("quest-0001"),
AccessToken: pointy.String("accessToken-0001"),
Force: nil,
Config: nil,
}
)
if err != nil {
panic("error occurred")
}
transactionId := result.TransactionId
stampSheet := result.StampSheet
stampSheetEncryptionKeyId := result.StampSheetEncryptionKeyId
autoRunStampSheet := result.AutoRunStampSheet
atomicCommit := result.AtomicCommit
transaction := result.Transaction
transactionResult := result.TransactionResultstartByUserId
ユーザーIDを指定してクエストを開始
同一カテゴリ内でゲームプレイヤーは同時に1つのクエストを実行できます。
すでに同一カテゴリ内で実行中のクエストがある場合、このAPIはエラーを返します。
進行中のクエストを取得するAPIを呼び出すことで、クエストを再開するために必要な情報を得ることができます。
強制的にクエストを開始するには force パラメータに true を指定することで強制的にクエストを開始できます。
クエストが正常に開始できた場合、Progress オブジェクトを応答します。
Progress オブジェクトはクエストを実行するために必要ないくつかの情報を応答します。
transactionId は実行中のクエスト固有のIDです。
クエストの完了報告にはこのIDを指定する必要があります。
randomSeed はクエストの内容を決定するために使用できる乱数シードです。
クエストを開®®始するたびに異なる乱数が払い出されますので、この値をシード値としてゲームを進行させることで
クエスト中にアプリケーションを強制終了したとしても同一条件で再開することができます。
rewards にはこのクエストにおいて入手可能な報酬とその数量の"最大値"が得られます。
クエストの完了報告にも rewards を渡すことができ、そこでクエスト中に実際に入手したアイテムの数量を指定します。
詳細はクエストの完了報告APIのドキュメントを参照してください。
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| questGroupName | string | ✓ | ~ 128文字 | クエストグループモデル名 | ||
| questName | string | ✓ | ~ 128文字 | クエストモデル名 | ||
| userId | string | ✓ | ~ 128文字 | ユーザーID | ||
| force | bool | false | すでに開始しているクエストがある場合にそれを破棄して開始するか | |||
| config | List<Config> | [] | 0 ~ 32 items | トランザクションの変数に適用する設定値 | ||
| timeOffsetToken | string | ~ 1024文字 | タイムオフセットトークン |
Result
| 型 | 説明 | |
|---|---|---|
| transactionId | string | 発行されたトランザクションID |
| stampSheet | string | クエストの開始処理の実行に使用するスタンプシート |
| stampSheetEncryptionKeyId | string | スタンプシートの署名計算に使用した暗号鍵GRN |
| autoRunStampSheet | bool? | トランザクションの自動実行が有効か |
| atomicCommit | bool? | トランザクションをアトミックにコミットするか |
| transaction | string | 発行されたトランザクション |
| transactionResult | TransactionResult | トランザクション実行結果 |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.StartByUserId(
&quest.StartByUserIdRequest {
NamespaceName: pointy.String("namespace-0001"),
QuestGroupName: pointy.String("group-0001"),
QuestName: pointy.String("quest-0001"),
UserId: pointy.String("user-0001"),
Force: nil,
Config: nil,
TimeOffsetToken: nil,
}
)
if err != nil {
panic("error occurred")
}
transactionId := result.TransactionId
stampSheet := result.StampSheet
stampSheetEncryptionKeyId := result.StampSheetEncryptionKeyId
autoRunStampSheet := result.AutoRunStampSheet
atomicCommit := result.AtomicCommit
transaction := result.Transaction
transactionResult := result.TransactionResultend
クエストを完了
開始時に受け取ったクエストにおいて入手可能な報酬とその数量の"最大値"のうち、クエスト内で実際に入手した報酬を rewards で報告します。
isComplete にはクエストをクリアできたかを報告します。クエストに失敗した場合、rewards の値は無視してクエストに設定された失敗した場合の報酬が付与されます。
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| accessToken | string | ✓ | ~ 128文字 | アクセストークン | ||
| rewards | List<Reward> | [] | 0 ~ 1000 items | クエストで実際に得た報酬 | ||
| isComplete | bool | ✓ | クエストをクリアしたか | |||
| config | List<Config> | [] | 0 ~ 32 items | トランザクションの変数に適用する設定値 |
Result
| 型 | 説明 | |
|---|---|---|
| item | Progress | クエスト進行状況 |
| transactionId | string | 発行されたトランザクションID |
| stampSheet | string | 報酬付与処理の実行に使用するスタンプシート |
| stampSheetEncryptionKeyId | string | スタンプシートの署名計算に使用した暗号鍵GRN |
| autoRunStampSheet | bool? | トランザクションの自動実行が有効か |
| atomicCommit | bool? | トランザクションをアトミックにコミットするか |
| transaction | string | 発行されたトランザクション |
| transactionResult | TransactionResult | トランザクション実行結果 |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.End(
&quest.EndRequest {
NamespaceName: pointy.String("namespace-0001"),
AccessToken: pointy.String("accessToken-0001"),
Rewards: []quest.Reward{},
IsComplete: pointy.Bool(true),
Config: nil,
}
)
if err != nil {
panic("error occurred")
}
item := result.Item
transactionId := result.TransactionId
stampSheet := result.StampSheet
stampSheetEncryptionKeyId := result.StampSheetEncryptionKeyId
autoRunStampSheet := result.AutoRunStampSheet
atomicCommit := result.AtomicCommit
transaction := result.Transaction
transactionResult := result.TransactionResultendByUserId
ユーザーIDを指定してクエストを完了
開始時に受け取ったクエストにおいて入手可能な報酬とその数量の"最大値"のうち、クエスト内で実際に入手した報酬を rewards で報告します。
isComplete にはクエストをクリアできたかを報告します。クエストに失敗した場合、rewards の値は無視してクエストに設定された失敗した場合の報酬が付与されます。
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| userId | string | ✓ | ~ 128文字 | ユーザーID | ||
| rewards | List<Reward> | [] | 0 ~ 1000 items | クエストで実際に得た報酬 | ||
| isComplete | bool | ✓ | クエストをクリアしたか | |||
| config | List<Config> | [] | 0 ~ 32 items | トランザクションの変数に適用する設定値 | ||
| timeOffsetToken | string | ~ 1024文字 | タイムオフセットトークン |
Result
| 型 | 説明 | |
|---|---|---|
| item | Progress | クエスト進行状況 |
| transactionId | string | 発行されたトランザクションID |
| stampSheet | string | 報酬付与処理の実行に使用するスタンプシート |
| stampSheetEncryptionKeyId | string | スタンプシートの署名計算に使用した暗号鍵GRN |
| autoRunStampSheet | bool? | トランザクションの自動実行が有効か |
| atomicCommit | bool? | トランザクションをアトミックにコミットするか |
| transaction | string | 発行されたトランザクション |
| transactionResult | TransactionResult | トランザクション実行結果 |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.EndByUserId(
&quest.EndByUserIdRequest {
NamespaceName: pointy.String("namespace-0001"),
UserId: pointy.String("user-0001"),
Rewards: []quest.Reward{},
IsComplete: pointy.Bool(true),
Config: nil,
TimeOffsetToken: nil,
}
)
if err != nil {
panic("error occurred")
}
item := result.Item
transactionId := result.TransactionId
stampSheet := result.StampSheet
stampSheetEncryptionKeyId := result.StampSheetEncryptionKeyId
autoRunStampSheet := result.AutoRunStampSheet
atomicCommit := result.AtomicCommit
transaction := result.Transaction
transactionResult := result.TransactionResultdeleteProgress
クエスト進行状況を削除
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| accessToken | string | ✓ | ~ 128文字 | アクセストークン |
Result
| 型 | 説明 | |
|---|---|---|
| item | Progress | クエスト進行状況 |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.DeleteProgress(
&quest.DeleteProgressRequest {
NamespaceName: pointy.String("namespace-0001"),
AccessToken: pointy.String("accessToken-0001"),
}
)
if err != nil {
panic("error occurred")
}
item := result.ItemdeleteProgressByUserId
ユーザーIDを指定してクエスト進行状況を削除
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| userId | string | ✓ | ~ 128文字 | ユーザーID | ||
| timeOffsetToken | string | ~ 1024文字 | タイムオフセットトークン |
Result
| 型 | 説明 | |
|---|---|---|
| item | Progress | クエスト進行状況 |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.DeleteProgressByUserId(
&quest.DeleteProgressByUserIdRequest {
NamespaceName: pointy.String("namespace-0001"),
UserId: pointy.String("user-0001"),
TimeOffsetToken: nil,
}
)
if err != nil {
panic("error occurred")
}
item := result.ItemdescribeCompletedQuestLists
クリア済みクエストリストの一覧を取得
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| accessToken | string | ✓ | ~ 128文字 | アクセストークン | ||
| pageToken | string | ~ 1024文字 | データの取得を開始する位置を指定するトークン | |||
| limit | int | 30 | 1 ~ 1000 | データの取得件数 |
Result
| 型 | 説明 | |
|---|---|---|
| items | List<CompletedQuestList> | クリア済みクエストリストの一覧 |
| nextPageToken | string | リストの続きを取得するためのページトークン |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.DescribeCompletedQuestLists(
&quest.DescribeCompletedQuestListsRequest {
NamespaceName: pointy.String("namespace-0001"),
AccessToken: pointy.String("accessToken-0001"),
PageToken: nil,
Limit: nil,
}
)
if err != nil {
panic("error occurred")
}
items := result.Items
nextPageToken := result.NextPageTokendescribeCompletedQuestListsByUserId
ユーザーIDを指定してクリア済みクエストリストの一覧を取得
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| userId | string | ✓ | ~ 128文字 | ユーザーID | ||
| pageToken | string | ~ 1024文字 | データの取得を開始する位置を指定するトークン | |||
| limit | int | 30 | 1 ~ 1000 | データの取得件数 | ||
| timeOffsetToken | string | ~ 1024文字 | タイムオフセットトークン |
Result
| 型 | 説明 | |
|---|---|---|
| items | List<CompletedQuestList> | クリア済みクエストリストの一覧 |
| nextPageToken | string | リストの続きを取得するためのページトークン |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.DescribeCompletedQuestListsByUserId(
&quest.DescribeCompletedQuestListsByUserIdRequest {
NamespaceName: pointy.String("namespace-0001"),
UserId: pointy.String("user-0001"),
PageToken: nil,
Limit: nil,
TimeOffsetToken: nil,
}
)
if err != nil {
panic("error occurred")
}
items := result.Items
nextPageToken := result.NextPageTokengetCompletedQuestList
クリア済みのクエストリストを取得
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| questGroupName | string | ✓ | ~ 128文字 | クエストグループモデル名 | ||
| accessToken | string | ✓ | ~ 128文字 | アクセストークン |
Result
| 型 | 説明 | |
|---|---|---|
| item | CompletedQuestList | クリア済みクエストリスト |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.GetCompletedQuestList(
&quest.GetCompletedQuestListRequest {
NamespaceName: pointy.String("namespace-0001"),
QuestGroupName: pointy.String("main"),
AccessToken: pointy.String("accessToken-0001"),
}
)
if err != nil {
panic("error occurred")
}
item := result.ItemgetCompletedQuestListByUserId
ユーザーIDを指定してクリア済みクエストリストを取得
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| questGroupName | string | ✓ | ~ 128文字 | クエストグループモデル名 | ||
| userId | string | ✓ | ~ 128文字 | ユーザーID | ||
| timeOffsetToken | string | ~ 1024文字 | タイムオフセットトークン |
Result
| 型 | 説明 | |
|---|---|---|
| item | CompletedQuestList | クリア済みクエストリスト |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.GetCompletedQuestListByUserId(
&quest.GetCompletedQuestListByUserIdRequest {
NamespaceName: pointy.String("namespace-0001"),
QuestGroupName: pointy.String("main"),
UserId: pointy.String("user-0001"),
TimeOffsetToken: nil,
}
)
if err != nil {
panic("error occurred")
}
item := result.ItemdeleteCompletedQuestListByUserId
ユーザーIDを指定してクリア済みクエストリストを削除
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| questGroupName | string | ✓ | ~ 128文字 | クエストグループモデル名 | ||
| userId | string | ✓ | ~ 128文字 | ユーザーID | ||
| timeOffsetToken | string | ~ 1024文字 | タイムオフセットトークン |
Result
| 型 | 説明 | |
|---|---|---|
| item | CompletedQuestList | クリア済みクエストリスト |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.DeleteCompletedQuestListByUserId(
&quest.DeleteCompletedQuestListByUserIdRequest {
NamespaceName: pointy.String("namespace-0001"),
QuestGroupName: pointy.String("main"),
UserId: pointy.String("user-0001"),
TimeOffsetToken: nil,
}
)
if err != nil {
panic("error occurred")
}
item := result.ItemdescribeQuestGroupModels
クエストグループモデルの一覧を取得
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
Result
| 型 | 説明 | |
|---|---|---|
| items | List<QuestGroupModel> | クエストグループモデルのリスト |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.DescribeQuestGroupModels(
&quest.DescribeQuestGroupModelsRequest {
NamespaceName: pointy.String("namespace-0001"),
}
)
if err != nil {
panic("error occurred")
}
items := result.ItemsgetQuestGroupModel
クエストグループモデルを取得
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| questGroupName | string | ✓ | ~ 128文字 | クエストグループモデル名 クエストグループモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
Result
| 型 | 説明 | |
|---|---|---|
| item | QuestGroupModel | クエストグループモデル |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.GetQuestGroupModel(
&quest.GetQuestGroupModelRequest {
NamespaceName: pointy.String("namespace-0001"),
QuestGroupName: pointy.String("quest-group-0001"),
}
)
if err != nil {
panic("error occurred")
}
item := result.ItemdescribeQuestModels
クエストモデルの一覧を取得
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| questGroupName | string | ✓ | ~ 128文字 | クエストグループモデル名 クエストグループモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
Result
| 型 | 説明 | |
|---|---|---|
| items | List<QuestModel> | クエストモデルのリスト |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.DescribeQuestModels(
&quest.DescribeQuestModelsRequest {
NamespaceName: pointy.String("namespace-0001"),
QuestGroupName: pointy.String("quest-group-0001"),
}
)
if err != nil {
panic("error occurred")
}
items := result.ItemsgetQuestModel
クエストモデルを取得
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| questGroupName | string | ✓ | ~ 128文字 | クエストグループモデル名 クエストグループモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| questName | string | ✓ | ~ 128文字 | クエストモデル名 クエストモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
Result
| 型 | 説明 | |
|---|---|---|
| item | QuestModel |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.GetQuestModel(
&quest.GetQuestModelRequest {
NamespaceName: pointy.String("namespace-0001"),
QuestGroupName: pointy.String("quest-group-0001"),
QuestName: pointy.String("quest-0001"),
}
)
if err != nil {
panic("error occurred")
}
item := result.ItemexportMaster
クエストモデルマスターを有効化可能なマスターデータ形式でエクスポート
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
Result
| 型 | 説明 | |
|---|---|---|
| item | CurrentQuestMaster | 有効化可能なクエストモデルのマスターデータ |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.ExportMaster(
&quest.ExportMasterRequest {
NamespaceName: pointy.String("namespace-0001"),
}
)
if err != nil {
panic("error occurred")
}
item := result.ItemgetCurrentQuestMaster
現在アクティブなクエストモデルのマスターデータを取得
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
Result
| 型 | 説明 | |
|---|---|---|
| item | CurrentQuestMaster | 現在アクティブなクエストモデルのマスターデータ |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.GetCurrentQuestMaster(
&quest.GetCurrentQuestMasterRequest {
NamespaceName: pointy.String("namespace-0001"),
}
)
if err != nil {
panic("error occurred")
}
item := result.ItempreUpdateCurrentQuestMaster
現在アクティブなクエストモデルのマスターデータを更新(3フェーズ版)
1MBを超えるマスターデータをアップロードする場合は、3フェーズで更新を行います。
- このAPIを実行し、アップロード用のトークンとURLを取得します。
- 取得したURLに対して、マスターデータをアップロードします。
- UpdateCurrentModelMaster にアップロードで取得したトークンを渡して実行し、マスターデータを反映します。
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
Result
| 型 | 説明 | |
|---|---|---|
| uploadToken | string | アップロード後に結果を反映する際に使用するトークン |
| uploadUrl | string | アップロード処理の実行に使用するURL |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.PreUpdateCurrentQuestMaster(
&quest.PreUpdateCurrentQuestMasterRequest {
NamespaceName: pointy.String("namespace-0001"),
}
)
if err != nil {
panic("error occurred")
}
uploadToken := result.UploadToken
uploadUrl := result.UploadUrlupdateCurrentQuestMaster
現在アクティブなクエストモデルのマスターデータを更新
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |||||||
|---|---|---|---|---|---|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||||||||
| mode | 文字列列挙型 enum { “direct”, “preUpload” } | “direct” | 更新モード
| |||||||||
| settings | string | {mode} == “direct” | ✓※ | ~ 5242880文字 | マスターデータ ※ mode が “direct” であれば必須 | |||||||
| uploadToken | string | {mode} == “preUpload” | ✓※ | ~ 1024文字 | 事前アップロードで取得したトークン アップロードしたマスターデータを適用するために使用されます。 ※ mode が “preUpload” であれば必須 |
Result
| 型 | 説明 | |
|---|---|---|
| item | CurrentQuestMaster | 更新された現在アクティブなクエストモデルのマスターデータ |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.UpdateCurrentQuestMaster(
&quest.UpdateCurrentQuestMasterRequest {
NamespaceName: pointy.String("namespace-0001"),
Mode: pointy.String("direct"),
Settings: pointy.String("{\n \"version\": \"2019-05-14\",\n \"groups\": [\n {\n \"name\": \"main\",\n \"metadata\": \"MAIN\",\n \"quests\": [\n {\n \"name\": \"1-1\",\n \"metadata\": \"stage1-1\",\n \"contents\": [\n {\n \"metadata\": \"normal\",\n \"completeAcquireActions\": [\n {\n \"action\": \"Gs2Experience:AddExperienceByUserId\",\n \"request\": \"{\\\"namespaceName\\\": \\\"basic\\\", \\\"userId\\\": \\\"#{userId}\\\", \\\"experienceName\\\": \\\"player\\\", \\\"propertyId\\\": \\\"player\\\", \\\"experienceValue\\\": 10}\"\n },\n {\n \"action\": \"Gs2Inventory:AcquireItemSetByUserId\",\n \"request\": \"{\\\"namespaceName\\\": \\\"gold\\\", \\\"inventoryName\\\": \\\"wallet\\\", \\\"itemName\\\": \\\"basic\\\", \\\"userId\\\": \\\"#{userId}\\\", \\\"acquireCount\\\": 100, \\\"expiresAt\\\": null}\"\n }\n ],\n \"weight\": 99\n },\n {\n \"metadata\": \"rare\",\n \"completeAcquireActions\": [\n {\n \"action\": \"Gs2Experience:AddExperienceByUserId\",\n \"request\": \"{\\\"namespaceName\\\": \\\"basic\\\", \\\"userId\\\": \\\"#{userId}\\\", \\\"experienceName\\\": \\\"player\\\", \\\"propertyId\\\": \\\"player\\\", \\\"experienceValue\\\": 10}\"\n },\n {\n \"action\": \"Gs2Inventory:AcquireItemSetByUserId\",\n \"request\": \"{\\\"namespaceName\\\": \\\"gold\\\", \\\"inventoryName\\\": \\\"wallet\\\", \\\"itemName\\\": \\\"basic\\\", \\\"userId\\\": \\\"#{userId}\\\", \\\"acquireCount\\\": 500, \\\"expiresAt\\\": null}\"\n }\n ],\n \"weight\": 1\n }\n ],\n \"consumeActions\": [\n {\n \"action\": \"Gs2Stamina:ConsumeStaminaByUserId\",\n \"request\": \"{\\\"namespaceName\\\": \\\"basic\\\", \\\"staminaName\\\": \\\"quest\\\", \\\"userId\\\": \\\"#{userId}\\\", \\\"consumeValue\\\": 5}\"\n }\n ],\n \"failedAcquireActions\": [\n {\n \"action\": \"Gs2Stamina:RecoverStaminaByUserId\",\n \"request\": \"{\\\"namespaceName\\\": \\\"basic\\\", \\\"staminaName\\\": \\\"quest\\\", \\\"userId\\\": \\\"#{userId}\\\", \\\"recoverValue\\\": 5}\"\n }\n ],\n \"premiseQuestNames\": [\n ]\n },\n {\n \"name\": \"1-2\",\n \"metadata\": \"stage1-2\",\n \"contents\": [\n {\n \"metadata\": \"normal\",\n \"completeAcquireActions\": [\n {\n \"action\": \"Gs2Experience:AddExperienceByUserId\",\n \"request\": \"{\\\"namespaceName\\\": \\\"basic\\\", \\\"userId\\\": \\\"#{userId}\\\", \\\"experienceName\\\": \\\"player\\\", \\\"propertyId\\\": \\\"player\\\", \\\"experienceValue\\\": 20}\"\n },\n {\n \"action\": \"Gs2Inventory:AcquireItemSetByUserId\",\n \"request\": \"{\\\"namespaceName\\\": \\\"gold\\\", \\\"inventoryName\\\": \\\"wallet\\\", \\\"itemName\\\": \\\"basic\\\", \\\"userId\\\": \\\"#{userId}\\\", \\\"acquireCount\\\": 200, \\\"expiresAt\\\": null}\"\n }\n ],\n \"weight\": 98\n },\n {\n \"metadata\": \"rare\",\n \"completeAcquireActions\": [\n {\n \"action\": \"Gs2Experience:AddExperienceByUserId\",\n \"request\": \"{\\\"namespaceName\\\": \\\"basic\\\", \\\"userId\\\": \\\"#{userId}\\\", \\\"experienceName\\\": \\\"player\\\", \\\"propertyId\\\": \\\"player\\\", \\\"experienceValue\\\": 20}\"\n },\n {\n \"action\": \"Gs2Inventory:AcquireItemSetByUserId\",\n \"request\": \"{\\\"namespaceName\\\": \\\"gold\\\", \\\"inventoryName\\\": \\\"wallet\\\", \\\"itemName\\\": \\\"basic\\\", \\\"userId\\\": \\\"#{userId}\\\", \\\"acquireCount\\\": 1000, \\\"expiresAt\\\": null}\"\n }\n ],\n \"weight\": 2\n }\n ],\n \"consumeActions\": [\n {\n \"action\": \"Gs2Stamina:ConsumeStaminaByUserId\",\n \"request\": \"{\\\"namespaceName\\\": \\\"basic\\\", \\\"staminaName\\\": \\\"quest\\\", \\\"consumeValue\\\": 5, \\\"userId\\\": \\\"#{userId}\\\"}\"\n }\n ],\n \"failedAcquireActions\": [\n {\n \"action\": \"Gs2Stamina:RecoverStaminaByUserId\",\n \"request\": \"{\\\"namespaceName\\\": \\\"basic\\\", \\\"staminaName\\\": \\\"quest\\\", \\\"userId\\\": \\\"#{userId}\\\", \\\"recoverValue\\\": 5}\"\n }\n ],\n \"premiseQuestNames\": [\n \"1-1\"\n ]\n }\n ]\n },\n {\n \"name\": \"sub\",\n \"metadata\": \"SUB\",\n \"quests\": [\n {\n \"name\": \"1-1\",\n \"metadata\": \"stage1-1\",\n \"contents\": [\n {\n \"metadata\": \"normal\",\n \"completeAcquireActions\": [\n {\n \"action\": \"Gs2JobQueue:PushByUserId\",\n \"request\": \"{\\\"namespaceName\\\": \\\"queue-0001\\\", \\\"userId\\\": \\\"#{userId}\\\", \\\"jobs\\\": [{\\\"scriptId\\\": \\\"script-0001\\\", \\\"args\\\": {}, \\\"maxTryCount\\\": 3}]}\"\n }\n ],\n \"weight\": 1\n }\n ],\n \"premiseQuestNames\": [\n ]\n }\n ]\n }\n ]\n }"),
UploadToken: nil,
}
)
if err != nil {
panic("error occurred")
}
item := result.ItemupdateCurrentQuestMasterFromGitHub
現在アクティブなクエストモデルのマスターデータをGitHubから更新
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| checkoutSetting | GitHubCheckoutSetting | ✓ | GitHubからマスターデータをチェックアウトする設定 |
Result
| 型 | 説明 | |
|---|---|---|
| item | CurrentQuestMaster | 更新された現在アクティブなクエストモデルのマスターデータ |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.UpdateCurrentQuestMasterFromGitHub(
&quest.UpdateCurrentQuestMasterFromGitHubRequest {
NamespaceName: pointy.String("namespace-0001"),
CheckoutSetting: &quest.GitHubCheckoutSetting{
ApiKeyId: pointy.String("apiKeyId-0001"),
RepositoryName: pointy.String("gs2io/master-data"),
SourcePath: pointy.String("path/to/file.json"),
ReferenceType: pointy.String("branch"),
BranchName: pointy.String("develop"),
},
}
)
if err != nil {
panic("error occurred")
}
item := result.ItemdescribeQuestGroupModelMasters
クエストグループモデルマスターの一覧を取得
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| namePrefix | string | ~ 64文字 | クエストグループ名のフィルター接頭辞 | |||
| pageToken | string | ~ 1024文字 | データの取得を開始する位置を指定するトークン | |||
| limit | int | 30 | 1 ~ 1000 | データの取得件数 |
Result
| 型 | 説明 | |
|---|---|---|
| items | List<QuestGroupModelMaster> | クエストグループモデルマスターのリスト |
| nextPageToken | string | リストの続きを取得するためのページトークン |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.DescribeQuestGroupModelMasters(
&quest.DescribeQuestGroupModelMastersRequest {
NamespaceName: pointy.String("namespace-0001"),
NamePrefix: nil,
PageToken: nil,
Limit: nil,
}
)
if err != nil {
panic("error occurred")
}
items := result.Items
nextPageToken := result.NextPageTokencreateQuestGroupModelMaster
クエストグループモデルマスターを新規作成
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| name | string | ✓ | ~ 128文字 | クエストグループモデル名 クエストグループモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| description | string | ~ 1024文字 | 説明文 | |||
| metadata | string | ~ 1024文字 | メタデータ メタデータには任意の値を設定できます。 これらの値は GS2 の動作には影響しないため、ゲーム内で利用する情報の保存先として使用できます。 | |||
| challengePeriodEventId | string | ~ 1024文字 | クエストに挑戦可能な期間を設定した GS2-Schedule イベント GRN |
Result
| 型 | 説明 | |
|---|---|---|
| item | QuestGroupModelMaster | 作成したクエストグループモデルマスター |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.CreateQuestGroupModelMaster(
&quest.CreateQuestGroupModelMasterRequest {
NamespaceName: pointy.String("namespace-0001"),
Name: pointy.String("quest-group-0001"),
Description: nil,
Metadata: nil,
ChallengePeriodEventId: nil,
}
)
if err != nil {
panic("error occurred")
}
item := result.ItemgetQuestGroupModelMaster
クエストグループモデルマスターを取得
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| questGroupName | string | ✓ | ~ 128文字 | クエストグループモデル名 クエストグループモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
Result
| 型 | 説明 | |
|---|---|---|
| item | QuestGroupModelMaster | クエストグループモデルマスター |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.GetQuestGroupModelMaster(
&quest.GetQuestGroupModelMasterRequest {
NamespaceName: pointy.String("namespace-0001"),
QuestGroupName: pointy.String("quest-group-0001"),
}
)
if err != nil {
panic("error occurred")
}
item := result.ItemupdateQuestGroupModelMaster
クエストグループモデルマスターを更新
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| questGroupName | string | ✓ | ~ 128文字 | クエストグループモデル名 クエストグループモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| description | string | ~ 1024文字 | 説明文 | |||
| metadata | string | ~ 1024文字 | メタデータ メタデータには任意の値を設定できます。 これらの値は GS2 の動作には影響しないため、ゲーム内で利用する情報の保存先として使用できます。 | |||
| challengePeriodEventId | string | ~ 1024文字 | クエストに挑戦可能な期間を設定した GS2-Schedule イベント GRN |
Result
| 型 | 説明 | |
|---|---|---|
| item | QuestGroupModelMaster | 更新したクエストグループモデルマスター |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.UpdateQuestGroupModelMaster(
&quest.UpdateQuestGroupModelMasterRequest {
NamespaceName: pointy.String("namespace-0001"),
QuestGroupName: pointy.String("quest-group-0001"),
Description: pointy.String("description1"),
Metadata: nil,
ChallengePeriodEventId: pointy.String("grn:gs2:ap-northeast-1:YourOwnerId:schedule:schedule-0001:event:event-0002"),
}
)
if err != nil {
panic("error occurred")
}
item := result.ItemdeleteQuestGroupModelMaster
クエストグループモデルマスターを削除
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| questGroupName | string | ✓ | ~ 128文字 | クエストグループモデル名 クエストグループモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
Result
| 型 | 説明 | |
|---|---|---|
| item | QuestGroupModelMaster | 削除したクエストグループモデルマスター |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.DeleteQuestGroupModelMaster(
&quest.DeleteQuestGroupModelMasterRequest {
NamespaceName: pointy.String("namespace-0001"),
QuestGroupName: pointy.String("quest-group-0001"),
}
)
if err != nil {
panic("error occurred")
}
item := result.ItemdescribeQuestModelMasters
クエストモデルマスターの一覧を取得
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| questGroupName | string | ✓ | ~ 128文字 | クエストグループモデル名 クエストグループモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| namePrefix | string | ~ 64文字 | クエストモデル名のフィルター接頭辞 | |||
| pageToken | string | ~ 1024文字 | データの取得を開始する位置を指定するトークン | |||
| limit | int | 30 | 1 ~ 1000 | データの取得件数 |
Result
| 型 | 説明 | |
|---|---|---|
| items | List<QuestModelMaster> | クエストモデルマスターのリスト |
| nextPageToken | string | リストの続きを取得するためのページトークン |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.DescribeQuestModelMasters(
&quest.DescribeQuestModelMastersRequest {
NamespaceName: pointy.String("namespace-0001"),
QuestGroupName: pointy.String("quest-group-0001"),
NamePrefix: nil,
PageToken: nil,
Limit: nil,
}
)
if err != nil {
panic("error occurred")
}
items := result.Items
nextPageToken := result.NextPageTokencreateQuestModelMaster
クエストモデルマスターを新規作成
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| questGroupName | string | ✓ | ~ 128文字 | クエストグループモデル名 クエストグループモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| name | string | ✓ | ~ 128文字 | クエストモデル名 クエストモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| description | string | ~ 1024文字 | 説明文 | |||
| metadata | string | ~ 1024文字 | メタデータ メタデータには任意の値を設定できます。 これらの値は GS2 の動作には影響しないため、ゲーム内で利用する情報の保存先として使用できます。 | |||
| contents | List<Contents> | ✓ | 1 ~ 10 items | クエストの内容 | ||
| challengePeriodEventId | string | ~ 1024文字 | クエストに挑戦可能な期間を設定した GS2-Schedule イベント GRN | |||
| firstCompleteAcquireActions | List<AcquireAction> | [] | 0 ~ 10 items | 初回クエストクリア時の報酬入手アクションリスト | ||
| verifyActions | List<VerifyAction> | [] | 0 ~ 10 items | クエストの参加条件検証アクションリスト | ||
| consumeActions | List<ConsumeAction> | [] | 0 ~ 10 items | クエストの参加料として実行される消費アクション | ||
| failedAcquireActions | List<AcquireAction> | [] | 0 ~ 100 items | クエスト失敗時に報酬として実行される入手アクション | ||
| premiseQuestNames | List<string> | [] | 0 ~ 10 items | クエストに挑戦するために事前にクリアが必要なクエスト名の一覧 |
Result
| 型 | 説明 | |
|---|---|---|
| item | QuestModelMaster | 作成したクエストモデルマスター |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.CreateQuestModelMaster(
&quest.CreateQuestModelMasterRequest {
NamespaceName: pointy.String("namespace-0001"),
QuestGroupName: pointy.String("quest-group-0001"),
Name: pointy.String("quest-0001"),
Description: nil,
Metadata: nil,
Contents: []quest.Contents{
quest.Contents{
Metadata: pointy.String("normal"),
CompleteAcquireActions: []quest.AcquireAction{
quest.AcquireAction{
Action: pointy.String("Gs2Experience:AddExperienceByUserId"),
Request: pointy.String("Gs2Experience:AddExperienceByUserId-request1"),
},
},
Weight: pointy.Int32(1),
},
},
ChallengePeriodEventId: nil,
FirstCompleteAcquireActions: nil,
VerifyActions: nil,
ConsumeActions: nil,
FailedAcquireActions: nil,
PremiseQuestNames: nil,
}
)
if err != nil {
panic("error occurred")
}
item := result.ItemgetQuestModelMaster
クエストモデルマスターを取得
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| questGroupName | string | ✓ | ~ 128文字 | クエストグループモデル名 クエストグループモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| questName | string | ✓ | ~ 128文字 | クエストモデル名 クエストモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
Result
| 型 | 説明 | |
|---|---|---|
| item | QuestModelMaster | クエストモデルマスター |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.GetQuestModelMaster(
&quest.GetQuestModelMasterRequest {
NamespaceName: pointy.String("namespace-0001"),
QuestGroupName: pointy.String("quest-group-0001"),
QuestName: pointy.String("quest-0001"),
}
)
if err != nil {
panic("error occurred")
}
item := result.ItemupdateQuestModelMaster
クエストモデルマスターを更新
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| questGroupName | string | ✓ | ~ 128文字 | クエストグループモデル名 クエストグループモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| questName | string | ✓ | ~ 128文字 | クエストモデル名 クエストモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| description | string | ~ 1024文字 | 説明文 | |||
| metadata | string | ~ 1024文字 | メタデータ メタデータには任意の値を設定できます。 これらの値は GS2 の動作には影響しないため、ゲーム内で利用する情報の保存先として使用できます。 | |||
| contents | List<Contents> | ✓ | 1 ~ 10 items | クエストの内容 | ||
| challengePeriodEventId | string | ~ 1024文字 | クエストに挑戦可能な期間を設定した GS2-Schedule イベント GRN | |||
| firstCompleteAcquireActions | List<AcquireAction> | [] | 0 ~ 10 items | 初回クエストクリア時の報酬入手アクションリスト | ||
| verifyActions | List<VerifyAction> | [] | 0 ~ 10 items | クエストの参加条件検証アクションリスト | ||
| consumeActions | List<ConsumeAction> | [] | 0 ~ 10 items | クエストの参加料として実行される消費アクション | ||
| failedAcquireActions | List<AcquireAction> | [] | 0 ~ 100 items | クエスト失敗時に報酬として実行される入手アクション | ||
| premiseQuestNames | List<string> | [] | 0 ~ 10 items | クエストに挑戦するために事前にクリアが必要なクエスト名の一覧 |
Result
| 型 | 説明 | |
|---|---|---|
| item | QuestModelMaster | 更新したクエストモデルマスター |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.UpdateQuestModelMaster(
&quest.UpdateQuestModelMasterRequest {
NamespaceName: pointy.String("namespace-0001"),
QuestGroupName: pointy.String("quest-group-0001"),
QuestName: pointy.String("quest-0001"),
Description: pointy.String("description1"),
Metadata: nil,
Contents: []quest.Contents{
quest.Contents{
Metadata: pointy.String("normal"),
CompleteAcquireActions: []quest.AcquireAction{
quest.AcquireAction{
Action: pointy.String("Gs2Experience:AddExperienceByUserId"),
Request: pointy.String("Gs2Experience:AddExperienceByUserId-request1"),
},
},
Weight: pointy.Int32(1),
},
},
ChallengePeriodEventId: pointy.String("grn:gs2:ap-northeast-1:YourOwnerId:schedule:schedule-0001:event:event-0002"),
FirstCompleteAcquireActions: nil,
VerifyActions: nil,
ConsumeActions: nil,
FailedAcquireActions: nil,
PremiseQuestNames: nil,
}
)
if err != nil {
panic("error occurred")
}
item := result.ItemdeleteQuestModelMaster
クエストモデルマスターを削除
Request
| 型 | 有効化条件 | 必須 | デフォルト | 値の制限 | 説明 | |
|---|---|---|---|---|---|---|
| namespaceName | string | ✓ | ~ 128文字 | ネームスペース名 ネームスペース固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| questGroupName | string | ✓ | ~ 128文字 | クエストグループモデル名 クエストグループモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 | ||
| questName | string | ✓ | ~ 128文字 | クエストモデル名 クエストモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。 |
Result
| 型 | 説明 | |
|---|---|---|
| item | QuestModelMaster | 削除したクエストモデルマスター |
実装例
import "github.com/gs2io/gs2-golang-sdk/core"
import "github.com/gs2io/gs2-golang-sdk/quest"
import "github.com/openlyinc/pointy"
session := core.Gs2RestSession{
Credential: &core.BasicGs2Credential{
ClientId: "your client id",
ClientSecret: "your client secret",
},
Region: core.ApNortheast1,
}
if err := session.Connect(); err != nil {
panic("error occurred")
}
client := quest.Gs2QuestRestClient{
Session: &session,
}
result, err := client.DeleteQuestModelMaster(
&quest.DeleteQuestModelMasterRequest {
NamespaceName: pointy.String("namespace-0001"),
QuestGroupName: pointy.String("quest-group-0001"),
QuestName: pointy.String("quest-0001"),
}
)
if err != nil {
panic("error occurred")
}
item := result.Item