テスト ディスクの作成

注意

これらの手順は、テストのみを目的としています。 リテール シナリオでは、このデータはパートナー センター メタデータに従って自動構成されます。 オムニバス形式ディスクを作成するためのフローで選択されたオプションは、インストール順序、自動スタートなどを制御するために使用されます。 ゲームをインジェストのために提出する場合は、テスト メタデータや JSON config ファイルをマイクロソフトに直接提出することはしません。

このトピックでは、テスト ディスクを作成する方法について説明します。 次の種類のテスト ディスクを作成できます。

オムニバス形式

テスト用のオムニバス形式ディスクを作成する

オムニバス形式ディスクを作成およびテストするには、以下の説明に従って catalog.js メタデータ ファイルおよびディスク レイアウトを作成する必要があります。

ディスク レイアウトを作成する

次の例のようなディスク レイアウトを作成します。

- Disc Root
    - Licenses (folder) - (Not needed for Xbox One ERA Development Kits - make sure to use XVCs created with /LT flag)
        License0.xml (file) - (Not needed for Xbox One ERA dev kits - make sure to use XVCs created with /LT flag)
    - MSXC (folder)
        - Package1.xvc (file)
        - Package2.xvc (file)
        - Metadata (folder)
            - catalog.js (file)
            - Bundle (folder)
                - Bundle images (files)
            - Package1.xvc (folder)
                - Package 1 images (files)
            - Package2.xvc (folder)
                - Package 2 images (files)  

ディレクトリの内容は次のようになります。

  • Licenses には、ゲームのライセンス ファイルが格納されます。 この情報は、Xbox One ERA 開発キットには必要ありません。 必ず /LT フラグを使用して作成された XVC を使用してください。 以降、これは省略できます。

  • MSXC には、パッケージ化されたゲームと、Xbox シェルによって使用されるメタデータが格納されます。

  • Metadata には、シェルがディスク上のゲームおよびゲーム パッケージに対して使用するメタデータが格納されます。

  • Bundle には、シェルによって使用されるイメージが格納されます。

  • Package1.XVC には、最初のゲームに対してシェルが使用するイメージが格納されます。 名前は MSXC 内のゲーム パッケージ ファイルの名前と一致する必要があります。

  • Package2.XVC には、2 番目のゲームに対してシェルが使用するイメージが格納されます。 名前は MSXC 内のゲーム パッケージ ファイルの名前と一致する必要があります。

catalog.js

Metadata フォルダーには、catalog.js という名前のファイルを作成します。 このファイルを編集し、他のフォルダーにあるパッケージおよびイメージの名前を反映させます。 このファイルは UTF-16 LE でエンコードする必要があります。 Web 上の JSON バリデーターを使用することを推奨します。 JSON が有効であることを確認するには、その JSON をテキスト エディターにコピーしてから、ファイルを UTF-16 LE 形式で保存します。

マルチゲーム シナリオ用 catalog.js ファイルの例 (コメント付き)
{
  "version": "4.1",                                        // Don't adjust this value.
  "bundle": {
    "oneStoreProductId": "9P436MXJ71GV",                   // Replace with your bundle product id.
    "titles": [
      {
        "locale": "default",
        "title": "Bundle Title"                            // Replace with bundle title.
      }
    ],
    "images": [
      {
        "size": "100x100",                                 // Don't change the size values.
        "image": "100x100_1.png"                           // Must match the image file names in MSXC\Metadata\Bundle\
      },
      {
        "size": "208x208",
        "image": "208x208_1.png"
      },
      {
        "size": "480x480",
        "image": "480x480_1.png"
      }
    ]
  },
  "packages": [                                             // This is an array of packages.
    {
      "packageName": "Package1.xvc",                        // Match your package name in MSXC\<package name> and MSXC\Metdata\<package name>
      "oneStoreProductId": "BX38WRFV50MJ",                  // Product id for package 1.
      "contentId": "2b05043b-4043-4ba0-80ed-fd4811c4b333",  // Content id for package 1.  Must match the content id of the package file.
      "franchiseGameHubId": "47445142-3636-3036-C048-464D4E574000", // Optional; Replace with the FranchiseGameHubId. This marks the package as a game hub
      "titleId": "037C3A1D",                                // Title id for package 1.
      "titles": [
        {
          "locale": "default",
          "title": "Killer Instinct"                        // Package 1 title.
        }
      ],
      "images": [
        {
          "size": "100x100",
          "image": "100x100_1.png"                          // Match file names in MSXC\Metadata\<Package1>\
        },
        {
          "size": "208x208",
          "image": "208x208_1.png"
        },
        {
          "size": "480x480",
          "image": "480x480_1.png"
        }
      ],
      "ratings": [
        {
          "system": "OFLC",
          "value": "M"
        },
        {
          "system": "DJCTQ",
          "value": "14"
        },
        {
          "system": "PCBP",
          "value": "Unrated"
        },
        {
          "system": "USK",
          "value": "16"
        },
        {
          "system": "ESRB",
          "value": "T"
        },
        {
          "system": "CERO",
          "value": "Unrated"
        },
        {
          "system": "CSRR",
          "value": "Unrated"
        },
        {
          "system": "COB",
          "value": "M"
        },
        {
          "system": "GRB",
          "value": "Unrated"
        },
        {
          "system": "PEGI",
          "value": "16"
        },
        {
          "system": "PEGIPortugal",
          "value": "Unrated"
        }
      ],
      "type": "Game"
  },
  {
    "packageName": "Package2.xvc",
    "oneStoreProductId": "BVC818MXZ6KG",
    "contentId": "4a6cb1d0-5ad3-47b7-9583-7480098b4a26",
    "associatedFranchiseGameHubId": "47445142-3636-3036-C048-464D4E574000", // Replace with the FranchiseGameHubId of the corresponding franchise game hub that this package is launched with. Optional;
    "titleId": "669E1864",
    "titles": [
      {
        "locale": "default",
        "title": "LocoCycle"
      }
    ],
    "images": [
      {
        "size": "100x100",
        "image": "100x100_1.png"
      },
      {
        "size": "208x208",
        "image": "208x208_1.png"
      },
      {
        "size": "480x480",
        "image": "480x480_1.png"
      }
    ],
    "ratings": [
      {
        "system": "OFLC",
        "value": "PG"
      },
      {
        "system": "DJCTQ",
        "value": "10"
      },
      {
        "system": "USK",
        "value": "12"
      },
      {
        "system": "ESRB",
        "value": "T"
      },
      {
        "system": "PEGI",
        "value": "12"
      },
      {
        "system": "COB",
        "value": "PG"
      }
    ],
    "type": "Game"
    }
  ]
}  

ゲーム + 非消耗品ダウンロード コンテンツ (DLC) シナリオ用 catalog.js の例
{
  "version": "4.0",                                        // Don't adjust this value.
  "bundle": {
    "oneStoreProductId": "9P436MXJ71GV",                   // Replace with bundle product id.
    "launchPackage": "Package3.xvc",                       // Should be the package name of the game package.  This is the package that is launched when the game disc is inserted.
    "titles": [
      {
        "locale": "default",                                        
        "title": "Game + DLC Bundle Title"                 // Replace with bundle name.
      }
    ],
    "images": [
      {
        "size": "100x100",
        "image": "100x100_1.png"                           // Must match the image file names in MSXC\Metadata\Bundle\
      },
      {
        "size": "208x208",
        "image": "208x208_1.png"
      },
      {
        "size": "480x480",
        "image": "480x480_1.png"
      }
    ]
  },
  "packages": [
    {
      "packageName": "Package1.xvc",                       // Match folder name in MSXC\Metadata\<folder name>
      "oneStoreProductId": "BX38WRFV50MJ",                 // Replace with DLC 1 product id.
      "contentId": "ace6ef3b-0c5b-4f17-a651-390e75169d5c", // Replace with DLC 1 content id. This must match the content id of the package file.
      "allowedOneStoreProductIds": [
        "BVC818MXZ6KG"                                     // Should match the product id of the game that will load this DLC.
      ],
      "titles": [
        {
          "locale": "default",
          "title": "DLC Title 1"
        }
      ],
      "images": [
        {
          "size": "100x100",
          "image": "100x100_1.png"                         // Match file names in MSXC\Metadata\Package1.xvc\
        },
        {
          "size": "208x208",
          "image": "208x208_1.png"
        },
        {
          "size": "480x480",
          "image": "480x480_1.png"
        }
      ],
      "ratings": [
        {
          "system": "ESRB",
          "value": "E"
        }
      ],
      "type": "Durable"                                    // Indicates that this is a DLC package.
    },
    {
      "packageName": "Package2.xvc",
      "oneStoreProductId": "9P436MXJ71GV",
      "contentId": "b0f77189-d74c-4005-b351-955d380cb875",
      "allowedOneStoreProductIds": [
        "BVC818MXZ6KG"
      ],
      "titles": [
        {
          "locale": "en-US",
          "title": "DLC Title 2"
        }
      ],
      "images": [
        {
          "size": "100x100",
          "image": "100x100_1.png"
        },
        {
          "size": "208x208",
          "image": "208x208_1.png"
        },
        {
          "size": "480x480",
          "image": "480x480_1.png"
        }
      ],
      "ratings": [
        {
          "system": "ESRB",
          "value": "E"
        }
      ],
      "type": "Durable"
    },
    {
      "packageName": "Package3.xvc",
      "oneStoreProductId": "BVC818MXZ6KG",
      "contentId": "5519355c-bff9-40b4-92bb-b5473fd9c577",
      "titleId": "35c8f637",
      "titles": [
        {
          "locale": "default",
          "title": "Game Title"
        }
      ],
      "images": [
        {
          "size": "100x100",
          "image": "100x100_1.png"
        },
        {
          "size": "208x208",
          "image": "208x208_1.png"
        },
        {
          "size": "480x480",
          "image": "480x480_1.png"
        }
      ],
      "ratings": [
        {
          "system": "ESRB",
          "value": "E"
        }
      ],
      "type": "Game"                                       // Indicates main game package.
    }
  ]
}  

インストールの順序付けと通知

DLC のインストール通知は、通常、DLC パッケージがインストールを完了したときにトリガーされます。 ゲーム ディスクのタイプによっては、非常に短い時間の間に大量の通知が作成されることがあるため、この動作が望ましくない場合があります。 たとえば、ゲーム オブ ザ イヤー エディションで、ディスクに大量の小さな DLC パッケージが含まれている場合があります。このような状況に対処するため、DLC の通知は、適用対象のゲームがインストール済みの場合にのみトリガーされます。

大量の小さな DLC パッケージが含まれるゲームの場合、ゲームの前に DLC がインストールされるようにディスク上のパッケージに順序付けすることをお勧めします。 これで、DLC パッケージがインストールされるときの通知がユーザーに大量に送信されなくなります。

少量の大きな DLC パッケージが含まれるゲームの場合、すべての DLC パッケージがインストールされまでユーザーのゲーム プレイがブロックされることがないように、メインのゲームの後に DLC をインストールすることをお勧めします。

DLC とゲームがインストールされる順序を制御するには、catalog.js 内の Packages JSON 配列で、それらの順序を単純に調整します。 この配列によって、インストールの既定の順序が制御されます。

配置

オムニバス形式ディスクを配置するには、ディレクトリ構造をディスクに書き込みます。ディスクを開発キットに挿入すると、リテール版本体上でリリース バージョンが起動するのと同じように起動します。

複数のディスク

複数のディスクをテスト用に作成するには、既存の XVC を 2 つのファイルに分割します。

注意

XVC は、Layout.xml ファイルで定義されているように、個々のチャンク境界でのみ分割できます。 チャンクが非常に大きい (45 GB 以上の) XVC は、複数ディスク機能を使用して公開できない可能性があります。 一般に、タイトルのチャンクは 45GB 未満とすることをお勧めします。

XVC を 2 つのディスクに分割するには、次のような DiscLayout.xml ファイルを作成します。

<Packages>
  <Package Name="MultiDisc" Description="Package published on 2 discs" MaxDiscs="2">
  </Package>
</Packages>  

次に、SplitPkg を呼び出してディスクに書き込む個別のファイルを生成します。これで、オリジナルの XVC ファイル名の末尾に「MultiDisc.1」と「MultiDisc.2」がついた 2 つのファイルが生成されます。

SplitPkg /f DiscLayout.xml /p sourceXVC /s Multidisc /pd outputDir  

複数のディスクからのインストールをシミュレートするには、ディスク 1 の xbapp install とディスク 2 の xbapp install を使用します。 ディスク 1 のコンテンツがインストールされると、本体からディスク 2 を挿入するように求められます。

catalog.js

これらのテスト ディスクを書き込むには、新しい discNumberdiscCount、および discSetId フィールドで Catalog.js ファイルを作成します。 すべてのディスクにこれらすべてのメタデータが必要であることに注意してください。 各ディスクの Catalog.js ファイルの唯一の違いは、discNumber フィールドの値だけです。 たとえば、ディスク 1 に 1 の値を持たせ、ディスク 2 に 2 の値を持たせるといった要領になります。 ゼロ (0) は予備の値です。使用しないでください。

複数ディスク用の Catalog.js の例

{
  "version": "4.0",                                         // Don't adjust this value.
  "discNumber": 1,                                          // 1 for disc 1, 2 for disc 2.
  "discCount": 2,                                           // Same on all discs.
  "discSetId": "00000001",                                  // For test purposes, this can be 00000001. On retail discs, this value is unique for each published disc set. 
                                                            // Don't mix installations of test discs from different sets if they share this value. Cancel your installation before starting a new one.
  "packages": [                                             // This is an array of packages.
    {
      "packageName": "Package1.xvc",                        // Match your package name in MSXC\package-name and MSXC\Metdata\package-name
      "oneStoreProductId": "BX38WRFV50MJ",                  // Product id for package 1.
      "contentId": "2b05043b-4043-4ba0-80ed-fd4811c4b333",  // Content id for package 1. Must match the content id of the package file.
      "titleId": "037C3A1D",                                // Title id for package 1.
      "titles": [
      {
        "locale": "default",
        "title": "Killer Instinct"                          // Package 1 title.
      }
    ],
    "images": [
      {
        "size": "100x100",
        "image": "100x100_1.png"                            // Match file names in MSXC\Metadata\Package1\
      },
      {
        "size": "208x208",
        "image": "208x208_1.png"
      },
      {
        "size": "480x480",
        "image": "480x480_1.png"
      }
    ],
    "ratings": [
      {
        "system": "OFLC",
        "value": "M"
      },
      {
        "system": "DJCTQ",
        "value": "14"
      },
      {
        "system": "PCBP",
        "value": "Unrated"
      },
      {
        "system": "USK",
        "value": "16"
      },
      {
        "system": "ESRB",
        "value": "T"
      },
      {
        "system": "CERO",
        "value": "Unrated"
      },
      {
        "system": "CSRR",
        "value": "Unrated"
      },
      {
        "system": "COB",
        "value": "M"
      },
      {
        "system": "GRB",
        "value": "Unrated"
      },
        {
        "system": "PEGI",
        "value": "16"
      },
      {
        "system": "PEGIPortugal",
        "value": "Unrated"
      }
    ],
      "type": "Game"
    }
  ]
}  

関連項目