スタンプシートについて

『スタンプシート』はGS2 内のマイクロサービス間を協調動作させるための仕組みです。

主に、『とあるリソースを増加させるために、とあるリソースを消費する』場合に使用されます。

スタンプシートの構造

スタンプシートには1個以上の成すべきスタンプタスクと、全てのスタンプタスクを終えた時に得られる報酬が記録されており、おおよそ以下のフォーマットで記録されています。

{
   "action": "Gs2Stamina:ChangeStaminaByStampSheet",
   "sheet": スタンプシートデータ,
   "tasks": [
      {
         "action": "Gs2Money:ConsumeWalletByStampTask",
         "task": スタンプタスクデータ
      }
   ]
}

上記例は「課金通貨を使用してスタミナを回復する」スタンプシートです。

スタンプタスクの実行

スタンプシートに記録されたタスクを実行するには、tasks 以下の action で指定されたAPIに スタンプタスクデータ を送信することで実行出来ます。

スタンプタスクデータ には消費する課金通貨の名前や数量が記録されており、GS2-Money:ConsumeWalletByStampTask にそのまま渡すことで、 スタンプシート発行時に指定された通貨が指定された数量消費されるため、ゲーム開発者が内容について深く考える必要はありません。

スタンプシートの完了

全てのタスクを終えたスタンプシートはルート階層の action で指定されたAPIに スタンプシートデータ を送信することで完了出来ます。

完了時に、スタンプシートに記録された報酬が得られます。

全てのタスクを終えてない状態で完了しようとした場合エラーとなります。

また、既に完了したスタンプシートを再度完了しようとしてもエラーになります。

スタンプシートとGS2-Script

スタンプシートのタスク実行完了時と、スタンプシートの完了時にGS2-Scriptに登録したスクリプトを実行出来ます。

スクリプトの指定方法についてはスタンプシートを発行するサービスのAPIを参照してください。

Q&A

事前にスタンプシートやタスクの action のパターンを知ることができますか?

はい。わかります。

APIリファレンスに記録されていますので、そちらを参照してください。

スタンプシートやタスクを改ざんして不正行為はできますか?

いいえ、できません。

スタンプシートやスタンプタスクには改ざんを検出するための署名がつけられています。

スタンプシートに有効期限はありますか?

スタンプシートは発行から5分以内に全てのタスクを完了する必要があります。

5分を超えると、完了処理が失敗するようになります。