NAV Navbar
Python Java GS2-Deploy Template
 

GS2-SDK

Game Server Services は 様々なプログラミング言語向けの SDK を提供しています。 GS2 の提供しているマネージメントコンソールも公開されている SDK を使用して開発されており、ゲームに特化した運営ツールの作成などに活用できます。

一般的な内容

スタンプシート

スタンプシートの概念

GS2 では各サービス間を連携させる仕組みとして、 スタンプシート というシステムを使用します。 スタンプシート は 企業における稟議書のようなもので、 結果 を得るために 許可 を得ていく処理を表現し、最後に 結果 を処理するパートは 許可を得たことで得られる署名が揃っていること だけを見て処理を実行します。

GS2 において 結果は報酬 許可は対価 として処理されます。 つまり、すべてのサービス間の連携は 対価報酬 で表現され、例えばクエストでは スタミナや回数制限のカウンター上昇を対価 として 経験値やクリアフラグを報酬として得る となります。 スタンプシートの 対価 を支払う処理を スタンプタスク とよび、サービスに スタンプタスク を持っていき 対価 を支払うとスタンプシートにスタンプを押してもらえます。 最後に 報酬 を付与するサービスにスタンプシートを持っていくと、スタンプタスクにすべてスタンプが押されていることを確認して 報酬 が付与されます。

スタンプシートの変数

スタンプシートスタンプタスク は処理の実態としてGS2のリクエストを発行します。 スタンプタスク には対価を払う処理ですので、プレイヤーのリソースを減らす処理ののリクエストが設定でき、 スタンプシート はその逆です。 それぞれ、どの ユーザのリソースを操作するか という情報をリクエストに含める必要がありますが、ゲーム内ストアやクエストのマスターデータに直接ユーザIDを指定するのは不可能です。 そこで、 スタンプシート のリクエストには変数が適用できます。

Config

報酬の内容に #{userId} というプレースホルダーを設定すると、その部分はスタンプシートを発行する際にスタンプシートの発行をおこなったプレイヤーのユーザIDに置換されます。

その他、スタンプシートの発行リクエストには Config というパラメータが渡せるようになっています。 Config はキーバリュー形式となっており、ここで渡したパラメータは #{Config で指定したキー値} のプレースホルダを置換するのに使用できます。

タスクの実行結果

報酬の内容に ${Gs2Money:WithdrawByUserId.price} というプレースホルダーを設定すると、その部分は スタンプタスク の実行結果を変数として利用できます。 例に示したケースでは 実行したタスクのうち Gs2Money:WithdrawByUserId の実行結果を参照し、戻り値の price を値として使用します。 ネストした要素を参照する場合は ${Gs2Money:WithdrawByUserId.item.paid} のようにドットでつないで参照できます。

同一のアクションが スタンプタスク として複数登録されている場合に採用される値は不定です。

スタンプシートに設定できるアクション

入手アクション(報酬)
GS2-Account
GS2-Auth
GS2-Chat
GS2-Exchange
GS2-Experience
経験値を加算

経験値を加算

{
  "action": "Gs2Experience:AddExperienceByUserId",
  "request": {
    "namespaceName": "[string] ネームスペース名",
    "userId": "[string] ユーザーID",
    "experienceName": "[string] 経験値の種類の名前",
    "propertyId": "[string] プロパティID",
    "experienceValue": "[long] 加算する経験値量"
  }
}
ランクキャップを加算

ランクキャップを加算

{
  "action": "Gs2Experience:AddRankCapByUserId",
  "request": {
    "namespaceName": "[string] ネームスペース名",
    "userId": "[string] ユーザーID",
    "experienceName": "[string] 経験値の種類の名前",
    "propertyId": "[string] プロパティID",
    "rankCapValue": "[long] 加算するランクキャップ量"
  }
}
ランクキャップを更新

ランクキャップを更新

{
  "action": "Gs2Experience:SetRankCapByUserId",
  "request": {
    "namespaceName": "[string] ネームスペース名",
    "userId": "[string] ユーザーID",
    "experienceName": "[string] 経験値の種類の名前",
    "propertyId": "[string] プロパティID",
    "rankCapValue": "[long] ランクキャップ"
  }
}
GS2-Formation
スタンプシートでキャパシティサイズを加算

スタンプシートでキャパシティサイズを加算

{
  "action": "Gs2Formation:AddMoldCapacityByUserId",
  "request": {
    "namespaceName": "[string] ネームスペース名",
    "userId": "[string] ユーザーID",
    "moldName": "[string] フォームの保存領域の名前",
    "capacity": "[integer] 加算するキャパシティ量"
  }
}
スタンプシートでキャパシティサイズを設定

スタンプシートでキャパシティサイズを設定

{
  "action": "Gs2Formation:SetMoldCapacityByUserId",
  "request": {
    "namespaceName": "[string] ネームスペース名",
    "userId": "[string] ユーザーID",
    "moldName": "[string] フォームの保存領域の名前",
    "capacity": "[integer] 現在のキャパシティ"
  }
}
スタンプシートでアイテムをインベントリに追加

スタンプシートでアイテムをインベントリに追加

{
  "action": "Gs2Formation:AcquireActionsToFormProperties",
  "request": {
    "namespaceName": "[string] ネームスペース名",
    "userId": "[string] ユーザーID",
    "moldName": "[string] フォームの保存領域の名前",
    "index": "[integer] 保存領域のインデックス",
    "acquireAction": "[AcquireAction] フォームのプロパティに適用する入手アクション",
    "queueNamespaceId": "[string] 入手処理を登録する GS2-JobQueue のネームスペース のGRN",
    "keyId": "[string] スタンプシートの発行に使用する GS2-Key の暗号鍵 のGRN",
    "config": 
    ["[AcquireActionConfig] 入手アクションコンフィグ"
    ]
  }
}
GS2-Friend
GS2-Gateway
GS2-Inbox
GS2-Inventory
スタンプシートでキャパシティサイズを加算

スタンプシートでキャパシティサイズを加算

{
  "action": "Gs2Inventory:AddCapacityByUserId",
  "request": {
    "namespaceName": "[string] カテゴリー名",
    "inventoryName": "[string] インベントリモデル名",
    "userId": "[string] ユーザーID",
    "addCapacityValue": "[integer] 加算するキャパシティサイズ"
  }
}
スタンプシートでキャパシティサイズを設定

スタンプシートでキャパシティサイズを設定

{
  "action": "Gs2Inventory:SetCapacityByUserId",
  "request": {
    "namespaceName": "[string] カテゴリー名",
    "inventoryName": "[string] インベントリモデル名",
    "userId": "[string] ユーザーID",
    "newCapacityValue": "[integer] 現在のインベントリの最大キャパシティ"
  }
}
スタンプシートでアイテムをインベントリに追加

スタンプシートでアイテムをインベントリに追加

{
  "action": "Gs2Inventory:AcquireItemSetByUserId",
  "request": {
    "namespaceName": "[string] カテゴリー名",
    "inventoryName": "[string] インベントリの種類名",
    "itemName": "[string] アイテムマスターの名前",
    "userId": "[string] ユーザーID",
    "acquireCount": "[long] 入手する量",
    "expiresAt": "[long] 有効期限"
  }
}
GS2-JobQueue
スタンプシートでジョブを登録

スタンプシートでジョブを登録

{
  "action": "Gs2JobQueue:PushByUserId",
  "request": {
    "namespaceName": "[string] ネームスペース名",
    "userId": "[string] ユーザーID",
    "jobs": 
    ["[JobEntry] ジョブ"
    ]
  }
}
GS2-Limit
スタンプシートでカウンターを削除

スタンプシートでカウンターを削除

{
  "action": "Gs2Limit:DeleteCounterByUserId",
  "request": {
    "namespaceName": "[string] ネームスペース名",
    "limitName": "[string] 回数制限の種類の名前",
    "userId": "[string] ユーザーID",
    "counterName": "[string] カウンターの名前"
  }
}
GS2-Lock
GS2-Lottery
スタンプシートを使用して抽選処理を実行

スタンプシートを使用して抽選処理を実行

{
  "action": "Gs2Lottery:DrawByUserId",
  "request": {
    "namespaceName": "[string] ネームスペース名",
    "lotteryName": "[string] 抽選モデルの種類名",
    "userId": "[string] ユーザーID",
    "count": "[integer] 抽選回数",
    "config": 
    ["[Config] 設定値"
    ]
  }
}
GS2-Matchmaking
GS2-Mission
カウンター加算

カウンター加算

{
  "action": "Gs2Mission:IncreaseCounterByUserId",
  "request": {
    "namespaceName": "[string] ネームスペース名",
    "counterName": "[string] カウンター名",
    "userId": "[string] ユーザーID",
    "value": "[long] 加算する値"
  }
}
GS2-Money
スタンプシートを使用してウォレットに残高を加算します

スタンプシートを使用してウォレットに残高を加算します

{
  "action": "Gs2Money:DepositByUserId",
  "request": {
    "namespaceName": "[string] ネームスペースの名前",
    "userId": "[string] ユーザーID",
    "slot": "[integer] スロット番号",
    "price": "[float] 購入価格",
    "count": "[integer] 付与する課金通貨の数量"
  }
}
GS2-Quest
スタンプシートでクエストを開始

スタンプシートでクエストを開始

{
  "action": "Gs2Quest:CreateProgressByUserId",
  "request": {
    "namespaceName": "[string] カテゴリ名",
    "userId": "[string] ユーザーID",
    "questModelId": "[string] クエストモデル",
    "force": "[boolean] すでに開始しているクエストがある場合にそれを破棄して開始するか",
    "config": 
    ["[Config] 設定値"
    ]
  }
}
GS2-Ranking
GS2-Schedule
GS2-Showcase
GS2-Stamina
スタンプシートを使用してスタミナを回復

スタンプシートを使用してスタミナを回復

{
  "action": "Gs2Stamina:RecoverStaminaByUserId",
  "request": {
    "namespaceName": "[string] ネームスペース名",
    "staminaName": "[string] スタミナの種類名",
    "userId": "[string] ユーザーID",
    "recoverValue": "[integer] 回復するスタミナ量"
  }
}
スタンプシートでスタミナの最大値を加算

スタンプシートでスタミナの最大値を加算

{
  "action": "Gs2Stamina:RaiseMaxValueByUserId",
  "request": {
    "namespaceName": "[string] ネームスペース名",
    "staminaName": "[string] スタミナの種類名",
    "userId": "[string] ユーザーID",
    "raiseValue": "[integer] 上昇する最大スタミナ量"
  }
}
スタンプシートでスタミナの最大値を更新

スタンプシートでスタミナの最大値を更新

{
  "action": "Gs2Stamina:SetMaxValueByUserId",
  "request": {
    "namespaceName": "[string] ネームスペース名",
    "staminaName": "[string] スタミナの種類名",
    "userId": "[string] ユーザーID",
    "maxValue": "[integer] スタミナの最大値"
  }
}
スタンプシートでスタミナの最大値を更新

スタンプシートでスタミナの最大値を更新

{
  "action": "Gs2Stamina:SetRecoverIntervalByUserId",
  "request": {
    "namespaceName": "[string] ネームスペース名",
    "staminaName": "[string] スタミナの種類名",
    "userId": "[string] ユーザーID",
    "recoverIntervalMinutes": "[integer] スタミナの回復間隔(分)"
  }
}
スタンプシートでスタミナの最大値を更新

スタンプシートでスタミナの最大値を更新

{
  "action": "Gs2Stamina:SetRecoverValueByUserId",
  "request": {
    "namespaceName": "[string] ネームスペース名",
    "staminaName": "[string] スタミナの種類名",
    "userId": "[string] ユーザーID",
    "recoverValue": "[integer] スタミナの回復量"
  }
}
GS2-Version
消費アクション(対価)
GS2-Account
GS2-Auth
GS2-Chat
GS2-Exchange
GS2-Experience
GS2-Formation
GS2-Friend
GS2-Gateway
GS2-Inbox

メッセージを作成

{
  "action": "Gs2Inbox:OpenMessageByUserId",
  "request": {
    "namespaceName": "[string] プレゼントボックス名",
    "userId": "[string] ユーザーID",
    "messageName": "[string] メッセージID"
  }
}

メッセージを作成

GS2-Inventory

スタンプシートでインベントリのアイテムを消費

{
  "action": "Gs2Inventory:ConsumeItemSetByUserId",
  "request": {
    "namespaceName": "[string] カテゴリー名",
    "inventoryName": "[string] インベントリの名前",
    "userId": "[string] ユーザーID",
    "itemName": "[string] アイテムマスターの名前",
    "consumeCount": "[long] 消費する量",
    "expiresAt": "[long] 有効期限"
  }
}

スタンプシートでインベントリのアイテムを消費

GS2-JobQueue
GS2-Limit

スタンプシートでカウントアップ

{
  "action": "Gs2Limit:CountUpByUserId",
  "request": {
    "namespaceName": "[string] ネームスペース名",
    "limitName": "[string] 回数制限の種類の名前",
    "counterName": "[string] カウンターの名前",
    "userId": "[string] ユーザーID",
    "countUpValue": "[integer] カウントアップする量",
    "maxValue": "[integer] カウントアップを許容する最大値 を入力してください"
  }
}

スタンプシートでカウントアップ

GS2-Lock
GS2-Lottery
GS2-Matchmaking
GS2-Mission

達成状況を作成

{
  "action": "Gs2Mission:ReceiveByUserId",
  "request": {
    "namespaceName": "[string] ネームスペース名",
    "missionGroupName": "[string] ミッショングループ名",
    "missionTaskName": "[string] タスク名",
    "userId": "[string] ユーザーID"
  }
}

達成状況を作成

GS2-Money

ウォレットから残高を消費します

{
  "action": "Gs2Money:WithdrawByUserId",
  "request": {
    "namespaceName": "[string] ネームスペースの名前",
    "userId": "[string] ユーザーID",
    "slot": "[integer] スロット番号",
    "count": "[integer] 消費する課金通貨の数量",
    "paidOnly": "[boolean] 有償課金通貨のみを対象とするか"
  }
}

ウォレットから残高を消費します

スタンプシートを使用してレシートを記録

{
  "action": "Gs2Money:RecordReceipt",
  "request": {
    "namespaceName": "[string] ネームスペースの名前",
    "userId": "[string] ユーザーID",
    "contentsId": "[string] プラットフォームストアのコンテンツID",
    "receipt": "[string] レシート"
  }
}

スタンプシートを使用してレシートを記録

GS2-Quest
GS2-Ranking
GS2-Schedule
GS2-Showcase
GS2-Stamina

スタンプタスクを使用してスタミナを消費

{
  "action": "Gs2Stamina:ConsumeStaminaByUserId",
  "request": {
    "namespaceName": "[string] ネームスペース名",
    "staminaName": "[string] スタミナの種類名",
    "userId": "[string] ユーザーID",
    "consumeValue": "[integer] 消費するスタミナ量"
  }
}

スタンプタスクを使用してスタミナを消費

GS2-Version