> ## 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 형식에서는 콘텐츠 업데이트가 고정된 4KB 블록 경계에서 동작하며, 팩 파일 내의 파일 레이아웃, 청크 순서, 정렬에 민감합니다. MSIXVC2에서는 콘텐츠 업데이트가 콘텐츠 기반 세분화를 사용하여 바이트 수준에서 변경 사항을 추적하므로, MSIXVC에서 업데이트 크기를 부풀리는 정렬 제약 조건이 제거됩니다.

<Note>
  기존 MSIXVC 형식에 특정한 콘텐츠 업데이트 가이드는 [콘텐츠 업데이트 모범 사례](/build/core-features/common/packaging/packaging-updates)를 참조하세요.
</Note>

## MSIXVC2 콘텐츠 업데이트 작동 방식

### 콘텐츠 기반 세분화

MSIXVC2는 고정 블록 경계가 아닌 실제 콘텐츠를 기반으로 파일 데이터를 가변 크기 세그먼트로 나눕니다. 각 세그먼트는 그 콘텐츠의 해시로 식별됩니다.

이 방식이 의미하는 바는 다음과 같습니다.

* **파일을 청크 간에 이동해도 재다운로드가 트리거되지 않습니다.** 파일의 콘텐츠 해시는 어떤 청크에 속하든 동일하게 유지됩니다.
* **청크 내에서 파일 순서를 재정렬해도 재다운로드가 트리거되지 않습니다.** 세그먼트 경계는 위치가 아닌 콘텐츠에 의해 결정됩니다.
* **청크 순서를 재정렬해도 재다운로드가 트리거되지 않습니다.** 청크 레이아웃은 데이터의 물리적 세분화에 영향을 미치지 않는 논리적 개념입니다.
* **데이터를 삽입하거나 제거해도 연쇄 효과가 없습니다.** 고정 블록 시스템과 달리 작은 삽입이 이후의 모든 블록을 이동시키고 변경되지 않은 콘텐츠의 재다운로드를 강제하지 않습니다.

### 업로드 시 중복 제거

모든 세그먼트는 업로드 전에 해시됩니다. 업로드 프로세스는 이전 버전에서 이미 존재하는 세그먼트가 무엇인지 확인하기 위해 CDN에 쿼리합니다. 새 세그먼트나 변경된 세그먼트만 업로드되어 플레이어에게 전달됩니다. 이 중복 제거는 자동으로 발생하며, 개발자의 조치가 필요하지 않습니다.

### 세그먼트별 암호화 및 압축

각 세그먼트는 독립적으로 압축되고 암호화됩니다. 이는 하나의 세그먼트를 업데이트해도 다른 세그먼트에 영향을 주지 않도록 보장합니다.

## MSIXVC에서 변경되는 사항

MSIXVC 콘텐츠 업데이트의 다음 정렬 및 레이아웃 제약 조건은 MSIXVC2에는 **적용되지 않습니다**.

| MSIXVC 제약 조건                    | MSIXVC2 동작                          |
| ------------------------------- | ----------------------------------- |
| 팩 파일 내에서 4KB 경계에 자산 정렬          | 필요하지 않음. 콘텐츠 기반 세분화는 정렬에 독립적입니다.    |
| 청크 ID를 변경하거나 파일을 청크 간에 이동하지 않기  | 청크 레이아웃 변경이 무료입니다. 재다운로드 페널티가 없습니다. |
| 청크, 파일, 자산의 순서를 재정렬하지 않기        | 재정렬이 무료입니다. 세그먼트 해시가 콘텐츠 기반입니다.     |
| 데이터를 효율적으로 이동할 수 없음             | 데이터 이동이 콘텐츠 해싱에 의해 자연스럽게 처리됩니다.     |
| 게임 크기에 따라 확장되는 고정 최소 해시 트리 오버헤드 | 최소한의 오버헤드; 부분 다운로드 가능.              |

<Tip>
  현재 안정적인 파일 순서 유지, 자산 레이아웃 동결, 빌드 파이프라인에서 4KB 정렬을 세심하게 관리하는 데 노력을 기울이고 있다면 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. `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

- [콘텐츠 업데이트 모범 사례](/ko/build/core-features/common/packaging/packaging-updates.md)
- [콘텐츠 업데이트 만들기, 검토 및 테스트](/ko/build/core-features/common/packaging/packaging-testing-updates.md)
- [MSIXVC2 암호화 모델](/ko/build/core-features/common/packaging/packaging-encryption-msixvc2.md)
- [MSIXVC2 패키징 개요](/ko/build/core-features/common/packaging/overviews/packaging-msixvc2-overview.md)
- [제품 변경 및 콘텐츠 업데이트](/ko/publishing/game-publishing/publishing-processes/managed-creators/publishing-processes-post-release-lifecycle.md)
