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 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.
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.
Requisitos
Cabeçalho: XGameRuntimeInit.h Biblioteca: xgameruntime.lib Plataformas com suporte: Windows, consoles da família XBOX One e consoles XBOX SeriesConfira também
XGameRuntimeUninitializeXGameRuntimeInitialize
XGameRuntimeInit
Desenvolvendo novos títulos usando o Gaming Runtime
