Skip to main content

XGameRuntimeInitializeWithOptions

Esta API inicializa el entorno de ejecución del juego y toma un puntero a una estructura de opciones que puede modificar la forma en que se inicializa el entorno de ejecución. Aunque los juegos normalmente deben seguir utilizando el método existente XGameRuntimeInitialize, algunos motores de juego o middleware pueden necesitar una inicialización más configurable.

Sintaxis

Parámetros

options _In_
Tipo: XGameRuntimeOptions*
Puntero a una estructura de opciones que puede modificar la forma en que se inicializa el entorno de ejecución.

Valor devuelto

Tipo: HRESULT Devuelve S_OK si se realiza correctamente; de lo contrario, devuelve un código de error. Para obtener una lista de códigos de error, consulte Códigos de error. Si la función falla porque no se encontró la biblioteca de Gaming Runtime (xgameruntime.dll), el valor devuelto se establece en E_GAMERUNTIME_DLL_NOT_FOUND.

Comentarios

En el ejemplo siguiente se muestra cómo se puede usar un editor de juegos u otro middleware para cargar y ejecutar varios juegos en el mismo proceso. Se presupone el siguiente código externo:
  • Una clase denominada “GameEngine” que toma la ruta de acceso a los archivos del juego e inicia el juego. Este es el mismo motor que usa en tiempo de ejecución el “reproductor” del motor de juego.
  • Una instancia de esta clase se almacena como variable global en el editor y representa el juego actual.
El entorno de ejecución se puede inicializar con una configuración de juego diferente, como se muestra a continuación. También se puede volver a inicializar con una configuración de juego diferente después de anular la inicialización.
Inicialización
El entorno de ejecución tiene dos capas de inicialización: XGameRuntime.lib, con la que se vincula un componente, y XGameRuntime.dll, que es la implementación real del entorno de ejecución. Cuando se inicializa XGameRuntime.lib, esta carga XGameRuntime.dll y la inicializa. La inicialización del archivo DLL usa un recuento de referencias, lo que permite que se conecten varias bibliotecas. La inicialización de la biblioteca no usa recuento de referencias: las llamadas de inicialización múltiples se omiten (aunque si se llama a XGameRuntimeInitializeWithOptions, las opciones proporcionadas se comparan con las opciones inicializadas actualmente y se devuelve E_GAMERUNTIME_OPTIONS_MISMATCH si difieren).
Cada API de inicialización tiene el siguiente comportamiento:
  • XGameRuntimeInitialize: si el archivo DLL del entorno de ejecución ya se inicializó mediante otra llamada, esta API “adopta” las opciones de inicialización que se proporcionaron en la otra llamada. Si es la primera vez que se inicializa el entorno de ejecución, se usarán los valores predeterminados para las opciones de inicialización. Los juegos siempre deben inicializar el entorno de ejecución mediante esta API.
  • XGameRuntimeInitializeWithOptions: todos los componentes que inicialicen el entorno de ejecución deben pasar las mismas opciones si usan este método. Si el entorno de ejecución se inicializó previamente con otro conjunto de opciones, esta llamada fallará con E_GAMERUNTIME_OPTIONS_MISMATCH. Los componentes de middleware, como un editor de juegos de Unity, pueden usar esta API para inicializar el entorno de ejecución con un GameConfig personalizado antes de iniciar el juego. El entorno de ejecución se puede volver a inicializar con opciones diferentes si primero se anula por completo su inicialización. Esto requiere que todos los módulos que llamaron a uno de los métodos XGameRuntimeInitialize* llamen a XGameRuntimeUninitialize.
Si el juego está empaquetado en un XVC o MSIXVC, las opciones personalizadas proporcionadas deben coincidir con la configuración del archivo de configuración de juego del paquete. Si no coinciden, la llamada de inicialización fallará con E_GAMERUNTIME_OPTIONS_NOT_SUPPORTED. Tenga en cuenta que un error ERROR_NOT_FOUND de la configuración de juego no cuenta como un fallo, ya que actualmente existen escenarios en los que el entorno de ejecución se inicializa fuera de los juegos. Los errores de E/S de archivos, como FILE_NOT_FOUND, no se transforman en E_GAMERUNTIME_GAMECONFIG_BAD_FORMAT para facilitar el diagnóstico. Anulación de la inicialización
Aquí también hay dos capas. Anular la inicialización de XgameRuntime.lib anula la inicialización de la biblioteca y libera su referencia al archivo DLL. Las llamadas posteriores para anular la inicialización de la biblioteca se omiten hasta que la biblioteca se vuelve a inicializar.
Anular la inicialización del archivo DLL disminuye el recuento de referencias. Cuando llega a cero, se anula la inicialización del archivo DLL. Este comportamiento se mantiene igual. La anulación de la inicialización del archivo DLL puede fallar si todavía hay objetos del entorno de ejecución activos cuando el recuento de referencias del archivo DLL llega a cero. Si esto sucede, el entorno de ejecución:
  • No descargará el archivo DLL del entorno de ejecución, ya que esto puede provocar un bloqueo.
  • Almacenará el error para devolverlo más adelante en una futura llamada a XGameRuntimeInitialize*.
  • Se emitirá un XErrorReport.
Tenga en cuenta que, debido a este comportamiento, un error de anulación de la inicialización es terminal: el entorno de ejecución ya no está inicializado y los intentos de inicializarlo siempre fallarán. Cuando se anula la inicialización del entorno de ejecución del juego, el juego debe cerrar todos los identificadores. Cualquier identificador que quede abierto se considera una pérdida de memoria. Intentar usar cualquier identificador filtrado de una inicialización anterior del entorno de ejecución devolverá E_GAMERUNTIME_INVALID_HANDLE.

Requisitos

Encabezado: XGameRuntimeInit.h Biblioteca: xgameruntime.lib Plataformas compatibles: Windows, consolas de la familia XBOX One y consolas XBOX Series

Consulte también

XGameRuntimeUninitialize
XGameRuntimeInitialize
XGameRuntimeInit
Desarrollo de nuevos títulos con Gaming Runtime
Última modificación el 28 de agosto de 2026