マスターデータの管理

GS2 のマイクロサービスに設定するマスターデータの一般的な仕様について

用語の定義

用語意味
モデルマスターマスターデータエディタが一時的に登録する ゲームプレイヤーごとに変わらないデータ
モデルゲーム内から使用する ゲームプレイヤーごとに変わらないデータ
プロパティモデルをもとに作成したゲームプレイヤーごとに異なるデータ

ゲームを構成する要素には、所持アイテムのパラメータやクエストの構成データなど、 ゲームプレイヤーごとには変わらないデータがあります。 このようなデータをGS2では モデル と呼んでいます。 そして、モデルをもとにゲームプレイヤーの所持するデータになったものを プロパティ と呼んでいます。

一般的なマスターデータは GS2 においては モデル にあたり、GS2 においては モデルマスター という概念が存在します。 モデル モデルマスター の違いは、データの内容は同一ですが、実際にゲームからアクセスされる状態にあるかどうか、という違いがあります。

GS2 の管理画面上で編集できるデータは モデルマスター で、それを実際にゲーム内から使用できる状態に変換すると モデル に変わります。 この変換の工程が必要な理由は、 モデルマスター に対する変更を一括してゲーム内に反映するためです。 この工程がない場合、管理画面でデータを更新していく過程で、途中のデータがゲーム内に反映されてしまうことになります。

マスターデータの作成

この変換工程は、すべての モデルマスター を一旦 JSON 形式のファイルにエクスポートし、そのJSONファイルをアップロードすることで一括して モデル として反映する仕組みになっています。 GS2 の管理画面で モデルマスター を操作して JSON 形式のファイルにエクスポートして利用しても構いませんが、Excel や独自の管理ツールを作成し GS2 上に モデルマスター を一切登録せずに モデル にデータを反映することもできます。

また、GS2-Deploy のテンプレート内でマスターデータを管理することもできます。この場合 git などの バージョン管理ツール で取り扱いやすくなりますので、こちらも検討してみてください。

運営上都合の良い方法でマスターデータを管理してください。

GS2TemplateFormatVersion: "2019-05-01"
Description: GS2 master data template Version 2010-06-26

Globals:
  Alias:
    NamespaceName: inventory

Resources:
  Namespace:
    Type: GS2::Inventory::Namespace
    Properties:
      Name: ${NamespaceName}

  NamespaceSettings:
    Type: GS2::Inventory::CurrentItemModelMaster
    Properties:
      NamespaceName: ${NamespaceName}
      Settings:  # ここから下のデータが本来はJSONで指定する部分ですが、yaml として記述して反映できます
        version: 2019-02-05
        inventoryModels:
          - name: item
            metadata: ITEM
            initialCapacity: 40
            maxCapacity: 60
            itemModels:
              - name: item-0001
                metadata: ITEM_0001
                maxCount: 99
                sortValue: 1
              - name: item-0002
                metadata: ITEM_0002
                maxCount: 99
                sortValue: 2
              - name: item-0003
                metadata: ITEM_0003
                maxCount: 99
                sortValue: 3
          - name: character
            metadata: CHARACTER
            initialCapacity: 30
            maxCapacity: 50
            itemModels:
             - name: character-0001
               metadata: CHARACTER_0001
               maxCount: 1
               sortValue: 1

    DependsOn:
      - Namespace