Skip to main content

XGameRuntimeInitializeWithOptions

Essa API inicializa o runtime do jogo, recebendo um ponteiro para uma estrutura de opções que pode modificar a forma como o runtime é inicializado. Embora os jogos normalmente devam continuar usando o método existente XGameRuntimeInitialize, alguns mecanismos de jogo ou middleware podem precisar de uma inicialização mais configurável.

Sintaxe

Parâmetros

options _In_
Tipo: XGameRuntimeOptions*
Ponteiro para uma estrutura de opções que pode modificar a forma como o runtime é inicializado.

Valor retornado

Tipo: HRESULT Retornará S_OK se for bem-sucedido; caso contrário, retornará um código de erro. Para obter uma lista de códigos de erro, consulte Códigos de erro. Se a função falhar porque a biblioteca do Gaming Runtime (xgameruntime.dll) não foi encontrada, o valor retornado será definido como E_GAMERUNTIME_DLL_NOT_FOUND.

Comentários

O exemplo a seguir demonstra como um editor de jogos ou outro middleware pode ser usado para carregar e executar vários jogos no mesmo processo. Ele pressupõe o seguinte código externo:
  • Uma classe chamada “GameEngine” que recebe o caminho para os arquivos do jogo e inicia o jogo. É o mesmo mecanismo usado em runtime pelo “player” do mecanismo de jogo.
  • Uma instância dela é armazenada como global no editor e representa o jogo atual.
O runtime pode ser inicializado com uma configuração de jogo diferente, conforme mostrado abaixo. Ele também pode ser reinicializado com uma configuração de jogo diferente após o cancelamento da inicialização.
Inicialização
O runtime tem duas camadas de inicialização: XGameRuntime.lib, à qual um componente é vinculado, e XGameRuntime.dll, que é a implementação real do runtime. Quando XGameRuntime.lib é inicializada, ela carrega XGameRuntime.dll e a inicializa. A inicialização da DLL tem contagem de referências, permitindo que várias bibliotecas se conectem. A inicialização da biblioteca não tem contagem de referências: várias chamadas para inicializá-la são ignoradas (embora, se XGameRuntimeInitializeWithOptions for chamada, as opções fornecidas sejam comparadas com as opções inicializadas atualmente e E_GAMERUNTIME_OPTIONS_MISMATCH seja retornado se forem diferentes).
Cada API de inicialização tem o seguinte comportamento:
  • XGameRuntimeInitialize: se a DLL do runtime já tiver sido inicializada por outra chamada, essa API “adota” as opções de inicialização fornecidas na outra chamada. Se for a primeira vez que o runtime é inicializado, valores padrão serão usados para as opções de inicialização. Os jogos devem sempre inicializar o runtime usando essa API.
  • XGameRuntimeInitializeWithOptions: todos os componentes que inicializam o runtime devem passar as mesmas opções se usarem esse método. Se o runtime tiver sido inicializado anteriormente com outro conjunto de opções, essa chamada falhará com E_GAMERUNTIME_OPTIONS_MISMATCH. Componentes de middleware, como um editor de jogos Unity, podem usar essa API para inicializar o runtime com um GameConfig personalizado antes de iniciar o jogo. O runtime pode ser reinicializado com opções diferentes se primeiro tiver sua inicialização totalmente cancelada. Isso exige que todos os módulos que chamaram um dos métodos XGameRuntimeInitialize* chamem XGameRuntimeUninitialize.
Se o jogo for empacotado em um XVC ou MSIXVC, todas as opções personalizadas fornecidas deverão corresponder às configurações da configuração de jogo do pacote. Caso contrário, a chamada de inicialização falhará com E_GAMERUNTIME_OPTIONS_NOT_SUPPORTED. Observe que ERROR_NOT_FOUND da configuração de jogo não conta como falha, pois atualmente há cenários em que o runtime é inicializado fora de jogos. Erros de E/S de arquivo, como FILE_NOT_FOUND, não são transformados em E_GAMERUNTIME_GAMECONFIG_BAD_FORMAT para ajudar no diagnóstico. Cancelamento da inicialização
Aqui também há duas camadas. Cancelar a inicialização de XgameRuntime.lib cancelará a inicialização da biblioteca e liberará sua referência na DLL. Outras chamadas de cancelamento de inicialização para a biblioteca serão ignoradas até que a biblioteca seja reinicializada.
Cancelar a inicialização da DLL decrementa a contagem de referências. Quando ela chega a zero, a inicialização da DLL é cancelada. Esse comportamento permanece o mesmo. O cancelamento da inicialização da DLL poderá falhar se ainda houver objetos de runtime ativos quando a contagem de referências da DLL chegar a zero. Se isso acontecer, o runtime:
  • Não descarregará a DLL do runtime, pois isso pode causar uma falha.
  • Armazenará o erro para retorná-lo posteriormente em uma chamada futura para XGameRuntimeInitialize*
  • Emitirá um XErrorReport.
Observe que, devido a esse comportamento, uma falha no cancelamento da inicialização é terminal: o runtime não está mais inicializado e as tentativas de inicializá-lo sempre falharão. Quando a inicialização do runtime do jogo for cancelada, todos os identificadores deverão ser fechados pelo jogo. Quaisquer identificadores deixados abertos são considerados vazamentos de memória. Tentar usar qualquer identificador vazado de uma inicialização anterior do runtime retornará E_GAMERUNTIME_INVALID_HANDLE.

Requisitos

Cabeçalho: XGameRuntimeInit.h Biblioteca: xgameruntime.lib Plataformas com suporte: Windows, consoles da família XBOX One e consoles XBOX Series

Confira também

XGameRuntimeUninitialize
XGameRuntimeInitialize
XGameRuntimeInit
Desenvolvendo novos títulos usando o Gaming Runtime
Last modified on October 6, 2026