ドロップ テーブル (レガシ エコノミー)
Important
Economy v1 API はメンテナンス モードであり、新機能は受け取らず、バグ修正のみを受け取ります。 v1 API は、当面維持されます。 次のバージョンの PlayFab エコノミーの詳細については、「エコノミー v2 の概要」を参照してください。
このチュートリアルでは、PlayFab ゲーム マネージャーを使用してドロップ テーブルを作成する手順を紹介します。
ドロップ テーブルでは、インベントリ アイテムをランダムに作成でき、シーケンシャルなドロップ テーブルによってプレイヤーの報奨にランダム性を追加できます。
- ここでは、カタログ、インベントリ、PlayFab ゲーム マネージャーについて既に理解していることを前提としています。
- 標準の非バンドル/非コンテナー アイテムが含まれるプライマリ カタログが必要です。
- ゲーム内の「自由」通貨として、少なくとも 1 つの仮想通貨を定義している必要があります。
独自のアイテムのセットを使用できますが、目標は、アイテムの重複する分類を作成することです。
例として、以下アイテム テーブルを使用します。
アクセサリ | 鎧 | 剣 | |
---|---|---|---|
通常 | 通常のアクセサリ | 通常の鎧 | 通常の剣 |
貴重 | 貴重なアクセサリ | 貴重な鎧 | 貴重な剣 |
レア | レアなアクセサリ | レアな鎧 | レアな剣 |
伝説 | 伝説のアクセサリ | 伝説の鎧 | 伝説の剣 |
自分のカタログで作業する同様のアイテム セットを設定したら、ドロップ テーブルを作成します。
ドロップ テーブルを作成する
ゲーム マネージャー内で次の手順を実行します。
- [タイトル]に移動します。
- 左のメニューから、[Economy (エコノミー)] を選択します。
- [カタログ] タブに移動して、プライマリ カタログを選択します。
- [Drop Tables (ドロップ テーブル)] を選択します。
この例のような画面が表示されます。
各アイテムの説明に基づいてドロップ テーブルの作成を開始します。 最初に分類するのは [Equipment Type (装備品タイプ)] なので、「アクセサリ」という名前のドロップ テーブルを作成します。
[New Drop Table (新しいドロップ テーブル)] を選択します。
[Table Id (テーブル ID)]を [Accessories (アクセサリ)] に設定します。
[ADD TO DROP TABLE (ドロップ テーブルに追加)] を選択します。 [Pick multiple items (複数のアイテムの選択)] ポップアップが表示されます。
[ID] の横にある [Add (追加)] を選択して、これらのアイテムを追加します。
- 通常のアクセサリ
- 貴重なアクセサリ
- レアなアクセサリ
- 伝説のアクセサリ
[Close (閉じる)] を選択します。
レア度に応じて、アイテムの[Weight (重み)]の値を調節します。
- 通常: 1000
- 貴重: 100
- レア: 10
- 伝説: 1
重みは、お互いと比較して、そのアイテムがドロップされる頻度を示しています。 この例の場合は、伝説のアイテム 1 つごとに約 1,000 個の通常アイテムがドロップされます。
[SAVE DROP TABLE (ドロップ テーブルの保存)] を選択します。
アクセサリが完了したら、同じ手順に従って鎧と武器のドロップ テーブルを作成します。
レア度による分類もあります。まずは通常の装備品から、別のテーブルのセットを作成します。
[New Drop Table (新しいドロップ テーブル)] を選択します。
[Table Id (テーブル ID)]を [Common Equipment (通常の装備品)] に設定します。
[ADD TO DROP TABLE (ドロップ テーブルに追加)] を選択します。 [Pick multiple items (複数のアイテムの選択)] ポップアップが表示されます。
[ID] の横にある [Add (追加)] を選択して、これらのアイテムを追加します。
- 通常のアクセサリ
- 通常の鎧
- 通常の剣
[Close (閉じる)] を選択します。
そのスロットにおける通常の装備オプションの比率に応じて、重みの値を調整します。
- 通常のアクセサリ: 1
- 通常の鎧: 4
- 通常の剣: 5
[SAVE DROP TABLE (ドロップ テーブルの保存)] を選択します。
ドロップ テーブルを使用する
以下の 2 つの PlayFab サーバー API メソッドを使用して、プログラムによってドロップ テーブルにアクセスできます。
GetRandomResultTables を使用して、先ほどゲーム マネージャーに入力した未加工のドロップ テーブル データを読むことができます。
注意
GetRandomResultTables
は、ランダムな値や報奨の結果をロールしません。 この API を使用してデータを読み、任意の形式で情報を解析できます。
オプション 1
public void ReadDropTableData() {
PlayFabServerAPI.GetRandomResultTables(new GetRandomResultTablesRequest() {
TableIDs = new List<string> { "Accessories", "Common Equipment" }
}, result => {
Debug.Log("Completed getting drop tables");
}, error => {
Debug.LogError(error.GenerateErrorReport());
});
}
結果ハンドラーは、GetRandomResultTablesResult の形式で、作成したドロップ テーブルの構造情報を受け取ります。
または、PlayFab によって自動的にテーブルが評価されるようにし、EvaluateRandomResultTable を使用して単一アイテムの結果が返されるようにできます。 これによって返される itemId
を使用して、提供された重みに応じてロールされる単一アイテムを生成できます。
次に 2 回目の呼び出しを実行し、アイテムを作成してプレイヤーに付与できます。
オプション 2
public void Grant(string playFabId, string tableId) {
// First, roll a random number and evaluate the drop table
PlayFabServerAPI.EvaluateRandomResultTable(new EvaluateRandomResultTableRequest()
{
TableId = tableId
}, result => OnRandomResultTableResponse(result, playFabId), OnError);
}
public void OnRandomResultTableResponse(EvaluateRandomResultTableResult tableResult, string playFabId) {
// Second, take the result and grant it to the player
PlayFabServerAPI.GrantItemsToUser(new GrantItemsToUserRequest {
PlayFabId = playFabId,
ItemIds = new List<string> { tableResult.ResultItemId }
}, result =>
{
// Handle Result
}, OnError);
}
public void OnError(PlayFabError error) {
Debug.LogError(error.GenerateErrorReport());
}
まとめ:
オプション 1 - データを 1 度読み込み、キャッシュし、自分のゲーム サーバーで自分でロールを実行します。 このオプションでは PlayFab への呼び出し回数が少ないため遅延が軽減し、ゲーム固有のロジックに基づいてロールをカスタマイズできます。
オプション 2 - PlayFab が代わりに多くの作業を負担します。ただし、複数の API 呼び出しによって遅延が増加することに注意してください。
高度なドロップ テーブルの使用法 (ルート ボックスの設定)
ドロップ テーブルは、バンドルとコンテナーからリンクできます。 バンドルは仮想通貨ストアの優れたオプションです。単一の購入で、複数のランダム アイテムを取得できます。
たとえば、特定のドロップ ルールが設定された 11 アイテムのバンドルがあるとします。 この場合は、伝説のアイテムが 1 つ出ることを保証することで、顧客に向けたセールス ポイントとなります。 また、プレイヤーが幸運になりすぎ、11 個の伝説のアイテムを取得しないように制限できます。
新しいドロップ テーブル
文字どおりすべてのアイテムをドロップするドロップ テーブルを作成します。実際に、このテーブルは「すべて」と呼ぶことにします。
このドロップ テーブルを作成する際に、オプションとして別のドロップ テーブルを追加し ([Pick multiple items (複数アイテムの選択)] ポップアップで [Drop Tables (ドロップ テーブル)] を選択し、別のドロップ テーブルを追加します)、適切な重みを割り当てます。
バンドルの追加
これでドロップ テーブルの作成は完了し、バンドルを追加できます。
- 左のメニューから、[Economy (エコノミー)] を選択します。
- [カタログ] タブに移動して、プライマリ カタログを選択します。
- [Bundles (バンドル)] を選択し、[New Bundle (新しいバンドル)] を選択します。
- [アイテム ID] を [11 アイテムのドロップ] に設定し、[消耗品アイテム] を選択して、[時間] に [15 秒] を選択します。
- [ADD TO BUNDLE (バンドルに追加)] を選択します。
- [Pick multiple items (複数アイテムの選択)] ポップアップで、[Drop tables (ドロップ テーブル)] タブを選択します。
- [ID] の横にある [Add (追加)] を選択して、ドロップ テーブルを追加します。
- [Quantity (数量)] フィールドに以下の画像に示す値を設定します。
- [SAVE BUNDLE (バンドルを保存)] を選択します。
この例で作成したバンドルでは、複数の機能を使用します。
- すべての種類のすべてのアイテムにアイテム ID が必要です。
- バンドルは独自のアイテムと見なされ、付与されると同時にコンテンツが配信されます。 そのため、バンドル自体が消耗品アイテムであり、配信後 15 秒で有効期限が切れます。
- 異なる数量の異なるドロップ テーブルを追加し、11 個のアイテムが配信されるものの、異なるアイテムは異なるテーブルでロール オンされるようにします。
- まず、少なくとも 1 つの伝説のアイテムを保証します。そのため、最初のスロットは「伝説のアイテム」でロールオンされるようにします。
- 次の 3 つのスロットは [すべて] でロール オンされるようにします。[伝説のアイテム] がロールされる場合も、あまり好まれていない通常の装備がロールされる場合もあります。 これら3つのアイテムは多岐にわたるため、これらのロールによって良いロールか悪いロールかが決まります。
- 最後に、[レア] と [貴重] を残りのスロットに確保し、11 アイテムのロールが極端に良いまたは悪いロールとなることを防ぎます。
まとめ
ドロップ テーブルは、潜在的なアイテムと重みのリストからランダムに 1 つのアイテムを生成します。 バンドルとコンテナーは、ドロップ テーブルを使用してプレイヤーに 1 つまたは複数のアイテムを配信する最も簡単な方法の 1 つです。
以下のいずれかのサーバー API メソッドを使用して、CloudScript から手動でドロップ テーブルを使用できます。