XGameRuntimeInitializeWithOptions
Cette API initialise le runtime de jeu en prenant un pointeur vers une structure d’options qui peut modifier la façon dont le runtime est initialisé. Bien que les jeux doivent généralement continuer à utiliser la méthode existante XGameRuntimeInitialize, certains moteurs de jeu ou intergiciels peuvent avoir besoin d’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 intergiciel peut être utilisé pour charger et exécuter plusieurs jeux dans le même processus. Il suppose le 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 comme 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 a 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. Si c’est la première fois que le runtime est initialisé, des 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 déjà été initialisé avec un autre ensemble d’options, cet appel échoue avec E_GAMERUNTIME_OPTIONS_MISMATCH. Les composants intergiciels, 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 complètement désinitialisé. Pour cela, tous les modules qui ont appelé l’une des méthodes XGameRuntimeInitialize* doivent appeler XGameRuntimeUninitialize.
Il y a également deux couches ici. La désinitialisation de XgameRuntime.lib désinitialise la bibliothèque et libère sa référence sur la DLL. Les appels de désinitialisation subséquents à 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 le même. La désinitialisation de la DLL peut échouer s’il reste des objets du 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 à l’aide du Gaming Runtime
