エコノミー v2 の固定コンテンツを含むコンテナー

Important

エコノミー v2 が一般提供になりました。 サポートとフィードバックについては、PlayFab フォーラムにアクセスしてください。

エコノミー v1 (レガシ) には、コンテナー機能が組み込まれていました—これは、開くことでそのコンテンツがプレイヤーのインベントリに付与される特別なカタログ アイテムです。 エコノミー v2 にはネイティブなアイテムの種類としてコンテナーは含まれていませんが、仮想通貨とバンドルを組み合わせて使用することで、固定コンテンツ コンテナー (常に同じアイテムを付与するコンテナー) については同じ動作を実現できます。

しくみ

このパターンでは、次の 3 つのエコノミー v2 構成要素が使用されます:

  1. コンテナー自体を表す仮想通貨 (または積み重ね可能な項目) (例: "財宝チェスト トークン")。
  2. コンテナーが付与する必要があるアイテムを含む、その通貨の 1 単位として価格が設定されたバンドル
  3. プレイヤーがバンドルを購入するために 1 つのトークンを費やす購入呼び出し。これにより、アイテムが自動的に開梱および付与されます。

プレイヤーの視点では、(ゲームプレイ報酬やストア購入などを介して) トークンを受け取り、それを "開く" とその内部のアイテムを取得します—これは V1 コンテナーと動作です。

前提条件

手順 1: コンテナーの仮想通貨を作成する

コンテナーを表す仮想通貨を作成します。 この通貨の各単位は、1 つの未開封のコンテナーとして機能します。

  1. [Economy]>[Catalog (V2)]>[通貨] に移動します。
  2. [新しい通貨] を選択します。
  3. [タイトル] を、Treasure Chest などのわかりやすい名前に設定します。
  4. FriendlyId を、tc などの短いコードに設定します。
  5. [保存して発行] を選択します。

手順 2: 1 つのコンテナー トークンで価格が設定されたバンドルを作成する

コンテナーに付与するアイテムを含むバンドルを作成します。 コンテナー通貨の 1 単位でバンドルの価格を設定します。

  1. [Economy]>[Catalog (V2)]>[バンドル] に移動します。
  2. [新しいバンドル] を選択します。
  3. タイトルを設定して、コンテナーの内容 (Treasure Chest Contents など) を説明します。
  4. [アイテム] で、コンテナーに付与するアイテムと数量を追加します (たとえば、1 本の伝説の剣、100 のゴールドなど)。
  5. [価格] で、コンテナー通貨の 1 (財宝チェスト) に価格を設定します。
  6. [保存して発行] を選択します。

プレイヤーがバンドルを購入すると、バンドルは自動的に開封されます。バンドルで参照されている個々のアイテムは、プレイヤーのインベントリに直接付与されます。

手順 3: プレイヤーにコンテナー トークンを付与する

ゲームの設計に合ったメカニズムを使用して、プレイヤーにコンテナー通貨を付与します:

  • ゲームプレイ リワードAddInventoryItems を使用してレベル、クエスト、実績を完了した後にトークンを付与します。
  • ストアの購入—別の仮想通貨または現実通貨でストアでコンテナー トークンを販売します。
  • バトルパス/シーズン報酬—トークンをリワード レベルとして含めます。

AddInventoryItems を使用して 3 つの財宝チェスト トークンを付与する例:

{
  "Entity": {
    "Type": "title_player_account",
    "Id": "{{PlayerID}}"
  },
  "Item": {
    "Id": "{{TreasureChestCurrencyID}}"
  },
  "Amount": 3
}

手順 4: コンテナーを開く

プレイヤーがコンテナーを開きたい場合は、PurchaseInventoryItems を呼び出して、1 つのコンテナー トークンでバンドルを購入します:

{
  "Entity": {
    "Type": "title_player_account",
    "Id": "{{PlayerID}}"
  },
  "Item": {
    "Id": "{{TreasureChestContentsBundleID}}"
  },
  "Amount": 1,
  "PriceAmounts": [
    {
      "ItemId": "{{TreasureChestCurrencyID}}",
      "Amount": 1
    }
  ]
}

呼び出しが成功すると、プレイヤーのインベントリが更新されます:1つの財宝チェスト トークンが差し引かれ、バンドルの内容 (1 本の伝説の剣+ 100 のゴールド) が追加されます。

複数のコンテナーの種類

このパターンを繰り返して、複数のコンテナーの種類を作成します。 次に例を示します。

コンテナー 通貨 (FriendlyId) バンドル コンテンツ
宝の箱 tc 1 本の伝説の剣 + 100 のゴールド
サプライ クレート sc 5 つのヘルス ポーション + 3 つのマナ ポーション
Premium Box pb 1 つのレア マウント + 500 のゴールド + 50 の宝石

各コンテナーの種類には、独自の通貨とバンドルがあります。

コンテナーの購入にストアを使用する

ストアを使用して、コンテナー バンドルの価格をオーバーライドします。 ストアを使用すると、異なるコンテキストで同じコンテナーを異なる価格で提供できます (たとえば、イベント中に割引された "オープン" コスト):

{
  "Item": {
    "Type": "store",
    "Title": {
      "NEUTRAL": "Event Store"
    },
    "ItemReferences": [
      {
        "Id": "{{TreasureChestContentsBundleID}}",
        "Amount": 1,
        "PriceOptions": {
          "Prices": [
            {
              "Amounts": [
                {
                  "ItemId": "{{TreasureChestCurrencyID}}",
                  "Amount": 1
                }
              ]
            }
          ]
        }
      }
    ]
  },
  "Publish": true
}

次に、購入時に StoreId を渡します:

{
  "Entity": {
    "Type": "title_player_account",
    "Id": "{{PlayerID}}"
  },
  "Item": {
    "Id": "{{TreasureChestContentsBundleID}}"
  },
  "Amount": 1,
  "PriceAmounts": [
    {
      "ItemId": "{{TreasureChestCurrencyID}}",
      "Amount": 1
    }
  ],
  "StoreId": "{{EventStoreID}}"
}

制限事項

このパターンは、固定の、確定的な内容を含むコンテナーに対して機能します。 ランダム化された戦利品が必要な場合 (コンテナーを開くたびに内容が異なります。ドロップ テーブルと組み合わせられた V1 コンテナーと同様です)。ドロップ テーブルとランダム化された戦利品のチュートリアルを参照してください。 このチュートリアルでは、Azure Functions を使用して次の操作を行います:

  1. プレイヤーのインベントリからコンテナー トークンを減算します。
  2. 重み付けされたランダム選択ロジックを実行します。
  3. インベントリ API を使用して、結果のアイテムを付与します。

関連項目