On Xbox One, all titles run from the hard drive. Content can be delivered from any number of sources, but it is primarily delivered via optical disc and the cloud—Blu-ray disc and Xbox Live.
To get consumers quickly playing games, Xbox One offers a feature called streaming installation, which allows titles to run before complete installation. It also allows titles to change the order in which content is installed in response to user input or other events.
Streaming Installation and Intelligent Delivery provides a smoother experience for the user when playing a title for the first time by providing the following benefits:
Only a subset of data is required to launch a title
Each title can specify a subset of its data that is required for the title to start. The system ensures that this content has been copied to the hard drive before registering the application and making it available for launch.
Installation data is downloaded and installed only when appropriate
Installation data can be marked with specifiers so that it is downloaded and installed only when it is appropriate to do so. For example, you can mark assets that apply only to a specific language; those assets will then be delivered only to consoles that are set to that language. In addition, assets which will be used only on a specific class of Xbox One console can be marked with specifiers so that they will be installed only on that console.
Installation of a title continues in the background
Once the minimum data required to launch has been copied to the hard drive and a title has started, the remaining data will be copied from the installation source to the hard drive simultaneous with execution of the title.
A user can switch between applications, and background installation will continue. For example, if a user is playing a game and then decides to watch a movie, the system will continue the installation in the background while the movie is playing.
To use streaming installation, you define a list of files that constitute a chunk of data. Each chunk supports a specific part of your title’s gameplay. You also define the order in which chunks will be installed by default. This order is specified by an XML file that maps the layout of the chunks. For example, the following sample shows a simple package file:
<Package>
<Chunk Id="1000" Marker="Launch">
<FileGroup DestinationPath="\" SourcePath="X:\bin" Include="*.*"/>
</Chunk>
<Chunk Id="1001">
<FileGroup DestinationPath="\Data\Maps" SourcePath="Y:\Maps\Level1" Include="*.map"/>
<FileGroup DestinationPath="\Data\Maps" SourcePath="Y:\Maps\Level2" Include="*.map"/>
<FileGroup DestinationPath="\Data\Maps" SourcePath="Y:\Maps\Level3" Include="*.map"/>
<FileGroup DestinationPath="\Data\Maps" SourcePath="W:\ExtraMaps" Include="*.map"/>
<FileGroup DestinationPath="\Data\Textures" SourcePath="M:\MapTextures" Include="*.png"/>
<FileGroup DestinationPath="\Data\Textures" SourcePath="W:\ExtraMapTextures" Include="*.png"/>
</Chunk>
<Chunk Id="1073741823">
<FileGroup DestinationPath="\" SourcePath=".\" Include="Update.AlignmentChunk"/>
</Chunk>
</Package>
For a definition of the package schema, see Deployment Package Schema.
Title data is packaged for streaming using Make Package (makepkg.exe), a command-line tool, with the mapping file as a parameter.
Once an application package has been created, streaming installation can be tested on a console by using xbapp install; for more information about this command, see Application Management (xbapp.exe).
One challenge with traditional streaming install implementations is that files must be included in their entirely in your title’s set of launch chunks. This has two challenges: Either your title has to be very efficient in what is stored in files, so that only the data needed for your launch experience is stored in those files, or you may ship conttent in your launch experience which isn’t actually accessed.
Xbox Instant Play (XIP) allows you to create more optimized install plans for users installing from optical media by simply running your packaged title while the Xbox devkit profiles I/O accesses, and then creating an automatic installation plan that can prioritize the install of subsets of data from individual files, in the order your title is most likely to access them.
XIP automatically asesses the amount and order of your title’s data accesses, and automatically decides on the set of data that needs to be installed prior to launch, based on the speed of access from optical media compared with how fast the data is accessed at run time.
XIP works together with your Streaming Installation Layout.xml file and is compatible with Intelligent Delivery.
For more information, see: Optimizing for fast install using Xbox Instant Play (XIP). Xbox Instant Play Utility (XIPUtil.exe).
To use Intelligent Delivery, mark chunks in your layout file appropriately. The following sample demonstrates how to mark a chunk so that it is installed only on an Xbox One console with its language set to French.
<Package>
<Chunk Id="2002" Languages="fr">
...
</Chunk>
</Package>
MakePkg.exe, a tool for creating packages, expands the last chunk in a title’s layout to meet alignment requirements. Content updates to any chunk will therefore typically cause the last chunk to change in size, and the system will download it again. In instances when the last chunk is large, this expansion to create alignment would mean a large download to update content, even if the chunk’s contents haven’t changed. To minimize the download size, titles are required to have a special alignment chunk, which is a 1-byte file specified at the end of their layout file:
<Chunk Id="1073741823">
<FileGroup DestinationPath="\" SourcePath=".\" Include="Update.AlignmentChunk"/>
</Chunk>
The preceding text and suitable 1-byte file are available as AlignmentChunk.zip, which can be downloaded from the Xbox Game Developer (XGD) site.
Titles that are missing the alignment chunk and 1-byte file requirement will cause a warning to be logged, which will cause a certification failure if not corrected prior to submission.
Normally, title updates occur in the background, and users are not aware that an update is in progress. However, in some cases, the title may be executing while an update is in progress. Even if this is the case, the updater will be able to update individual chunks. While a particular chunk is in the process of being updated, a query about its status will indicate that the particular chunk is not installed.
After the chunks in the launch set have been updated, the title can be launched; the system will behave as if the title is being installed again.
Note The __debugbreak compiler intrinsic prevents all deployment once it is called, including xbdeploy, Visual Studio deployment, and streaming install. If __debugbreak is called in your title, you must reboot the console to restore deployment functionality.
Streaming Installation: Status
Describes how titles can monitor the progress of installation.
Dynamic Chunk Reordering
Describes how a title can change the order in which data is installed in response to user input.
Streaming Installation: Debugging
Describes how to pause streaming installation of a title until the debugger is connected to the title.
Xbox One File-Based Content Updates
Discusses Xbox One’s support for creating content updates with file-based granularity, rather than chunk-based granularity.
Application Packaging During Development
Application packaging has three stages during the development process: unencrypted packaging, test encryption packaging, and production encryption packaging.
Multi-disc Functionality
Describes how to create Xbox One titles that span more than one disc.
Testing Streaming Install Packages
There are 3 ways to test installation of streaming install packages which are unencrypted or encrypted with the /lt makepkg test-encryption switch.
Creating and Testing Streaming Install Package Updates
Package updates are packages that are used to provide updated content for a base package that is already installed. Package updates can be created for testing purposes using the default behavior of makepkg (not using the /l or /lu switch). To ensure the update process works correctly, the base package and the update package must be built with the same content ID using the /contentid switch.
Intelligent Delivery
Describes how to use Intelligent Delivery to install only a subset of content.
Preview Feature: Xbox Instant Play (XIP)
Describes how to simplify Streaming Install implementation from optical media (ODD) by using a I/O profile based streaming install plan created with Xiputil. This results in faster launch times, without your title having to manually separate assets into separate files for use with a layout.xml launch marker.