XGameRuntimeInitializeWithOptions
Cette API initialise le Gaming Runtime en prenant un pointeur vers une structure d’options qui peut modifier la façon dont le runtime est initialisé. Si les jeux doivent généralement continuer à utiliser la méthode existante XGameRuntimeInitialize, certains moteurs de jeu ou middlewares peuvent nécessiter une initialisation plus configurable.Syntaxe
Paramètres
options _In_Type : XGameRuntimeOptions* Pointeur vers une structure d’options qui peut modifier la façon dont le runtime est initialisé.
Valeur de retour
Type : HRESULT Retourne S_OK en cas de réussite ; sinon, retourne un code d’erreur. Pour obtenir la liste des codes d’erreur, consultez Codes d’erreur. Si la fonction échoue parce que la bibliothèque du Gaming Runtime (xgameruntime.dll) est introuvable, la valeur de retour est définie sur E_GAMERUNTIME_DLL_NOT_FOUND.Remarques
L’exemple suivant montre comment un éditeur de jeu ou un autre middleware peut être utilisé pour charger et exécuter plusieurs jeux dans le même processus. Il suppose l’existence du code externe suivant :- Une classe appelée « GameEngine » qui prend le chemin d’accès aux fichiers du jeu et démarre le jeu. Il s’agit du même moteur que celui utilisé au moment de l’exécution par le « lecteur » du moteur de jeu.
- Une instance de cette classe est stockée en tant que variable globale dans l’éditeur et représente le jeu actuel.
Le runtime comporte deux couches d’initialisation : XGameRuntime.lib, à laquelle un composant est lié, et XGameRuntime.dll, qui est l’implémentation réelle du runtime. Lorsque XGameRuntime.lib est initialisée, elle charge XGameRuntime.dll et l’initialise. L’initialisation de la DLL utilise un décompte de références, ce qui permet à plusieurs bibliothèques de s’y connecter. L’initialisation de la bibliothèque n’utilise pas de décompte de références : les appels multiples pour l’initialiser sont ignorés (toutefois, si XGameRuntimeInitializeWithOptions est appelée, les options fournies sont comparées aux options actuellement initialisées et E_GAMERUNTIME_OPTIONS_MISMATCH est retourné si elles diffèrent). Chaque API d’initialisation présente le comportement suivant :
- XGameRuntimeInitialize : si la DLL du runtime a déjà été initialisée par un autre appel, cette API « s’aligne » sur les options d’initialisation fournies lors de cet autre appel. S’il s’agit de la première initialisation du runtime, les valeurs par défaut sont utilisées pour les options d’initialisation. Les jeux doivent toujours initialiser le runtime à l’aide de cette API.
- XGameRuntimeInitializeWithOptions : tous les composants qui initialisent le runtime doivent transmettre les mêmes options s’ils utilisent cette méthode. Si le runtime a été précédemment initialisé avec un autre ensemble d’options, cet appel échoue avec E_GAMERUNTIME_OPTIONS_MISMATCH. Les composants middleware, comme un éditeur de jeu Unity, peuvent utiliser cette API pour initialiser le runtime avec un GameConfig personnalisé avant de démarrer le jeu. Le runtime peut être réinitialisé avec des options différentes s’il est d’abord entièrement désinitialisé. Cela nécessite que tous les modules ayant appelé l’une des méthodes XGameRuntimeInitialize* appellent XGameRuntimeUninitialize.
Il existe également deux couches ici. La désinitialisation de XgameRuntime.lib désinitialise la bibliothèque, puis libère sa référence sur la DLL. Les appels de désinitialisation suivants à la bibliothèque sont ignorés jusqu’à ce que la bibliothèque soit réinitialisée. La désinitialisation de la DLL décrémente le décompte de références. Lorsqu’il atteint zéro, la DLL est désinitialisée. Ce comportement reste inchangé. La désinitialisation de la DLL peut échouer s’il reste des objets runtime actifs lorsque le décompte de références de la DLL atteint zéro. Dans ce cas, le runtime :
- Ne décharge pas la DLL du runtime, car cela pourrait provoquer un plantage.
- Stocke l’erreur afin de la retourner lors d’un appel ultérieur à XGameRuntimeInitialize*
- Un XErrorReport est émis.
Configuration requise
En-tête : XGameRuntimeInit.h Bibliothèque : xgameruntime.lib Plateformes prises en charge : Windows, consoles de la famille XBOX One et consoles XBOX SeriesVoir aussi
XGameRuntimeUninitializeXGameRuntimeInitialize
XGameRuntimeInit
Développement de nouveaux titres avec le Gaming Runtime
