GS2-Enhance マスターデータリファレンス

マスターデータのフォーマットと インポートする各種モデルのリファレンス

マスターデータのフォーマット

{
  "version": "2020-08-22",
  "rateModels": [
    {
      "name": "[string]強化レートモデル名",
      "description": "[string?]説明文",
      "metadata": "[string?]メタデータ",
      "targetInventoryModelId": "[string]強化対象に使用できる GS2-Inventory インベントリモデルの GRN",
      "acquireExperienceSuffix": "[string]GS2-Experience で入手した経験値を格納するプロパティID に付与するサフィックス",
      "materialInventoryModelId": "[string]強化の素材に使用できる GS2-Inventory インベントリモデル GRN",
      "acquireExperienceHierarchy": [
        "[string]ItemModelのメタデータに格納する、入手経験値を定義するJSONデータの階層構造の定義"
      ],
      "experienceModelId": "[string]強化の結果得られる GS2-Experience 経験値モデル GRN",
      "bonusRates": [
        {
          "rate": "[float]経験値ボーナスの倍率 (1.0 = ボーナスなし)",
          "weight": "[int]抽選重み"
        }
      ]
    }
  ],
  "unleashRateModels": [
    {
      "name": "[string]限界突破レートモデル名",
      "description": "[string?]説明文",
      "metadata": "[string?]メタデータ",
      "targetInventoryModelId": "[string]限界突破対象に使用できる GS2-Inventory インベントリモデル GRN",
      "gradeModelId": "[string]グレードモデル GRN",
      "groupKeyHierarchy": [
        "[string]ItemModel のメタデータに格納する、グループキーを定義する JSON データの階層構造"
      ],
      "gradeEntries": [
        {
          "gradeValue": "[long]対象グレード",
          "type": "[string]素材条件の種類",
          "needCount": "[int]同種のアイテムを何個消費するか",
          "recipes": [
            {
              "name": "[string]レシピ名",
              "metadata": "[string?]メタデータ",
              "targetGroupKeys": [
                "[string]グループキー"
              ],
              "materials": [
                {
                  "name": "[string]素材名",
                  "materialType": "[string]素材の種類",
                  "individualSetting": {
                    "matchType": "[string]素材と限界突破対象の一致条件",
                    "gradeCondition": "[string]素材のグレード条件",
                    "gradeValue": "[long]素材に求めるグレード",
                    "count": "[int]消費するアイテムセットの数"
                  },
                  "quantitySetting": {
                    "matchType": "[string]消費するアイテムモデルの決め方",
                    "materialInventoryModelId": "[string]素材を探す GS2-Inventory インベントリモデル GRN",
                    "itemModelId": "[string]消費する GS2-Inventory アイテムモデル GRN",
                    "count": "[int]消費する数量"
                  }
                }
              ]
            }
          ]
        }
      ]
    }
  ]
}
型 有効化条件 必須 デフォルト 値の制限 説明
version string
✓
2020-08-22 マスターデータのフォーマットバージョン
rateModels List<RateModel> ~ 10000 items 強化レートモデル
強化レートは強化に使用する素材と強化対象を定義したデータです。

素材データ、強化対象データは共に GS2-Inventory で管理されている必要があります。
強化で得られる経験値は GS2-Inventory のメタデータにJSON形式で記録します。
ここではメタデータのどの階層に経験値の値が格納されているかを記載する必要があります。

強化時に一定の確率で 大成功 といった形で入手できる経験値量に補正値をかけることができます。
その抽選確率もこのエンティティで定義します。

targetInventoryModelId には強化対象となるアイテムを保持するインベントリモデルを、materialInventoryModelId には素材として使用できるアイテムを保持するインベントリモデルを指定します。
両者は別のインベントリモデルにできるため、キャラクターを強化対象とし、強化専用アイテムを素材とするような構成が可能です。

各素材が提供する経験値は素材アイテムのアイテムモデルのメタデータに記述し、その JSON のどこに値が入っているかを acquireExperienceHierarchy で指定します。
{ "aaa": { "bbb": { "experienceValue": 100 } } } のような構造であれば [ "aaa", "bbb", "experienceValue" ] と指定します。階層は最大10段まで指定できます。

得られた経験値は experienceModelId で指定した GS2-Experience の経験値モデルに加算されます。
加算先のプロパティIDは、強化対象アイテムのプロパティIDに acquireExperienceSuffix を付与したものになります。これにより、1つのアイテムにキャラクターレベルの level と好感度の like のような複数種類の経験値を持たせられます。

bonusRates には、獲得経験値にかける倍率の重み付き抽選を定義します。
各エントリーは倍率(1.5 なら150%)と排出重みを持ち、強化を実行するたびに重み付き抽選で1つが選ばれます。エントリーは最大1,000件まで登録できます。
unleashRateModels List<UnleashRateModel> ~ 10000 items 限界突破レートモデル
アイテムの限界突破(解放)条件を定義します。

ここでいう限界突破とは、同種のアイテムを素材として消費することで GS2-Grade で管理するグレードを引き上げる強化処理です。
グレードが上がると GS2-Experience 側のランクキャップが引き上げられ、対象をより高いレベルまで育成できるようになります。

targetInventoryModelId には、限界突破の対象となるアイテムを保持する GS2-Inventory のインベントリモデルを指定します。
限界突破するアイテムと、素材として消費する同種アイテムの両方がこのインベントリモデルに属している必要があります。
gradeModelId には、対象アイテムのグレードを追跡する GS2-Grade のグレードモデルを指定します。限界突破に成功すると、そのグレードが1引き上げられます。

gradeEntries には、各グレードに到達するために消費する同種アイテムの数をグレードごとに定義します。エントリーは1件以上1,000件まで登録できます。
たとえばグレード1は1個、グレード2は3個のように設定することで、限界突破の段階ごとにコストを個別に制御できます。

素材として消費したリソースは、そのリソースが保持していた内容ごと失われます。
素材が経験値などのリソースを持っていたとしても対象へは引き継がれないため、引き継ぎが必要な場合は事前に引き継ぎ用のリソースへ変換しておく必要があります。

モデル

RateModel

強化レートモデル

強化レートは強化に使用する素材と強化対象を定義したデータです。

素材データ、強化対象データは共に GS2-Inventory で管理されている必要があります。
強化で得られる経験値は GS2-Inventory のメタデータにJSON形式で記録します。
ここではメタデータのどの階層に経験値の値が格納されているかを記載する必要があります。

強化時に一定の確率で 大成功 といった形で入手できる経験値量に補正値をかけることができます。
その抽選確率もこのエンティティで定義します。

targetInventoryModelId には強化対象となるアイテムを保持するインベントリモデルを、materialInventoryModelId には素材として使用できるアイテムを保持するインベントリモデルを指定します。
両者は別のインベントリモデルにできるため、キャラクターを強化対象とし、強化専用アイテムを素材とするような構成が可能です。

各素材が提供する経験値は素材アイテムのアイテムモデルのメタデータに記述し、その JSON のどこに値が入っているかを acquireExperienceHierarchy で指定します。
{ "aaa": { "bbb": { "experienceValue": 100 } } } のような構造であれば [ "aaa", "bbb", "experienceValue" ] と指定します。階層は最大10段まで指定できます。

得られた経験値は experienceModelId で指定した GS2-Experience の経験値モデルに加算されます。
加算先のプロパティIDは、強化対象アイテムのプロパティIDに acquireExperienceSuffix を付与したものになります。これにより、1つのアイテムにキャラクターレベルの level と好感度の like のような複数種類の経験値を持たせられます。

bonusRates には、獲得経験値にかける倍率の重み付き抽選を定義します。
各エントリーは倍率(1.5 なら150%)と排出重みを持ち、強化を実行するたびに重み付き抽選で1つが選ばれます。エントリーは最大1,000件まで登録できます。

型 有効化条件 必須 デフォルト 値の制限 説明
rateModelId string
※
~ 1024文字 強化レートモデル GRN
※ サーバーが自動で設定
name string
✓
~ 128文字 強化レートモデル名
強化レートモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
description string ~ 1024文字 説明文
metadata string ~ 2048文字 メタデータ
メタデータには任意の値を設定できます。
これらの値は GS2 の動作には影響しないため、ゲーム内で利用する情報の保存先として使用できます。
targetInventoryModelId string
✓
~ 1024文字 強化対象に使用できる GS2-Inventory インベントリモデルの GRN
強化対象となるアイテムを保持する GS2-Inventory のインベントリモデルを指定します。強化されるアイテムはこのインベントリモデルに属している必要があります。
acquireExperienceSuffix string
✓
~ 1024文字 GS2-Experience で入手した経験値を格納するプロパティID に付与するサフィックス
アイテムのプロパティ ID の末尾に追加され、経験値が保存される GS2-Experience のプロパティ ID を構成する文字列です。同じアイテムに複数の経験値種別を持たせることができます(例: キャラクターレベルの “level”、好感度の “like”)。
materialInventoryModelId string
✓
~ 1024文字 強化の素材に使用できる GS2-Inventory インベントリモデル GRN
強化素材として使用できるアイテムを保持する GS2-Inventory のインベントリモデルを指定します。各素材が提供する経験値は、acquireExperienceHierarchy で指定された JSON 階層を使用してアイテムモデルのメタデータに定義されます。
acquireExperienceHierarchy List<string> 0 ~ 10 items ItemModelのメタデータに格納する、入手経験値を定義するJSONデータの階層構造の定義
GS2-EnhanceにはGS2-Inventoryと連携して強化を行う仕組みがあり、ItemModelのメタデータにJSON形式で、強化素材として使用した場合の経験値量を設定します。
例えば、{ “aaa”: { “bbb”: { “experienceValue”: 100 } } } というような構造のデータ定義でメタデータに設定したい場合は、[ “aaa”, “bbb”, “experienceValue” ] のように指定します。
詳細は マイクロサービス紹介 / GS2-Enhance の項で解説しています。
experienceModelId string
✓
~ 1024文字 強化の結果得られる GS2-Experience 経験値モデル GRN
強化で得られた経験値が記録される GS2-Experience の経験値モデルを指定します。経験値は、対象アイテムのプロパティ ID と acquireExperienceSuffix を組み合わせて識別されるプロパティに加算されます。
bonusRates List<BonusRate> 0 ~ 1000 items 経験値獲得量ボーナス
強化時のボーナス経験値倍率の重み付き抽選を定義します。各エントリは倍率(例: 1.5 で 150%)と排出重みを指定します。強化実行時に重み付き抽選で1つのエントリが選択され、「大成功」ボーナスが獲得経験値に適用されるかどうかが決定されます。

BonusRate

経験値獲得量ボーナス

強化時の経験値ボーナス倍率を決定する重み付き抽選の単一エントリを定義します。異なる倍率と重みを持つ複数のエントリを設定することで、制御された確率による「大成功」や「超成功」の仕組みを実装できます。

型 有効化条件 必須 デフォルト 値の制限 説明
rate float 1.0 0 ~ 10000 経験値ボーナスの倍率 (1.0 = ボーナスなし)
このエントリが抽選された際に基本経験値に適用される倍率です。1.0 はボーナスなしの通常強化、1.5 は経験値 150%(大成功)、2.0 は経験値 200%(超成功)などを意味します。
weight int 1 0 ~ 2147483645 抽選重み
ボーナスレートを選択する重み付き抽選で使用される相対的な重みです。値が大きいほど、このボーナスレートが選択される確率が高くなります。実際の確率は、この重みをボーナスレートリスト内のすべての重みの合計で割った値になります。

UnleashRateModel

限界突破レートモデル

アイテムの限界突破(解放)条件を定義します。

ここでいう限界突破とは、同種のアイテムを素材として消費することで GS2-Grade で管理するグレードを引き上げる強化処理です。
グレードが上がると GS2-Experience 側のランクキャップが引き上げられ、対象をより高いレベルまで育成できるようになります。

targetInventoryModelId には、限界突破の対象となるアイテムを保持する GS2-Inventory のインベントリモデルを指定します。
限界突破するアイテムと、素材として消費する同種アイテムの両方がこのインベントリモデルに属している必要があります。
gradeModelId には、対象アイテムのグレードを追跡する GS2-Grade のグレードモデルを指定します。限界突破に成功すると、そのグレードが1引き上げられます。

gradeEntries には、各グレードに到達するために消費する同種アイテムの数をグレードごとに定義します。エントリーは1件以上1,000件まで登録できます。
たとえばグレード1は1個、グレード2は3個のように設定することで、限界突破の段階ごとにコストを個別に制御できます。

素材として消費したリソースは、そのリソースが保持していた内容ごと失われます。
素材が経験値などのリソースを持っていたとしても対象へは引き継がれないため、引き継ぎが必要な場合は事前に引き継ぎ用のリソースへ変換しておく必要があります。

型 有効化条件 必須 デフォルト 値の制限 説明
unleashRateModelId string
※
~ 1024文字 限界突破レートモデル GRN
※ サーバーが自動で設定
name string
✓
~ 128文字 限界突破レートモデル名
限界突破レートモデル固有の名前。英数字および -(ハイフン) _(アンダースコア) .(ピリオド)で指定します。
description string ~ 1024文字 説明文
metadata string ~ 2048文字 メタデータ
メタデータには任意の値を設定できます。
これらの値は GS2 の動作には影響しないため、ゲーム内で利用する情報の保存先として使用できます。
targetInventoryModelId string
✓
~ 1024文字 限界突破対象に使用できる GS2-Inventory インベントリモデル GRN
限界突破対象となるアイテムを保持する GS2-Inventory のインベントリモデルを指定します。限界突破するアイテムと素材として消費する同種アイテムの両方がこのインベントリモデルに属している必要があります。
gradeModelId string
✓
~ 1024文字 グレードモデル GRN
対象アイテムの限界突破レベルを追跡する GS2-Grade のグレードモデルを指定します。限界突破が成功すると、このグレードモデル内でアイテムのグレードが加算されます。
groupKeyHierarchy List<string> [] 0 ~ 10 items ItemModel のメタデータに格納する、グループキーを定義する JSON データの階層構造
グループキーは装備の部位のようにアイテムモデルを分類する値で、レシピが素材と限界突破対象を比べるときに使います。
{ “unleash”: { “group”: “weapon” } } のような構造のメタデータであれば、[ “unleash”, “group” ] と指定します。
値は文字列である必要があります。レシピで「同じグループ」や targetGroupKeys を使う場合は必須です。
gradeEntries List<UnleashRateEntryModel>
✓
1 ~ 1000 items グレードエントリーリスト
限界突破の各グレードレベルに対する素材コストを定義します。各エントリはグレード値と、そのグレードに到達するために消費する必要がある同種アイテム数をマッピングします。例えば、グレード1は複製1個、グレード2は複製3個のように設定できます。

UnleashRateEntryModel

限界突破レートエントリモデル

限界突破の進行における単一グレードレベルの素材コストを定義します。各エントリは対象となるグレード値と、そのグレードを達成するために消費する必要がある同種アイテムの数を指定します。

型 有効化条件 必須 デフォルト 値の制限 説明
gradeValue long
✓
1 ~ 1000 対象グレード
このエントリがコストを定義するグレード値です。このグレードレベルへの限界突破を実行する際、needCount で指定された数のアイテムが消費されます。
type 文字列列挙型
enum {
  “simple”,
  “recipe”
}
“simple” 素材条件の種類
「シンプル(simple)」は、限界突破対象と同じアイテムモデルの複製を needCount 個消費します。従来の挙動です。
「レシピ(recipe)」は、プレイヤーがレシピを1つ選び、選んだレシピで定義された素材を消費します。
定義説明
simpleシンプル
recipeレシピ
needCount int {type} == “simple”
✓※
1 ~ 1000 同種のアイテムを何個消費するか
対象グレードへの限界突破を実行するために消費する必要がある同種アイテムの数です。これらのアイテムは、限界突破されるアイテムと同じアイテムモデルのものです。
※ type が “simple” であれば 必須
recipes List<UnleashRecipe> {type} == “recipe”
✓※
1 ~ 10 items レシピリスト
type が「レシピ」のときに使用します。限界突破の実行時、プレイヤーはこの中からレシピを1つ選びます。
※ type が “recipe” であれば 必須

UnleashRecipe

限界突破レシピ

グレードを1段引き上げる方法の1つです。グレードエントリに複数のレシピがある場合、プレイヤーはそのうち1つを選び、選んだレシピの素材はすべて必要になります。

型 有効化条件 必須 デフォルト 値の制限 説明
name string
✓
~ 128文字 レシピ名
グレードエントリの中で一意な名前です。限界突破の実行時、プレイヤーはこの名前でレシピを指定します。
metadata string ~ 2048文字 メタデータ
メタデータには任意の値を設定できます。
これらの値は GS2 の動作には影響しないため、ゲーム内で利用する情報の保存先として使用できます。
targetGroupKeys List<string> [] 0 ~ 10 items このレシピを使える限界突破対象のグループキー
空の場合は、どの限界突破対象にも使えます。
値がある場合は、限界突破対象のアイテムモデルのグループキーが含まれるときだけ使えます。グループキーは限界突破レートモデルの groupKeyHierarchy を使ってアイテムモデルのメタデータから読み取ります。
materials List<UnleashMaterial>
✓
1 ~ 10 items このレシピが必要とする素材
このレシピを使うと、すべての素材が消費されます。

UnleashMaterial

限界突破素材

レシピが必要とする素材の1種類を定義します。
「個体(individual)」は、装備の複製のように、プレイヤーが選んだアイテムセットを消費します。
「数量(quantity)」は、汎用強化素材のように、設定で決まるアイテムを数量で消費します。

型 有効化条件 必須 デフォルト 値の制限 説明
name string
✓
~ 128文字 素材名
レシピの中で一意な名前です。限界突破の実行時、プレイヤーは個体素材ごとにこの名前でアイテムセットを指定します。
materialType 文字列列挙型
enum {
  “individual”,
  “quantity”
}
✓
素材の種類
「個体(individual)」は、プレイヤーが選んだアイテムセットを消費します。
「数量(quantity)」は、設定で決まるアイテムを数量で消費します。
定義説明
individual個体
quantity数量
individualSetting UnleashIndividualMaterialSetting {materialType} == “individual”
✓※
個体素材設定
materialType が「個体」のときに使用します。
※ materialType が “individual” であれば 必須
quantitySetting UnleashQuantityMaterialSetting {materialType} == “quantity”
✓※
数量素材設定
materialType が「数量」のときに使用します。
※ materialType が “quantity” であれば 必須

UnleashIndividualMaterialSetting

個体素材設定

装備の複製のように、アイテムセットを個体として消費する素材を定義します。
どのアイテムセットを消費するかはプレイヤーが選び、選ばれたアイテムセットは限界突破対象のアイテムと同じインベントリモデルに属している必要があります。
個体ごとに GS2-Grade のグレードを持てるため、素材のグレードを条件にすることもできます。

型 有効化条件 必須 デフォルト 値の制限 説明
matchType 文字列列挙型
enum {
  “sameItem”,
  “sameGroup”
}
✓
素材と限界突破対象の一致条件
「同じアイテム(sameItem)」は、限界突破対象と同じアイテムモデルのアイテムセットだけを受け付けます。
「同じグループ(sameGroup)」は、アイテムモデルのグループキーが限界突破対象のアイテムモデルと同じアイテムセットを受け付けます。グループキーは限界突破レートモデルの groupKeyHierarchy を使ってアイテムモデルのメタデータから読み取ります。
定義説明
sameItem同じアイテム
sameGroup同じグループ
gradeCondition 文字列列挙型
enum {
  “any”,
  “sameAsTarget”,
  “equal”
}
“any” 素材のグレード条件
「問わない(any)」は素材のグレードを確認しません。
「限界突破対象と同じ(sameAsTarget)」は、素材のグレードが限界突破対象の現在のグレードと同じであることを求めます。
「指定値と一致(equal)」は、素材のグレードが gradeValue で指定した値であることを求めます。
グレードは限界突破レートモデルのグレードモデルを使い、トランザクションの中で GS2-Grade により検証されます。
定義説明
any問わない
sameAsTarget限界突破対象と同じ
equal指定値と一致
gradeValue long {gradeCondition} == “equal”
✓※
0 ~ 1000 素材に求めるグレード
gradeCondition が「指定値と一致」のときに使用します。
※ gradeCondition が “equal” であれば 必須
count int
✓
1 ~ 1000 消費するアイテムセットの数
この素材としてプレイヤーが指定する必要があるアイテムセットの数です。各アイテムセットは1個ずつ消費されます。

UnleashQuantityMaterialSetting

数量素材設定

汎用強化素材のように、数量で消費する素材を定義します。
プレイヤーはアイテムを選ばず、消費するアイテムモデルはこの設定で決まり、指定した数量が消費されます。
GS2-Inventory の通常のインベントリとシンプルインベントリの両方を使用できます。

型 有効化条件 必須 デフォルト 値の制限 説明
matchType 文字列列挙型
enum {
  “sameGroup”,
  “specified”
}
✓
消費するアイテムモデルの決め方
「同じグループ(sameGroup)」は、materialInventoryModelId のインベントリの中で、グループキーが限界突破対象のアイテムモデルと同じアイテムモデルを消費します。該当するアイテムモデルはちょうど1つである必要があります。
「指定(specified)」は、itemModelId で指定したアイテムモデルを消費します。
定義説明
sameGroup同じグループ
specified指定
materialInventoryModelId string {matchType} == “sameGroup”
✓※
~ 1024文字 素材を探す GS2-Inventory インベントリモデル GRN
matchType が「同じグループ」のときに使用します。シンプルインベントリモデルの GRN も指定できます。
※ matchType が “sameGroup” であれば 必須
itemModelId string {matchType} == “specified”
✓※
~ 1024文字 消費する GS2-Inventory アイテムモデル GRN
matchType が「指定」のときに使用します。シンプルアイテムモデルの GRN も指定できます。
※ matchType が “specified” であれば 必須
count int
✓
1 ~ 2147483645 消費する数量