> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# MSIXVC2 によるコンテンツ更新

> MSIXVC2 によるコンテンツ更新

MSIXVC2 は、コンテンツ更新の計算と配信方法を根本的に変更します。従来の MSIXVC 形式では、コンテンツ更新は固定 4 KB のブロック境界で動作し、pack ファイル内のファイル レイアウト、チャンクの順序、およびアライメントに影響を受けます。MSIXVC2 では、コンテンツ更新はコンテンツ ベースのセグメント化を使用してバイト レベルで変更を追跡し、MSIXVC で更新サイズを肥大化させるアライメントの制約を排除します。

<Note>
  従来の MSIXVC 形式に固有のコンテンツ更新ガイダンスについては、[コンテンツ更新のベスト プラクティス](/build/core-features/common/packaging/packaging-updates) を参照してください。
</Note>

## MSIXVC2 のコンテンツ更新の仕組み

### コンテンツ ベースのセグメント化

MSIXVC2 は、固定ブロック境界ではなく、実際のコンテンツに基づいてファイル データを可変サイズのセグメントに分割します。各セグメントは、その内容のハッシュによって識別されます。

このアプローチは以下を意味します。

* **チャンク間でファイルを移動しても再ダウンロードはトリガーされません。** ファイルのコンテンツ ハッシュは、どのチャンクに属していても同じままです。
* **チャンク内でファイルを並べ替えても再ダウンロードはトリガーされません。** セグメント境界は位置ではなくコンテンツによって決定されます。
* **チャンクを並べ替えても再ダウンロードはトリガーされません。** チャンク レイアウトは、データの物理的なセグメント化に影響しない論理的な概念です。
* **データの挿入または削除がカスケードしません。** 固定ブロック システムとは異なり、小さな挿入は後続のすべてのブロックをずらすことはなく、変更されていないコンテンツの再ダウンロードを強制しません。

### アップロード時の重複排除

すべてのセグメントは、アップロード前にハッシュ化されます。アップロード プロセスは、以前のバージョンから既に存在するセグメントを判別するために CDN に問い合わせます。プレイヤーには新規または変更されたセグメントのみがアップロードされ配信されます。この重複排除は自動的に行われ、開発者のアクションは必要ありません。

### セグメントごとの暗号化と圧縮

各セグメントは独立して圧縮および暗号化されます。これにより、1 つのセグメントの更新が他のセグメントに影響しないことが保証されます。

## MSIXVC からの変更点

MSIXVC のコンテンツ更新における以下のアライメントとレイアウトの制約は、MSIXVC2 には **適用されません**。

| MSIXVC の制約                            | MSIXVC2 の動作                             |
| ------------------------------------- | --------------------------------------- |
| pack ファイル内でアセットを 4 KB 境界にアライメントする     | 不要。コンテンツ ベースのセグメント化はアライメントに依存しません。      |
| チャンク ID を変更したり、ファイルをチャンク間で移動しない       | チャンク レイアウトの変更は自由です。再ダウンロードのペナルティはありません。 |
| チャンク、ファイル、またはアセットを並べ替えない              | 並べ替えは自由です。セグメント ハッシュはコンテンツ ベースです。       |
| データを効率的に移動できない                        | データの移動はコンテンツ ハッシュによって自然に処理されます。         |
| 固定の最小ハッシュ ツリー オーバーヘッドがゲーム サイズに応じて拡大する | 最小限のオーバーヘッド。部分的にダウンロード可能。               |

<Tip>
  現在、安定したファイル順序を維持したり、アセット レイアウトを固定したり、ビルド パイプラインで 4 KB アライメントを慎重に管理する努力をしている場合、MSIXVC2 はその作業の必要性を排除します。コンソール向けに XVC パッケージを出荷している場合は、これらの最適化は引き続き適用されます。
</Tip>

## 更新サイズの比較

以下のデータは、同じタイトルのビルドについて MSIXVC と MSIXVC2 のコンテンツ更新サイズを比較しています。ゲームには変更を加えていません。同じアセット、同じビルド、異なるパッケージング形式です。

| タイトル   | エンジン   | MSIXVC 更新 | MSIXVC2 更新 | 削減率   |
| ------ | ------ | --------- | ---------- | ----- |
| Game A | Unity  | 1.27 GB   | 71 MB      | ↓ 94% |
| Game B | Unity  | 411 MB    | 49 MB      | ↓ 88% |
| Game C | Custom | 2.5 GB    | 473 MB     | ↓ 81% |
| Game D | Unreal | 1.75 GB   | 595 MB     | ↓ 66% |

Game D で改善が小さいのは、タイトルが既に MSIXVC コンテンツ更新 (CUv3) 向けに手動で最適化されていたためです。この最適化作業を行っていないほとんどのタイトルでは、より大きな削減が見られます。MSIXVC2 では、この最適化作業は不要になります。

## パッケージ オーバーヘッドの削減

すべての MSIXVC パッケージには、ゲームの全体サイズに応じて拡大する固定の最小ハッシュ ツリーが含まれます。このオーバーヘッドは、常に更新のたびに完全にダウンロードされます。大規模タイトルでは、このオーバーヘッドは重要です。

| タイトル              | MSIXVC オーバーヘッド   | MSIXVC2 オーバーヘッド  | 削減率   |
| ----------------- | ---------------- | ---------------- | ----- |
| Game C (\~320 GB) | 2.049 GB (0.66%) | 184.3 MB (0.06%) | ↓ 91% |

MSIXVC2 のオーバーヘッドは部分的にダウンロード可能でもあり、プレイヤーは更新に関連するメタデータの一部分のみを受け取ることを意味します。

## ベース ゲーム サイズの改善

コンテンツ ベースのセグメント化と組み込みの圧縮は、ベース ゲームのダウンロード サイズも削減します。

| タイトル   | MSIXVC ベース | MSIXVC2 ベース | 削減率   |
| ------ | ---------- | ----------- | ----- |
| Game A | 11.7 GB    | 4.2 GB      | ↓ 64% |
| Game B | 918 MB     | 558 MB      | ↓ 39% |
| Game C | 320.0 GB   | 270.5 GB    | ↓ 15% |
| Game D | 129.9 GB   | 121.0 GB    | ↓ 7%  |

圧縮されていないコンテンツを持つタイトル、またはチャンク間で重複するデータが多いタイトルでは、ベース サイズの削減が最大になります。すべてのコンテンツを既に圧縮しており、重複がないタイトル (Game D など) では、改善は小さくなりますが、依然として意味のあるものです。

## タイトルにおける MSIXVC2 の評価

自分のタイトルのコンテンツ更新の改善を測定するには、次の手順に従います。

1. ゲームの連続する 2 つのビルド (例: リリース ビルドとその後のパッチ) を用意します。
2. `makepkg` を使用して両方のビルドをパッケージ化します。

```text theme={null}
   makepkg pack /msixvc2 /f layout.xml /d <old_build> /pc /pd <output_old>
   makepkg pack /msixvc2 /f layout.xml /d <new_build> /pc /pd <output_new> /priorpackage <output_old\package.msixvc>
```

3. 結果として得られる更新サイズを、同等の MSIXVC (v1) ビルドと比較します。
4. 比較結果を使用して、MSIXVC2 への移行を計画します。

<Info>
  MSIXVC2 パッケージは Partner Center 内の別のブランチ (例: `msixvc2`) にアップロードしてください。同じブランチで MSIXVC2 と MSIXVC のパッケージを混在させないでください。ブランチを MSIXVC2 から MSIXVC に戻すには完全な再アップロードが必要で、そのブランチのプレイヤーに完全な再ダウンロードを強制します。詳細については、[パッケージ ブランチのベスト プラクティス](/build/core-features/common/packaging/overviews/packaging-msixvc2-overview#package-branch-best-practices) を参照してください。
</Info>

## クロスプラットフォーム タイトルにおけるパディングの考慮事項

タイトルが PC (MSIXVC2) とコンソール (XVC) の両方で出荷される場合、プラットフォームごとに個別のパディング構成を使用できます。MSIXVC2 では、更新効率に影響を与えることなく、PC ビルドのパディングを安全に減らしたり削除したりできます。プラットフォーム間で同じ構成を維持したい場合でも、その構成もペナルティなしで機能します。MSIXVC2 は両方のケースを処理します。

## 関連項目

[MSIXVC2 パッケージング概要](/build/core-features/common/packaging/overviews/packaging-msixvc2-overview) [コンテンツ更新のベスト プラクティス (MSIXVC)](/build/core-features/common/packaging/packaging-updates) [MSIXVC2 暗号化モデル](/build/core-features/common/packaging/packaging-encryption-msixvc2) [PC 向け MSIXVC2 のはじめに](/build/core-features/common/packaging/overviews/packaging-getting-started-for-PC-msixvc2) [Make package (makepkg.exe)](/build/core-features/common/packaging/deployment/makepkg)


## Related topics

- [コンテンツ更新のベスト プラクティス](/ja-jp/build/core-features/common/packaging/packaging-updates.md)
- [コンテンツ更新の作成、検査、およびテスト](/ja-jp/build/core-features/common/packaging/packaging-testing-updates.md)
- [MSIXVC2 暗号化モデル](/ja-jp/build/core-features/common/packaging/packaging-encryption-msixvc2.md)
- [MSIXVC2 パッケージング概要](/ja-jp/build/core-features/common/packaging/overviews/packaging-msixvc2-overview.md)
- [XBOX GDK タイトルのパッケージングとデプロイ](/ja-jp/build/core-features/common/packaging/index.md)
