> ## 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.

# Games-as-a-Service(GaaS) 지원

> Games-as-a-Service(GaaS) 지원

특정 시점에 출시되는 독립 실행형 게임 대신, 일부 게임은 시즌이나 업데이트를 통해 여러 해 동안
콘텐츠를 새롭게 유지하는 서비스로 취급되는 모델로 전환되고 있습니다. 이 모델을
Games-as-a-Service(GaaS)라고 합니다. GDK는 이 모델을 잘 지원합니다. 이 문서는 GDK를 사용하여 게임을
서비스로 게시할 때 고려해야 할 모범 사례에 대한 개요를 제공합니다.

## GDK 도입

각 GDK는 1년 동안만 지원됩니다. 기존 게임은 은퇴한 GDK를 사용해 계속 출시할 수 있지만,
서비스로 출시되는 게임에는 문제가 될 수 있습니다. GDK가 은퇴한 후 새로운 기능을 도입하는 게임은
이전 GDK 사용 사례에서 보지 못했던 버그나 통합 문제에 부딪힐 수 있습니다. 마찬가지로 게임은
출시되고 있는 최신 GDK에서만 발견되는 기능을 활용하고 싶을 수도 있습니다.

게임은 단일 GDK를 대상으로 빌드해야 합니다. 게임은 한 GDK의 구성 요소를 다른 GDK의 구성 요소와 혼합할 수 없습니다.
콘솔에서는 게임에 단일 Game OS만 포함되며 다양한 GDK 라이브러리는 그 기본 OS에 의존성을
가질 수 있습니다. PC에서는 게이밍 런타임의 한 버전만 게임 프로세스에 로드되어, 콘솔에서
보이는 것과 유사한 "단일 버전" 환경이 만들어집니다.

GaaS 타이틀은 여전히 지원되는 보다 최근에 출시된 GDK로 주기적으로 업데이트하는 것이
권장됩니다.

## Intelligent delivery

GaaS 타이틀은 새 콘텐츠 도입으로 인해 시간이 지나면서 점점 더 커질 수 있습니다. 게이머는
저장 공간이 제한적일 수 있습니다. 이는 게임의 최신 업데이트를 설치할 수 있는 능력에 영향을 미칠 수 있습니다.
게이머는 자신의 저장 공간을 관리할 수 있지만,
[Intelligent Delivery](/build/core-features/common/packaging/overviews/intelligentdelivery)로 빌드된 게임은 게이머가 게임 전체를 통째로
제거하는 것 이상으로 저장 공간을 사용하는 방법에서 더 많은 유연성과 선택권을 제공하며,
게이머가 훨씬 더 오랫동안 장치에 더 많은 게임을 설치된 상태로 유지할 수 있게 해줍니다.

Intelligent Delivery를 사용하면 게임은 [기능과 레시피](/build/core-features/common/packaging/intelligentdelivery-features-recipes)를
활용하여 기본적으로 무엇을 설치할지 선택하고, 게임의 어떤 부분을 설치된 상태로 유지하고
어떤 부분을 더 이상 사용하지 않아 제거하고 싶은지 관리할 수 있는 능력을 게임에 제공합니다.

GaaS 타이틀은 이러한 종류의 관리를 활성화하기 위해 새 콘텐츠를 별도의 기능에 넣을 수 있습니다. 아이디어는
새 콘텐츠가 [지속형(durable)](https://learn.microsoft.com/build/store/commerce/fundamentals/xstore-dwobs)이라는 것입니다. 다음은 이를 더 쉽게 관리할 수 있게
해주는 한 가지 제안입니다.

1. 게임의 레이아웃 파일에서 각 지속형이 **Feature**에 대응하도록 만듭니다.
2. **Feature**는 게이머가 해당 콘텐츠에 대한 라이선스가 있으면 레이아웃 파일의
   어떤 청크가 설치되어야 하는지를 나타내는 데 사용할 수 있는 하나 이상의 **Tag**를 선언합니다.
3. 레이아웃 파일에 Store ID 자식이 있는 **Recipe**가 포함되어 있는지 확인합니다. 이 recipe는
   동일한 Store ID에 해당하는 단일 기능을 참조해야 합니다. recipe를 추가하면 게이머가 이전에
   이 콘텐츠를 구매한 경우 자동으로 설치되도록 보장됩니다.
   > \[!NOTE]
   > 지속형과 관련이 없는 다른 기능과 recipe가 있을 수 있습니다.

이 권장 사항을 따르면 게임은 다음을 할 수 있습니다.

1. [XPackageEnumerateFeatures](/reference/system/xpackage/functions/xpackageenumeratefeatures)를 호출하여 기능을 열거합니다.
2. [XPackageFeature](/reference/system/xpackage/structs/xpackagefeature)에 있는 반환된 Store ID를 사용하여
   라이선스를 확인하고, 자세한 정보를 쿼리하거나, 스토어 구매 흐름을 호출합니다.

40GB보다 큰 모든 게임은 [Intelligent Delivery](/build/core-features/common/packaging/overviews/intelligentdelivery) 사용을
강력히 고려해야 합니다. 게임은 GaaS를 지원하기 위해 지속형 사용을 고려할 수 있습니다.

## 다운로드 가능 콘텐츠

기본 패키지를 지속적으로 발전시키는 대신, 일부 GaaS 타이틀은 [다운로드 가능 콘텐츠(DLC)](/build/core-features/common/packaging/packaging-downloadable-content-dlc)를 사용하여
몇 년에 걸쳐 발전시키는 방법을 선택할 수 있습니다. 게임은 그 DLC에 자산이나 실행 코드를 넣는 것을 선택할
수 있습니다. 실행 코드를 사용하면 두 가지 가능한 경로가 있습니다. DLL과 EXE입니다.

게임이 DLC에 DLL을 넣으면 다음을 할 수 있습니다.

1. [XPackageMountWithUiAsync](/reference/system/xpackage/functions/xpackagemountwithuiasync)를 사용하여 그 DLC를 마운트합니다.
2. [LoadLibraryEx](https://learn.microsoft.com/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryexa)를 사용합니다.
3. 이전에 마운트된 모든 DLC는 마운트된 상태로 유지됩니다.

게임이 DLC에 EXE를 넣으면 다음을 할 수 있습니다.

1. [XPackageMountWithUiAsync](/reference/system/xpackage/functions/xpackagemountwithuiasync)를 사용하여 그 DLC를 마운트합니다.
2. 마운트된 DLC의 경로를 사용하여 [XLaunchNewGames](/reference/system/xgame/functions/xlaunchnewgame)를 호출합니다.
3. 기존 게임 프로세스가 종료됩니다.
4. **XLaunchNewGames**의 대상을 제외한 모든 DLC가 마운트 해제됩니다.
5. **G:** 드라이브는 새로 실행된 EXE가 아니라 기본 패키지의 루트를 계속 가리킵니다.

DLC에 실행 코드를 넣는 게임은 [LoadLibraryEx](https://learn.microsoft.com/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryexa)를 사용하여
해당 실행 코드에 액세스하는 것이 권장됩니다.

## 참조 API 문서

* [XPackage(API 콘텐츠)](/reference/system/xpackage/xpackage_members)
  * Functions
    * [XPackageEnumerateFeatures](/reference/system/xpackage/functions/xpackageenumeratefeatures)
    * [XPackageMountWithUiAsync](/reference/system/xpackage/functions/xpackagemountwithuiasync)
  * Structures
    * [XPackageFeature](/reference/system/xpackage/structs/xpackagefeature)
* [xgame(API 콘텐츠)](/reference/system/xgame/xgame_members)
  * Functions
    * [XLaunchNewGames](/reference/system/xgame/functions/xlaunchnewgame)

## 참고 항목

[다운로드 가능 콘텐츠(DLC)](/build/core-features/common/packaging/packaging-downloadable-content-dlc)
[기능과 레시피](/build/core-features/common/packaging/intelligentdelivery-features-recipes)
[Intelligent Delivery](/build/core-features/common/packaging/overviews/intelligentdelivery)
[XPackageMountWithUiAsync](/reference/system/xpackage/functions/xpackagemountwithuiasync)


## Related topics

- [XLaunchNewGame](/ko/reference/system/xgame/functions/xlaunchnewgame.md)
- [XPackageMountWithUiAsync](/ko/reference/system/xpackage/functions/xpackagemountwithuiasync.md)
- [XPackageFeature](/ko/reference/system/xpackage/structs/xpackagefeature.md)
- [XPackageEnumerateFeatures](/ko/reference/system/xpackage/functions/xpackageenumeratefeatures.md)
- [판매 후 수익화](/ko/publishing/game-publishing/publishing-processes/managed-creators/publishing-processes-post-sale-monetization.md)
