Mise à niveau de votre titre XBOX One Software Development Kit sur les consoles XBOX Series
Cette rubrique décrit comment un titre XBOX One Software Development Kit peut détecter qu’il s’exécute sur XBOX Series X|S. Le titre peut ensuite utiliser cette information pour offrir une expérience améliorée tout en continuant à fonctionner en mode de rétrocompatibilité. Les titres XBOX One Software Development Kit peuvent effectuer une mise à jour de contenu de leur jeu XBOX One afin de tirer parti d’environ 80 pour cent de la puissance des nouvelles consoles XBOX sans avoir, par exemple, à migrer vers le Microsoft Game Development Kit (GDK) ou vers le nouveau compilateur de shaders. Les titres XBOX One Software Development Kit ne peuvent pas accéder aux nouvelles fonctionnalités de la plateforme telles que DirectX 12 Ultimate. Cette rubrique décrit comment détecter que vous vous exécutez sur des consoles XBOX Series et décrit les limitations des titres XBOX One Software Development Kit exécutés en mode de rétrocompatibilité par rapport à un titre natif XBOX Series X|S généré à l’aide du Microsoft Game Development Kit (GDK). Cette rubrique explique également comment les développeurs peuvent activer des expériences supplémentaires lorsqu’ils s’exécutent sur des consoles XBOX Series. Ces fonctionnalités incluent Quick Resume, AutoHdr, AnisoBoost et VsyncMode. Cette rubrique ne s’applique pas aux titres qui utilisent déjà le Microsoft Game Development Kit (GDK). Nous exigeons que les titres XBOX One Microsoft Game Development Kit (GDK) publiés avant le Microsoft Game Development Kit (GDK) 2020.06 (le premier Microsoft Game Development Kit (GDK) approuvé pour les consoles XBOX Series) soient mis à niveau vers le Microsoft Game Development Kit (GDK) 2020.06 ou une version ultérieure.Introduction
Depuis la recovery 2020.06, les titres XBOX One Software Development Kit peuvent détecter s’ils s’exécutent sur XBOX Series X ou XBOX Series S par le biais d’une API officielle. Cela nécessite uniquement de simples mises à jour du code de votre titre et de son fichier AppxManifest, ainsi qu’un empaquetage à l’aide d’un programme d’installation des outils 2018.07 QFE. Bien qu’il n’y ait aucune exigence spécifique de mise à niveau du XBOX One Software Development Kit avec lequel vous avez initialement publié votre titre pour profiter des nouvelles fonctionnalités, l’allocation de plus de 5 Go de RAM nécessite que votre titre soit généré avec le XBOX One Software Development Kit 2017.06 ou une version ultérieure. Les titres XBOX One Software Development Kit peuvent être déployés sur un XBOX Series X Dev Kit de la manière habituelle, le kit étant réglé sur le mode « XBOX Series X » ou « Lockhart ». Le déploiement par push du titre sur le SSD NVMe de détail est essentiel pour les tests. Le lecteur plus rapide peut submerger le processeur de travail de décompression, provoquant des saccades d’images qui ne se produisent pas sur les consoles XBOX One. Vous ou votre éditeur devez tester minutieusement la mise à jour du titre sur un XBOX Series X Dev Kit fonctionnant en modes XBOX Series X et Lockhart, ainsi que sur des consoles XBOX One. L’équipe de rétrocompatibilité XBOX ne testera pas les mises à jour de contenu qui utilisent le mode « compatible XBOX Series X|S », qui est créé lorsque certains paramètres sont ajoutés au fichier AppxManifest des titres XBOX One Software Development Kit. 2018.07 est la dernière version du XBOX One Software Development Kit. Aucune fonctionnalité supplémentaire n’est prévue. Le support est désormais limité aux seules corrections de bogues critiques sans solution de contournement. Nous vous encourageons vivement à passer au Microsoft Game Development Kit (GDK) pour vos futurs titres.Marketing
Une mise à jour de contenu pour un titre XBOX One Software Development Kit ne peut pas utiliser toute la puissance ni l’ensemble des fonctionnalités des nouvelles consoles XBOX Series. Bien qu’un titre XBOX One Software Development Kit qui tire parti de ces options soit éligible au marketing et à la promotion autour des améliorations, il ne pourra prétendre à aucune image de marque spécifique applicable aux mises à jour de contenu natives XBOX Series X|S générées avec le Microsoft Game Development Kit (GDK).Recommandations
Nous recommandons vivement que les titres implémentent la mise à l’échelle dynamique de la résolution (DRS, Dynamic Resolution Scaling). Elle maximise la résolution tout en minimisant les images perdues. Cependant, vous devez veiller à ne pas être limité à tort par les limites de résolution de la XBOX One sur les nouvelles consoles XBOX Series. Vous devrez décider de ce que votre titre doit faire avec le processeur, le GPU, la mémoire et la vitesse d’E/S supplémentaires. Toutefois, nous recommandons de proposer au joueur les options suivantes.- Une option « Performance » avec une fréquence d’images doublée :
- Sachez toutefois que les titres XBOX One Software Development Kit exécutés sur XBOX Series X|S ne peuvent débloquer qu’environ 80 pour cent des performances du GPU. Tous les composants matériels n’ont pas vu leurs performances doubler ; par exemple, la bande passante.
- Cela signifie que la XBOX Series S peut raisonnablement exécuter des titres XBOX One S à une fréquence d’images doublée et peut-être à une résolution de 1080p. La XBOX Series X, en revanche, pourrait avoir du mal à égaler la résolution de la XBOX One X. Une certaine diminution de la résolution pourrait être nécessaire pour atteindre systématiquement le temps d’image.
- Une option « Résolution », éventuellement uniquement pour la XBOX Series S :
- La même fréquence d’images, mais 1080p devrait être un minimum atteignable, avec une résolution maximale de 1440p ou plus. Le titre peut utiliser des textures HD sur XBOX Series S et implémenter un affichage tête haute en 4K.
- La version XBOX One X de votre titre atteint peut-être déjà des résolutions suffisamment élevées pour qu’une option « Résolution » sur XBOX Series X n’ait que peu d’intérêt.
- Nous ne recommandons pas que le titre tente d’implémenter des résolutions supérieures à 4K.
- Une option « Améliorée » :
- Nous recommandons que la XBOX Series S fonctionne au minimum en 1080p, de sorte qu’une partie de la puissance GPU supplémentaire peut être consacrée à la résolution. Sur XBOX Series X, une petite partie de la puissance GPU supplémentaire peut permettre une résolution 4K fixe.
- Une part importante de la puissance supplémentaire disponible sur les nouvelles consoles XBOX Series peut être utilisée, par exemple, pour de multiples améliorations, des distances d’affichage plus longues, davantage de PNJ, des ombres de plus haute résolution ou davantage de lumières projetant des ombres, et un meilleur filtrage des textures.
Détection des consoles XBOX Series
Les titres XBOX One Software Development Kit deviennent « compatibles XBOX Series X|S » en ajoutant le paramètre suivant à leur fichier AppxManifest.XBOX One Software Development Kit 2017.06 et versions ultérieures
Lorsque le titre est « compatible XBOX Series X|S »,GetConsoleType() peut renvoyer trois valeurs qui ne sont pas présentes dans l’énumération CONSOLE_TYPE fournie par l’en-tête XDK. Vous devrez ajouter les définitions suivantes au code de votre titre.
XBOX One Software Development Kit antérieur à 2017.06
La fonctionGetConsoleType() et l’énumération CONSOLE_TYPE n’existaient pas avant le XBOX One Software Development Kit 2017.06. Les titres utilisant des XBOX One Software Development Kits plus anciens doivent utiliser GetProcAddress pour trouver la fonction GetConsoleType() dans kernelx.dll. Voici un exemple.
GetProcAddress n’échoue que sur les consoles XBOX One, jamais sur les consoles XBOX Series S ou XBOX Series X.
Dans certains cas graphiques spécifiques, un titre doit connaître la console réelle sur laquelle il s’exécute, ainsi que le mode de compatibilité actif sur cette console. Dans ces cas, le titre peut supposer qu’une console XBOX Series S s’exécute en mode de compatibilité XBOX One S, et qu’une console XBOX Series X s’exécute en mode de compatibilité XBOX One X.
Distribution de ressources propres à chaque console à l’aide d’Intelligent Delivery
Intelligent Delivery permet aux titres d’attribuer des regroupements de ressources, appelés chunks, à des consoles spécifiques à l’aide de balises dans un fichier layout.xml, comme illustré dans l’exemple suivant.Devices="Xbox-Durango" seront installées sur les consoles XBOX Series S. Les ressources étiquetées Devices="Xbox-Scorpio" seront distribuées aux consoles XBOX Series X.
Si vous souhaitez que votre titre ait accès aux ressources propres à Scorpio sur XBOX Series S, vous pouvez mettre à jour la disposition du titre comme dans l’exemple suivant.
Xbox-Lockhart et Xbox-Anaconda nécessite les outils mis à jour du XBOX One Software Development Kit 2018.07 tools QFE15.
Performances, fonctionnalités et ressources lors de l’exécution d’un titre XBOX One Software Development Kit sur les consoles XBOX Series
Les titres XBOX One Software Development Kit s’exécutent en mode de rétrocompatibilité. Par conséquent, ils n’ont pas accès aux éléments suivants :- Fonctionnalités DirectX 12 Ultimate :
- Variable Rate Shading (VRS)
- DirectX Raytracing (DXR) ou les intrinsèques de lancer de rayons
- Sampler Feedback for Streaming (SFS)
- Toutes les optimisations propres à Navi2 (par exemple, les suivantes) :
- Deferred primitive batch binning
- fp16
- wave32
- Format de rendu 999e5
- Modes de tuile optimaux pour XBOX Series X et XBOX Series S
- DirectStorage et l’unité de décompression mémoire (Memory Decompression Unit)
TitleMemory de l’AppxManifest. Les titres « compatibles XBOX Series X|S » reçoivent automatiquement 7,5 Go sur XBOX Series S et 9 Go sur XBOX Series X, à partir de la recovery 2020.10.
Une méthode permettant d’augmenter la limite sur les consoles XBOX Series S et XBOX Series X via l’AppxManifest avait été décrite précédemment, mais elle n’est plus nécessaire. La prise en charge des paramètres TitleMemory propres à XBOX Series X|S a été supprimée dans le XBOX One Software Development Kit Tools 2018.07 QFE15. Si des paramètres de mémoire propres à XBOX Series X|S subsistent dans l’AppxManifest, le système d’exploitation les ignore. Toutefois, l’outil makepkg signale une erreur. Vous devez supprimer ces paramètres avant l’empaquetage.
Ni la console XBOX Series S ni la console XBOX Series X ne disposent d’ESRAM. Lors de l’exécution sur ces consoles, il est important que les titres empruntent le chemin de code XBOX One X, en évitant les copies qui étaient nécessaires pour l’ESRAM mais qui sont redondantes sur les nouvelles consoles XBOX. Vous souhaiterez peut-être continuer à utiliser l’aliasing des cibles de rendu, en particulier sur XBOX Series S.
Fonctions dépréciées
GetGpuHardwareConfigurationX est dépréciée et ne doit pas être utilisée. Les titres doivent utiliser GetConsoleType à la place.
Tests
Vous ou votre éditeur êtes responsable du test de la mise à jour du titre. Lors des tests de compatibilité, nous vous encourageons vivement à utiliser la dernière préversion de la recovery 2020.10 (ou ultérieure). Nous recommandons une partie complète, exécutée depuis le SSD NVMe de détail. Avec des performances de processeur et de GPU nettement améliorées, il est possible que des conditions de concurrence jamais rencontrées sur les consoles XBOX One soient révélées. Il est probable que le SSD NVMe fournisse les données suffisamment rapidement pour que la décompression par le processeur devienne le goulot d’étranglement lors du chargement depuis le disque dur. Vous devez déployer votre titre par push sur le SSD NVMe de détail et vérifier que la décompression par le processeur ne provoque pas de pics ni d’images perdues. La vitesse de lecture des fichiers peut varier considérablement selon que le titre s’exécute sur le SSD NVMe interne ou sur un lecteur flash USB 3.0 externe.Modes de tuile
La XBOX Series S utilise les modes de tuile de la XBOX One S ; la XBOX Series X utilise les modes de tuile de la XBOX One X. Le mode de tuile 1D que nous recommandons pour les textures est le même sur les deux consoles XBOX One. Par conséquent, les textures empaquetées avec un tuilage 1D n’ont pas besoin d’être modifiées lorsqu’elles s’exécutent sur des consoles XBOX Series en mode de rétrocompatibilité.Outils
En général, vous n’avez besoin que d’un XBOX One Software Development Kit Tools mis à jour pour empaqueter votre titre. Nous avons publié le XBOX One Software Development Kit 2018.07 QFE14. Il contient un programme d’installation des outils mis à jour uniquement pour fournir les outils nécessaires aux fonctionnalités de base des consoles XBOX Series dans les paramètresAppxManifest. Comme mentionné précédemment, la version des outils 2018.07 QFE15 contient la mise à jour permettant d’activer les fonctionnalités d’installation intelligente pour les consoles XBOX Series.
Installez le dernier QFE des outils afin de disposer de la version actuelle de makepkg. Elle peut interpréter les paramètres de manifeste « compatibles XBOX Series X|S ».
Captures GPU à l’aide de PIX
Pour utiliser PIX pour les captures GPU sur un XBOX Series X Dev Kit, vous devez effectuer la capture avec le PIX du XBOX One Software Development Kit. Toutefois, la lecture doit se faire sur un PIX du Microsoft Game Development Kit (GDK). Pour lire ces captures, utilisez le Microsoft Game Development Kit (GDK) d’août (2020.08) ou une version ultérieure.Captures du processeur à l’aide de PIX
Pour utiliser PIX pour les captures du processeur sur un XBOX Series X Dev Kit, vous pouvez utiliser la même version 1807 de PIX que celle installée lors de la mise à jour du XBOX One Software Development Kit Tools permettant l’empaquetage du titre.Paramètres supplémentaires
Un titre peut également être configuré pour tirer parti de certaines fonctionnalités XBOX Series X|S, qu’il soit compatible XBOX Series X|S ou non. Quatre options de remplacement sont disponibles dans le manifeste :AnisoBoost et VsyncMode
Le filtrage anisotrope des textures est forcé à 16x lors de l’exécution des titres en mode de rétrocompatibilité. De plus, la présentation des images est automatiquement synchronisée sur le retour vertical (vertical blank). Les titres qui appellentPresent() avec SyncInterval=0 se comportent comme s’ils avaient passé SyncInterval=1.
La désactivation du filtrage anisotrope forcé peut être particulièrement importante pour les titres qui cherchent à doubler leur fréquence d’images. De plus, les titres peuvent spécifier VsyncMode="double" pour doubler la fréquence normale de présentation. L’effet de ces modes est résumé dans le tableau suivant.
†Selon la prise en charge de l’écran et la configuration du système
Le mode
double permet des fréquences d’images plus élevées sans modification du code du titre (bien qu’une implémentation correcte nécessite souvent certaines modifications). De plus, le mode double active la prise en charge de la présentation à 120 Hz, sous réserve de certaines limitations. L’écran doit prendre en charge une fréquence d’actualisation de 120 Hz, et la console doit être configurée pour une sortie à 120 Hz dans la section Options TV et affichage des Paramètres. Si l’une de ces conditions n’est pas remplie, la fréquence de présentation du titre reste limitée à 60 Hz. Un titre peut déduire la fréquence de présentation actuelle en appelant DXGIXGetFrameStatistics() et en comparant des images successives (plus précisément les champs GPUTimeVSync et VSyncCount).
AutoHdr
Bien que la plupart des titres existants du catalogue aient l’auto-HDR activé au niveau de la plateforme et du service, les titres intégrant le catalogue après le 1er novembre 2020 ont l’auto-HDR désactivé par défaut.AutoHdr="true" remplace ce comportement et permet au titre de s’exécuter avec l’auto-HDR activé, à condition que le paramètre de la console soit également activé.
EnableQuickResume
Comme pour AutoHdr, de nombreux titres rétrocompatibles existants du catalogue ont Quick Resume activé au niveau de la plateforme. Pour les titres dont cette fonctionnalité n’est pas activée par défaut,EnableQuickResume="true" remplace ce comportement, activant Quick Resume sur les consoles XBOX Series.
Quick Resume dépend de la capacité du titre à prendre correctement en charge la suspension et la reprise, et permet de restaurer et de reprendre rapidement le titre, ce qui facilite le retour au jeu.