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

# Prise en charge des jeux en tant que service (GaaS)

> Prise en charge des jeux en tant que service (GaaS)

Au lieu d'être des jeux autonomes publiés à un moment précis, certains jeux adoptent un modèle
dans lequel ils sont traités comme un service, recevant des saisons ou des mises à jour qui les
gardent frais pendant de nombreuses années. Ce modèle s'appelle « jeux en tant que service » (GaaS). Le GDK
prend bien en charge ce modèle. Ce document présente un aperçu des pratiques exemplaires à considérer
lorsque vous utilisez le GDK pour publier un jeu en tant que service.

## Adoption du GDK

Chaque GDK n'est pris en charge que pendant un an. Bien que les jeux existants puissent continuer à être publiés avec un GDK
retiré, cela peut poser problème pour les jeux publiés en tant que service. Les jeux qui introduisent de nouvelles fonctionnalités après
le retrait d'un GDK peuvent rencontrer des bogues ou des problèmes d'intégration qui n'avaient pas été observés dans les cas
d'utilisation antérieurs du GDK. De même, le jeu peut vouloir tirer parti de fonctionnalités offertes uniquement dans les plus récents
GDK publiés.

Un jeu doit être généré avec un seul GDK. Les jeux ne peuvent pas mélanger des composants d'un GDK avec ceux d'un autre. Sur
console, le jeu n'inclut qu'un seul Game OS, et les diverses bibliothèques du GDK peuvent avoir
des dépendances envers ce système d'exploitation sous-jacent. Sur PC, une seule version du runtime de jeu est chargée dans
le processus du jeu, ce qui crée un environnement « à version unique » semblable à celui de la console.

Il est recommandé que les titres GaaS passent périodiquement à un GDK publié plus récemment et qui est toujours
pris en charge.

## Intelligent Delivery

Les titres GaaS peuvent devenir de plus en plus volumineux au fil des ans avec l'ajout de nouveau contenu. Les joueurs
peuvent disposer d'un espace de stockage limité, ce qui pourrait nuire à leur capacité d'installer la plus
récente mise à jour du jeu. Bien que les joueurs puissent gérer eux-mêmes leur espace de stockage,
les jeux conçus avec [Intelligent Delivery](/fr-CA/build/core-features/common/packaging/overviews/intelligentdelivery) offrent au joueur plus de souplesse et
de choix dans l'utilisation de son espace de stockage, au-delà de la désinstallation complète de jeux, et permettent
aux joueurs de garder plus de jeux installés sur leurs appareils beaucoup plus longtemps.

Grâce à Intelligent Delivery, les jeux peuvent tirer parti des
[fonctionnalités et recettes](/fr-CA/build/core-features/common/packaging/intelligentdelivery-features-recipes), en choisissant ce qui est installé par
défaut et en ayant la possibilité de gérer les parties du jeu qu'ils veulent garder installées
et celles qu'ils voudront peut-être supprimer parce qu'elles ne sont plus utilisées.

Les titres GaaS pourraient choisir de placer leur nouveau contenu dans des fonctionnalités distinctes afin de permettre ce type de
gestion. L'idée est que le nouveau contenu soit un [durable](https://learn.microsoft.com/build/store/commerce/fundamentals/xstore-dwobs). Voici une suggestion
qui faciliterait cette gestion :

1. Dans le fichier de disposition du jeu, faites correspondre chaque durable à une **Feature**.
2. La **Feature** déclarera une ou plusieurs **Tags** pouvant servir à indiquer quels
   blocs du fichier de disposition doivent être installés si le joueur détient une licence pour ce contenu.
3. Assurez-vous que le fichier de disposition comprend une **Recipe** ayant un enfant Store ID. Cette recette
   doit référencer une seule fonctionnalité correspondant au même Store ID. L'ajout de la recette
   garantit que, si le joueur a déjà acheté ce contenu, celui-ci sera automatiquement
   installé.
   > \[!NOTE]
   > Il peut exister d'autres fonctionnalités et recettes qui n'ont aucun lien avec les durables.

En suivant cette recommandation, les jeux peuvent ensuite :

1. Appeler [XPackageEnumerateFeatures](/fr-CA/reference/system/xpackage/functions/xpackageenumeratefeatures) pour énumérer les fonctionnalités.
2. Utiliser le Store ID retourné dans la structure [XPackageFeature](/fr-CA/reference/system/xpackage/structs/xpackagefeature) pour vérifier la
   licence, obtenir plus de détails ou appeler les flux d'achat du Store.

Tous les jeux de plus de 40 Go devraient sérieusement envisager d'utiliser
[Intelligent Delivery](/fr-CA/build/core-features/common/packaging/overviews/intelligentdelivery). Les jeux peuvent envisager d'utiliser des durables pour prendre en charge le modèle GaaS.

## Contenu téléchargeable

Au lieu de faire évoluer continuellement leur package de base, certains titres GaaS peuvent choisir d'évoluer au fil
des ans au moyen de [contenu téléchargeable (DLC)](/fr-CA/build/core-features/common/packaging/packaging-downloadable-content-dlc). Les jeux peuvent choisir
de placer des ressources ou du code exécutable dans ce DLC. Pour le code exécutable, deux approches sont
possibles : les DLL et les EXE.

Si le jeu place des DLL dans son DLC, il peut :

1. Monter ce DLC à l'aide de [XPackageMountWithUiAsync](/fr-CA/reference/system/xpackage/functions/xpackagemountwithuiasync).
2. Utiliser [LoadLibraryEx](https://learn.microsoft.com/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryexa).
3. Tous les DLC montés précédemment restent montés.

Si le jeu place un EXE dans son DLC, il peut :

1. Monter ce DLC à l'aide de [XPackageMountWithUiAsync](/fr-CA/reference/system/xpackage/functions/xpackagemountwithuiasync).
2. Appeler [XLaunchNewGames](/fr-CA/reference/system/xgame/functions/xlaunchnewgame) avec le chemin du DLC monté.
3. Le processus de jeu existant sera arrêté.
4. Tous les DLC, sauf la cible de **XLaunchNewGames**, seront démontés.
5. Le lecteur **G:** continuera de pointer vers la racine du package de base et non vers l'EXE
   nouvellement lancé.

Il est recommandé que les jeux qui placent du code exécutable dans leur DLC accèdent à ce code au moyen de
[LoadLibraryEx](https://learn.microsoft.com/windows/win32/api/libloaderapi/nf-libloaderapi-loadlibraryexa).

## Documentation de référence des API

* [XPackage (contenu de l'API)](/fr-CA/reference/system/xpackage/xpackage_members)
  * Fonctions
    * [XPackageEnumerateFeatures](/fr-CA/reference/system/xpackage/functions/xpackageenumeratefeatures)
    * [XPackageMountWithUiAsync](/fr-CA/reference/system/xpackage/functions/xpackagemountwithuiasync)
  * Structures
    * [XPackageFeature](/fr-CA/reference/system/xpackage/structs/xpackagefeature)
* [xgame (contenu de l'API)](/fr-CA/reference/system/xgame/xgame_members)
  * Fonctions
    * [XLaunchNewGames](/fr-CA/reference/system/xgame/functions/xlaunchnewgame)

## Voir aussi

[Contenu téléchargeable (DLC)](/fr-CA/build/core-features/common/packaging/packaging-downloadable-content-dlc)
[Fonctionnalités et recettes](/fr-CA/build/core-features/common/packaging/intelligentdelivery-features-recipes)
[Intelligent Delivery](/fr-CA/build/core-features/common/packaging/overviews/intelligentdelivery)
[XPackageMountWithUiAsync](/fr-CA/reference/system/xpackage/functions/xpackagemountwithuiasync)


## Related topics

- [XPackageEnumerateFeatures](/fr-CA/reference/system/xpackage/functions/xpackageenumeratefeatures.md)
- [XPackageMountWithUiAsync](/fr-CA/reference/system/xpackage/functions/xpackagemountwithuiasync.md)
- [XPackageFeature](/fr-CA/reference/system/xpackage/structs/xpackagefeature.md)
- [XLaunchNewGame](/fr-CA/reference/system/xgame/functions/xlaunchnewgame.md)
- [Prise en charge multiplateforme de XUser](/fr-CA/build/core-features/common/user/xuser-crossplatform.md)
