インテリジェント デリバリー: 機能とレシピ
このトピックでは、ご自身のゲームに必要な、ユーザーの最初のインストールとその後のインストールの所要時間を改善する機能およびレシピについて説明します。 機能とレシピは連携して、ユーザーが初期インストール時、また、インストール後にシェル内から追加または削除できるベース ゲーム内のコンテンツのグループを定義します。 ランタイム API を使用して、機能のインストール状態をクエリしたり、機能の追加や削除を動的にトリガーをかけたりすることもできます。
機能は、開発者向け ID 文字列属性を指定する XML 要素です。 また、ユーザー向けのローカライズ可能表示名と、シェルに表示する画像も指定します。 この機能は 1 つ以上のタグを指定します。 インストール時と更新時に、システムはインストールされた機能によって参照されるタグをすべて検索し、そのタグを含むチャンクをすべてインストールします。
レシピは、インストールする必要がある機能のリストを指定する XML 要素です。 常に既定のレシピが用意されており、そこに含まれる機能は常にインストールされます。 追加のレシピを定義できます。 これらは、ユーザーまたは現在の本体が、指定された StoreIds
のいずれかに対する権限を持っていれば、インストール時にアクティブ化されます (これは次のコードに示されています)。
<Recipes>
<!-- A recipe is always active if it has no child StoreId elements—the name "default" is a convention. -->
<Recipe Id="default" IncludedFeatures="CampaignFeature;MultiPlayerFeature"/>
<!-- This recipe is active by default, but only on Xbox Series X hardware. -->
<Recipe Id="default-anaconda" IncludedFeatures="HDFeature" Devices="Xbox-Anaconda"/>
<!-- PremiumProduct recipe is active, which means PremiumFeature installs if user owns 9PXXXXXXXXXX. -->
<Recipe Id="PremiumProduct" IncludedFeatures="PremiumFeature">
<StoreId>9PXXXXXXXXXX</StoreId>
</Recipe>
</Recipes>
<Features>
<Feature Id="CampaignFeature" DisplayName="ms-resource:CampaignFeatureName" Image="campaignlogo.png" Tags="Campaign1;Campaign2"/>
<Feature Id="MultiPlayerFeature" DisplayName="ms-resource:MultiPlayerFeatureName" Image="MPlogo.png" Tags="Multiplayer1;Multiplayer2" />
<Feature Id="HDFeature" DisplayName="ms-resource:HDTexturesFeatureName" Image="HDlogo.png" Tags="hd"/>
<Feature Id="PremiumFeature" DisplayName="ms-resource:PremiumFeatureName" Image="Premiumlogo.png" Tags="extras"/>
</Features>
<Chunk Id="8000" Tags="Campaign1">
<Chunk Id="8001" Tags="Campaign2">
<!-- This chunk uses the # character, so it's only installed if both the Campaign and HD features are active. -->
<Chunk Id="8001" Tags="Campaign1#hd">
<Chunk Id="9000" Tags="Multiplayer1">
<!-- This chunk uses the # character, so it's only installed if both the Multiplayer and HD features are active. -->
<Chunk Id="9001" Tags="Multiplayer1#hd">
<!-- This chunk is installed if either the Multiplayer or SinglePlayer features are active. -->
<Chunk Id="10000" Tags="Multiplayer1;Campaign1">
<!-- This chunk is installed if either the (Multiplayer feature and HD feature) or (SinglePlayer feature and HD feature) are active. -->
<Chunk Id="10001" Tags="Multiplayer1#hd;Campaign1#hd">
<Chunk Id="11000" Tags="extras">
<!-- This chunk uses the # character, so it's only installed if both the Premium and HD features are active. -->
<Chunk Id="11001" Tags="extras#hd">
注意
機能には、セミコロンで区切られた複数のタグ属性を含めることができます。 チャンク内のタグのいずれかがアクティブな機能に含まれている場合、チャンクはインストールに含まれます。
#
の両側のタグがアクティブな場合は、#
記号がタグをインストールします。
機能の表示名のローカライズ
DisplayNames
のローカライズは、MicrosoftGame.config ファイル内の名前属性のローカリゼーションと同じ方法で行われます。 これは、ms-resource:name
形式、ゲームの文字列ディレクトリにある .resw ファイル、および適切に名付けられたサブディレクトリにあるロケールごとの文字列を使用します。 詳細については、「MicrosoftGame.config のローカライズ」をご覧ください。
注意
MicrosoftGame.config とインテリジェント デリバリーで使用されるローカライズされた文字列の値と画像は、開発者用サンドボックスまたはリテールのいずれの発行済みパッケージ内でも暗号化されません。 自分のタイトル、アイコン、および機密コンテンツには、プレースホルダー値を使用します。 機密コンテンツとは、タイトルやタイトル内の特定のコンテンツが一般に公開される前に、開発中にインテリジェント デリバリーで参照するコンテンツなどです。
非表示機能
機能は非表示にすることができます。これにより、インストール時に選択可能なオプションとして表示されるかどうか、またはタイトルのインストール後にシェルを管理するタイミングを、ユーザーが決定できなくなります。 非表示機能を使用する場合は注意してください。機能を追加または削除する唯一の方法はタイトル内で API を使用することだからです。 タイトルにバグがあると、それらのバグを修正したコンテンツの更新を提供するまで、コンテンツにアクセスできなくなる可能性があります。 次のコードは、非表示としてマークされた機能の例です。
<Feature Id="HiddenFeature" Hidden="true" Tags="HiddenFeature1" />
機能のインストールの状態を確認する
機能を使用して、この機能で指定されたタグを持つすべてのチャンクの存在を確認できます。 これらのランタイム クエリを実行すると、デバイスと言語指定子が考慮されます。 この機能内にデバイスや言語固有のコンテンツがある場合は、その機能内の現在のデバイスに適用可能な 1 つの言語とすべてのチャンクがインストールされている限り、true
を返します。
たとえば、キャンペーン機能のアセットがチャンク8000、8001、8002 に含まれている場合、XPackageFindChunkAvailability メソッドを呼び出して、その一連のチャンクが完全にインストールされ、再生できるかどうかを判断する代わりに、3 つのチャンクすべてにカスタム タグ "campaign1" をタグ付けし、キャンペーン機能で "campaign1" を参照できます。 その後、キャンペーン機能 ID で XPackageChunkSelector を使用して XPackageFindChunkAvailability メソッドを呼び出し、そのデータ セットのインストール状態を簡単に取得できます。
関連項目
インテリジェント デリバリーの紹介
XPackageChunkSelector
XPackageInstallChunks
MicrosoftGame.Config localization