ドロップ テーブル (レガシ エコノミー)

Important

Economy v1 API はメンテナンス モードであり、新機能は受け取らず、バグ修正のみを受け取ります。 v1 API は、当面維持されます。 次のバージョンの PlayFab エコノミーの詳細については、「エコノミー v2 の概要」を参照してください。

このチュートリアルでは、PlayFab ゲーム マネージャーを使用してドロップ テーブルを作成する手順を紹介します。

ドロップ テーブルでは、インベントリ アイテムをランダムに作成でき、シーケンシャルなドロップ テーブルによってプレイヤーの報奨にランダム性を追加できます。

  • ここでは、カタログインベントリ、PlayFab ゲーム マネージャーについて既に理解していることを前提としています。
  • 標準の非バンドル/非コンテナー アイテムが含まれるプライマリ カタログが必要です。
  • ゲーム内の「自由」通貨として、少なくとも 1 つの仮想通貨を定義している必要があります。

独自のアイテムのセットを使用できますが、目標は、アイテムの重複する分類を作成することです。

例として、以下アイテム テーブルを使用します。

アクセサリ
通常 通常のアクセサリ 通常の鎧 通常の剣
貴重 貴重なアクセサリ 貴重な鎧 貴重な剣
レア レアなアクセサリ レアな鎧 レアな剣
伝説 伝説のアクセサリ 伝説の鎧 伝説の剣

自分のカタログで作業する同様のアイテム セットを設定したら、ドロップ テーブルを作成します。

ドロップ テーブルを作成する

ゲーム マネージャー内で次の手順を実行します。

  1. [タイトル]に移動します。
  2. 左のメニューから、[Economy (エコノミー)] を選択します。
  3. [カタログ] タブに移動して、プライマリ カタログを選択します。
  4. [Drop Tables (ドロップ テーブル)] を選択します。

この例のような画面が表示されます。

ゲーム マネージャー - カタログ - ドロップ テーブル

各アイテムの説明に基づいてドロップ テーブルの作成を開始します。 最初に分類するのは [Equipment Type (装備品タイプ)] なので、「アクセサリ」という名前のドロップ テーブルを作成します。

  1. [New Drop Table (新しいドロップ テーブル)] を選択します。

  2. [Table Id (テーブル ID)][Accessories (アクセサリ)] に設定します。

  3. [ADD TO DROP TABLE (ドロップ テーブルに追加)] を選択します。 [Pick multiple items (複数のアイテムの選択)] ポップアップが表示されます。

  4. [ID] の横にある [Add (追加)] を選択して、これらのアイテムを追加します。

    • 通常のアクセサリ
    • 貴重なアクセサリ
    • レアなアクセサリ
    • 伝説のアクセサリ
  5. [Close (閉じる)] を選択します。

  6. レア度に応じて、アイテムの[Weight (重み)]の値を調節します。

    • 通常: 1000
    • 貴重: 100
    • レア: 10
    • 伝説: 1

    重みは、お互いと比較して、そのアイテムがドロップされる頻度を示しています。 この例の場合は、伝説のアイテム 1 つごとに約 1,000 個の通常アイテムがドロップされます。

  7. [SAVE DROP TABLE (ドロップ テーブルの保存)] を選択します。

ゲーム マネージャー - ドロップ テーブル - アクセサリの編集

アクセサリが完了したら、同じ手順に従って武器のドロップ テーブルを作成します。

レア度による分類もあります。まずは通常の装備品から、別のテーブルのセットを作成します。

  1. [New Drop Table (新しいドロップ テーブル)] を選択します。

  2. [Table Id (テーブル ID)][Common Equipment (通常の装備品)] に設定します。

  3. [ADD TO DROP TABLE (ドロップ テーブルに追加)] を選択します。 [Pick multiple items (複数のアイテムの選択)] ポップアップが表示されます。

  4. [ID] の横にある [Add (追加)] を選択して、これらのアイテムを追加します。

    • 通常のアクセサリ
    • 通常の鎧
    • 通常の剣
  5. [Close (閉じる)] を選択します。

  6. そのスロットにおける通常の装備オプションの比率に応じて、重みの値を調整します。

    • 通常のアクセサリ: 1
    • 通常の鎧: 4
    • 通常の剣: 5
  7. [SAVE DROP TABLE (ドロップ テーブルの保存)] を選択します。

ゲーム マネージャー - ドロップ テーブル - 通常装備の編集

ドロップ テーブルを使用する

以下の 2 つの PlayFab サーバー API メソッドを使用して、プログラムによってドロップ テーブルにアクセスできます。

  1. GetRandomResultTables
  2. EvaluateRandomResultTable

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 (ドロップ テーブル)] を選択し、別のドロップ テーブルを追加します)、適切な重みを割り当てます。

ゲーム マネージャー - 新しいドロップ テーブル

バンドルの追加

これでドロップ テーブルの作成は完了し、バンドルを追加できます。

  1. 左のメニューから、[Economy (エコノミー)] を選択します。
  2. [カタログ] タブに移動して、プライマリ カタログを選択します。
  3. [Bundles (バンドル)] を選択し、[New Bundle (新しいバンドル)] を選択します。
  4. [アイテム ID][11 アイテムのドロップ] に設定し、[消耗品アイテム] を選択して、[時間][15 秒] を選択します。
  5. [ADD TO BUNDLE (バンドルに追加)] を選択します。
  6. [Pick multiple items (複数アイテムの選択)] ポップアップで、[Drop tables (ドロップ テーブル)] タブを選択します。
  7. [ID] の横にある [Add (追加)] を選択して、ドロップ テーブルを追加します。
  8. [Quantity (数量)] フィールドに以下の画像に示す値を設定します。
  9. [SAVE BUNDLE (バンドルを保存)] を選択します。

ゲーム マネージャー - 新しいカタログ バンドル

この例で作成したバンドルでは、複数の機能を使用します。

  • すべての種類のすべてのアイテムにアイテム ID が必要です。
  • バンドルは独自のアイテムと見なされ、付与されると同時にコンテンツが配信されます。 そのため、バンドル自体が消耗品アイテムであり、配信後 15 秒で有効期限が切れます。
  • 異なる数量の異なるドロップ テーブルを追加し、11 個のアイテムが配信されるものの、異なるアイテムは異なるテーブルでロール オンされるようにします。
    • まず、少なくとも 1 つの伝説のアイテムを保証します。そのため、最初のスロットは「伝説のアイテム」でロールオンされるようにします。
    • 次の 3 つのスロットは [すべて] でロール オンされるようにします。[伝説のアイテム] がロールされる場合も、あまり好まれていない通常の装備がロールされる場合もあります。 これら3つのアイテムは多岐にわたるため、これらのロールによって良いロールか悪いロールかが決まります。
    • 最後に、[レア][貴重] を残りのスロットに確保し、11 アイテムのロールが極端に良いまたは悪いロールとなることを防ぎます。

まとめ

ドロップ テーブルは、潜在的なアイテムと重みのリストからランダムに 1 つのアイテムを生成します。 バンドルとコンテナーは、ドロップ テーブルを使用してプレイヤーに 1 つまたは複数のアイテムを配信する最も簡単な方法の 1 つです。

以下のいずれかのサーバー API メソッドを使用して、CloudScript から手動でドロップ テーブルを使用できます。

  1. GetRandomResultTables
  2. EvaluateRandomResultTable