テスト ディスクの作成
注意
これらの手順は、テストのみを目的としています。 リテール シナリオでは、このデータはパートナー センター メタデータに従って自動構成されます。 オムニバス形式ディスクを作成するためのフローで選択されたオプションは、インストール順序、自動スタートなどを制御するために使用されます。 ゲームをインジェストのために提出する場合は、テスト メタデータや 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
これらのテスト ディスクを書き込むには、新しい discNumber、discCount、および 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"
}
]
}