Adoption du GDK
Chaque GDK n’est pris en charge que pendant un an. Bien que les jeux existants puissent continuer à être livrés avec un GDK retiré, cela peut poser problème pour les jeux livré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 disponibles uniquement dans les GDK les plus récents. 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 différentes bibliothèques du GDK peuvent dépendre de 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 régulièrement à un GDK publié plus récemment et toujours pris en charge.Intelligent Delivery
Les titres GaaS peuvent devenir de plus en plus volumineux au fil des années avec l’ajout de nouveau contenu. L’espace de stockage des joueurs peut être limité, ce qui peut les empêcher d’installer la dernière 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 leur offrent davantage de souplesse et de choix dans l’utilisation de leur espace de stockage, au-delà de la simple désinstallation de jeux entiers, et permettent aux joueurs de conserver davantage de jeux installés sur leurs appareils beaucoup plus longtemps. Avec Intelligent Delivery, les jeux peuvent tirer parti des fonctionnalités et recettes, en choisissant ce qui est installé par défaut et en permettant de gérer les parties du jeu à conserver installées et celles qu’ils peuvent vouloir supprimer parce qu’elles ne sont plus utilisées. Les titres GaaS peuvent choisir de placer leur nouveau contenu dans des fonctionnalités distinctes pour permettre ce type de gestion. L’idée est que le nouveau contenu soit un durable. Voici une suggestion qui facilite cette gestion :- Dans le fichier de disposition du jeu, faites correspondre chaque durable à une Feature.
- La Feature déclare un ou plusieurs Tags qui permettent d’indiquer quels blocs du fichier de disposition doivent être installés si le joueur possède une licence pour ce contenu.
- Assurez-vous que le fichier de disposition inclut une Recipe comportant 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 rapport avec les durables.
- Appeler XPackageEnumerateFeatures pour énumérer les fonctionnalités.
- Utiliser le Store ID retourné dans XPackageFeature pour vérifier la licence, demander plus de détails ou lancer des flux d’achat dans le Store.
Contenu téléchargeable
Au lieu de faire évoluer continuellement leur package de base, certains titres GaaS peuvent choisir d’évoluer au fil des années à l’aide de contenu téléchargeable (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 :- Monter ce DLC à l’aide de XPackageMountWithUiAsync.
- Utiliser LoadLibraryEx.
- Tous les DLC montés précédemment restent montés.
- Monter ce DLC à l’aide de XPackageMountWithUiAsync.
- Appeler XLaunchNewGames avec le chemin du DLC monté.
- Le processus de jeu existant est arrêté.
- Tous les DLC, à l’exception de la cible de XLaunchNewGames, sont démontés.
- Le lecteur G: continue de pointer vers la racine du package de base et non vers l’EXE nouvellement lancé.
Documentation de référence de l’API
- XPackage (contenu de l’API)
- Fonctions
- Structures
- xgame (contenu de l’API)
- Fonctions
