Important
エコノミー v2 が一般提供になりました。 サポートとフィードバックについては、PlayFab フォーラムにアクセスしてください。
エコノミー v1 (レガシ) には、コンテナー機能が組み込まれていました—これは、開くことでそのコンテンツがプレイヤーのインベントリに付与される特別なカタログ アイテムです。 エコノミー v2 にはネイティブなアイテムの種類としてコンテナーは含まれていませんが、仮想通貨とバンドルを組み合わせて使用することで、固定コンテンツ コンテナー (常に同じアイテムを付与するコンテナー) については同じ動作を実現できます。
しくみ
このパターンでは、次の 3 つのエコノミー v2 構成要素が使用されます:
- コンテナー自体を表す仮想通貨 (または積み重ね可能な項目) (例: "財宝チェスト トークン")。
- コンテナーが付与する必要があるアイテムを含む、その通貨の 1 単位として価格が設定されたバンドル。
- プレイヤーがバンドルを購入するために 1 つのトークンを費やす購入呼び出し。これにより、アイテムが自動的に開梱および付与されます。
プレイヤーの視点では、(ゲームプレイ報酬やストア購入などを介して) トークンを受け取り、それを "開く" とその内部のアイテムを取得します—これは V1 コンテナーと動作です。
前提条件
- PlayFab 開発者アカウント。
- ゲーム マネージャーで作成されたタイトル。
- コンテナーに付与する発行済みのカタログアイテムを少なくとも 1 つ。
手順 1: コンテナーの仮想通貨を作成する
コンテナーを表す仮想通貨を作成します。 この通貨の各単位は、1 つの未開封のコンテナーとして機能します。
- [Economy]>[Catalog (V2)]>[通貨] に移動します。
- [新しい通貨] を選択します。
-
[タイトル] を、
Treasure Chestなどのわかりやすい名前に設定します。 -
FriendlyId を、
tcなどの短いコードに設定します。 - [保存して発行] を選択します。
手順 2: 1 つのコンテナー トークンで価格が設定されたバンドルを作成する
コンテナーに付与するアイテムを含むバンドルを作成します。 コンテナー通貨の 1 単位でバンドルの価格を設定します。
- [Economy]>[Catalog (V2)]>[バンドル] に移動します。
- [新しいバンドル] を選択します。
-
タイトルを設定して、コンテナーの内容 (
Treasure Chest Contentsなど) を説明します。 - [アイテム] で、コンテナーに付与するアイテムと数量を追加します (たとえば、1 本の伝説の剣、100 のゴールドなど)。
- [価格] で、コンテナー通貨の 1 (財宝チェスト) に価格を設定します。
- [保存して発行] を選択します。
プレイヤーがバンドルを購入すると、バンドルは自動的に開封されます。バンドルで参照されている個々のアイテムは、プレイヤーのインベントリに直接付与されます。
手順 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 を使用して次の操作を行います:
- プレイヤーのインベントリからコンテナー トークンを減算します。
- 重み付けされたランダム選択ロジックを実行します。
- インベントリ API を使用して、結果のアイテムを付与します。