Devices specifiers declare which Xbox One devices the content in an installation chunk applies to. This allows you to offer the highest-fidelity experiences possible on the new Xbox One X consoles, without causing unnecessary downloads for users of Xbox One and Xbox One S devices.
Some content will be common to both consoles; for example, audio assets might be identical regardless of which device the title is running on.
Device specifiers enable the following scenarios:
New titles that will ship simultaneously for Xbox One, Xbox One S, and Xbox One X devices can use Intelligent Delivery to target devices with specific content. There are two general strategies for targeting assets to Xbox One / Xbox One S and Xbox One X:
One strategy for targeting assets for different Xbox One devices is to tune specific content to each device class. In this scenario, your title packages device-specific assets into chunks that target a specific device.
Note Filenames cannot be duplicated across different chunks, even if only one of the chunks containing the duplicates is installed at any time. We recommend that you either select your files based on folder name (for example, grouping all high-resolution assets in an Xbox One X-specific folder) or modify the filenames in a way that allows your title to disambiguate them—for example, by appending “_sco” to the filename.
The following example segment of a layout.xml file declares two chunks that are targeted for different devices. At install time, the system will determine whether to install chunk 2001 or chunk 2002 based on the hardware device type.
<Chunk Id="2001" Devices="Xbox-Durango">
<FileGroup DestinationPath="\Data\Maps\XboxOneOnly\LightMaps" SourcePath="Y:\Maps\Level1\XboxOneOnly\ResLightMaps" Include="*.map"/>
<Chunk>
<Chunk Id="2002" Devices="Xbox-Scorpio">
<FileGroup DestinationPath="\Data\Maps\Scorpio\HiResLightMaps" SourcePath="Y:\Maps\Level1\Scorpio\HiResLightMaps" Include="*.map"/>
<Chunk>
At runtime, your title should use the ID3D12Device::GetGpuHardwareConfigurationX or ID3D11DeviceX::GetGpuHardwareConfiguration method to determine which device the title is running on and use the appropriate set of assets, as shown in the following code example.
C++
D3D11X_GPU_HARDWARE_CONFIGURATION config = {};
m_pd3dDeviceX->GetGpuHardwareConfiguration( &config );
if (config.HardwareVersion == D3D11X_HARDWARE_VERSION_SCORPIO) {
//Render using Xbox One X-specific assets plus base assets as appropriate.
}
else {
//Render using Durango base assets.
}
The second strategy for targeting specific devices is to declare additional assets which install only on Xbox One X consoles. In this scenario, all assets which are common to both consoles are placed in chunks without devices specifiers. Xbox One X-specific assets are placed into their own chunk.
To add new Xbox One X assets to your title, identify the assets which are applicable only to Xbox One X devices, isolate them into new chunks in your layout.xml file, and apply the Xbox One X devices specifier to them, as shown in the following example.
<Chunk Id="2002" Devices="Xbox-Scorpio">
<FileGroup DestinationPath="\Data\Maps\Scorpio\HiResLightMaps" SourcePath="Y:\Maps\Level1\Scorpio\HiResLightMaps" Include="*.dat"/>
<Chunk>
When you publish a content update that includes chunks tagged in this manner, this new data will not be downloaded to existing or new installs on Xbox One devices. Users that install your title to Xbox One X consoles (including customers with existing disk-based versions of your title) will get this data. During installation, the update that includes this new content will be processed by the console and Xbox One X-specific assets will be brought down over the network as part of the install.