> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Economy v2 の固定コンテンツのコンテナ

> 仮想通貨トークンと購入時に固定の報酬をアンパックするバンドルを組み合わせて、レガシー PlayFab のコンテナ アイテムを Economy v2 で再現します。

<Info>
  Economy v2 が一般提供 (GA) されました。サポートとフィードバックについては、[PlayFab フォーラム](https://community.playfab.com) を参照してください。
</Info>

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

## 仕組み

このパターンは、Economy v2 の 3 つの構成要素を使用します。

1. コンテナ自体を表す **仮想通貨 (またはスタック可能なアイテム)** — たとえば "Treasure Chest Token"。
2. その通貨 1 個で価格設定された、コンテナが付与すべきアイテムを含む **バンドル**。
3. プレイヤーが 1 個のトークンを使ってバンドルを購入する **購入呼び出し**。これにより、アイテムが自動的にアンパックされて付与されます。

プレイヤーの視点では、(ゲームプレイの報酬、ストア購入などを通じて) トークンを受け取り、それを "開いて" 中身のアイテムを取得します。これは V1 のコンテナがまさにそのように動作していたのと同じです。

## 前提条件

* [PlayFab 開発者アカウント](https://developer.playfab.com/en-us/sign-up)。
* [Game Manager](https://developer.playfab.com/) で作成されたタイトル。
* コンテナに付与させたい少なくとも 1 つの公開済みカタログ アイテム。

## ステップ 1: コンテナ用の仮想通貨を作成する

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

### Game Manager

1. **Economy** > **Catalog (V2)** > **Currency** に移動します。
2. **New currency** を選択します。
3. **Title** を `Treasure Chest` などの説明的な名前に設定します。
4. **FriendlyId** を `tc` などの短いコードに設定します。
5. **Save and publish** を選択します。

### REST API

[CreateDraftItem](https://learn.microsoft.com/en-us/rest/api/playfab/economy/catalog/create-draft-item) を呼び出します。

```json theme={null}
{
  "Item": {
    "CreatorEntity": {
      "Id": "{{TitleID}}",
      "Type": "title"
    },
    "Type": "currency",
    "AlternateIds": [
      {
        "Type": "FriendlyId",
        "Value": "tc"
      }
    ],
    "Title": {
      "NEUTRAL": "Treasure Chest"
    },
    "Description": {
      "NEUTRAL": "A treasure chest that can be opened to reveal its contents."
    },
    "StartDate": "2023-07-27T00:00:00.000Z"
  },
  "Publish": true
}
```

***

## ステップ 2: 1 個のコンテナ トークンで価格設定されたバンドルを作成する

コンテナが付与すべきアイテムを含むバンドルを作成します。バンドルの価格をコンテナ通貨のちょうど 1 個に設定します。

### Game Manager

1. **Economy** > **Catalog (V2)** > **Bundles** に移動します。
2. **New bundle** を選択します。
3. **Title** を、コンテナの内容を表す `Treasure Chest Contents` などに設定します。
4. **Items** の下で、コンテナに付与させたいアイテムと数量 (たとえば 1 個の **Legendary Sword** と 100 個の **Gold**) を追加します。
5. **Price** の下で、コンテナ通貨 (**Treasure Chest**) の **1** 個を価格として設定します。
6. **Save and publish** を選択します。

### REST API

[CreateDraftItem](https://learn.microsoft.com/en-us/rest/api/playfab/economy/catalog/create-draft-item) を呼び出します。

```json theme={null}
{
  "Item": {
    "Type": "bundle",
    "Title": {
      "NEUTRAL": "Treasure Chest Contents"
    },
    "StartDate": "2023-07-27T00:00:00.000Z",
    "ItemReferences": [
      {
        "Id": "{{LegendarySwordID}}",
        "Amount": 1
      },
      {
        "Id": "{{GoldCurrencyID}}",
        "Amount": 100
      }
    ],
    "PriceOptions": {
      "Prices": [
        {
          "Amounts": [
            {
              "ItemId": "{{TreasureChestCurrencyID}}",
              "Amount": 1
            }
          ]
        }
      ]
    }
  },
  "Publish": true
}
```

***

プレイヤーがこのバンドルを購入すると、バンドルは [自動的にアンパック](/services/playfab/economy-monetization/economy-v2/catalog/bundles#purchasing-and-unpacking-bundles) されます。個々のアイテムはプレイヤーのインベントリに直接送られます。

## ステップ 3: コンテナ トークンをプレイヤーに付与する

ゲーム デザインに合った任意の仕組みを通じて、プレイヤーにコンテナ通貨を付与します。

* **ゲームプレイの報酬** — レベル、クエスト、アチーブメントの完了後に [AddInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/add-inventory-items) を使用してトークンを付与します。
* **ストア購入** — [ストア](/services/playfab/economy-monetization/economy-v2/catalog/stores) でコンテナ トークンを別の仮想通貨または実際のお金と交換に販売します。
* **バトル パス / シーズナル報酬** — 報酬層としてトークンを含めます。

3 個の Treasure Chest トークンを付与するために `AddInventoryItems` を使用する例:

```json theme={null}
{
  "Entity": {
    "Type": "title_player_account",
    "Id": "{{PlayerID}}"
  },
  "Item": {
    "Id": "{{TreasureChestCurrencyID}}"
  },
  "Amount": 3
}
```

## ステップ 4: コンテナを開く

プレイヤーがコンテナを開きたいときは、[PurchaseInventoryItems](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/purchase-inventory-items) を呼び出して 1 個のコンテナ トークンでバンドルを購入します。

```json theme={null}
{
  "Entity": {
    "Type": "title_player_account",
    "Id": "{{PlayerID}}"
  },
  "Item": {
    "Id": "{{TreasureChestContentsBundleID}}"
  },
  "Amount": 1,
  "PriceAmounts": [
    {
      "ItemId": "{{TreasureChestCurrencyID}}",
      "Amount": 1
    }
  ]
}
```

呼び出しが成功すると、プレイヤーのインベントリが更新されます: 1 個の Treasure Chest トークンが差し引かれ、バンドルの内容 (1 個の Legendary Sword + 100 個の Gold) が追加されます。

## 複数のコンテナ タイプ

このパターンを繰り返して、複数のコンテナ タイプを作成します。たとえば:

| コンテナ           | 通貨 (FriendlyId) | バンドルの内容                                   |
| -------------- | --------------- | ----------------------------------------- |
| Treasure Chest | `tc`            | 1 個の Legendary Sword + 100 個の Gold        |
| Supply Crate   | `sc`            | 5 個の Health Potion + 3 個の Mana Potion     |
| Premium Box    | `pb`            | 1 個の Rare Mount + 500 個の Gold + 50 個の Gem |

各コンテナ タイプには独自の通貨とバンドルがあります。

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

[ストア](/services/playfab/economy-monetization/economy-v2/catalog/stores) を使用してコンテナ バンドルの価格を上書きします。ストアを使用することで、異なるコンテキスト (たとえばイベント中の割引された "開封" コスト) で同じコンテナを異なる価格で提供できます。

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

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

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

## 制限事項

このパターンは、**固定の決定論的なコンテンツ** を持つコンテナに機能します。**ランダム化されたルート** (コンテナを開くたびに内容が変わる、ドロップ テーブルと組み合わせた V1 のコンテナに似たもの) が必要な場合は、[ドロップ テーブルとランダム化されたルート](/services/playfab/economy-monetization/economy-v2/tutorials/drop-tables-and-randomized-loot) のチュートリアルを参照してください。このチュートリアルでは、[Azure Functions](https://learn.microsoft.com/en-us/azure/azure-functions/functions-overview) を使用して次を行います。

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

## 関連項目

* [Economy v2 バンドル](/services/playfab/economy-monetization/economy-v2/catalog/bundles)
* [Economy v2 ストア](/services/playfab/economy-monetization/economy-v2/catalog/stores)
* [仮想通貨](/services/playfab/economy-monetization/economy-v2/tutorials/currencies)
* [Economy v2 の概要](/services/playfab/economy-monetization/economy-v2/overview)
* [PurchaseInventoryItems API リファレンス](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/purchase-inventory-items)
* [AddInventoryItems API リファレンス](https://learn.microsoft.com/en-us/rest/api/playfab/economy/inventory/add-inventory-items)


## Related topics

- [Economy v2 カタログ コンテンツ タイプ、タグ、プロパティ](/ja-jp/services/playfab/economy-monetization/economy-v2/catalog/content-types-tags-and-properties.md)
- [Intelligent Delivery: カスタムタグ指定子](/ja-jp/build/core-features/common/packaging/intelligentdelivery-custom.md)
- [Economy v2 のドロップ テーブルとランダム化されたルート](/ja-jp/services/playfab/economy-monetization/economy-v2/tutorials/drop-tables-and-randomized-loot.md)
- [Economy v2 の概要](/ja-jp/services/playfab/economy-monetization/economy-v2/overview.md)
- [ユーザー生成コンテンツのモデレーション](/ja-jp/services/playfab/economy-monetization/economy-v2/ugc/moderation.md)
