Skip to main content
Em vez de ser um jogo independente lançado em um momento específico, alguns jogos estão migrando para um modelo em que são tratados como serviço, recebendo temporadas ou atualizações que mantêm esses jogos atualizados por muitos anos. Esse modelo é chamado de Games-as-a-Service (GaaS). O GDK oferece um bom suporte a esse modelo. Este documento fornece uma visão geral das práticas recomendadas a serem consideradas ao usar o GDK para dar suporte à publicação de um jogo como serviço.

Adoção do GDK

Cada GDK tem suporte por apenas um ano. Embora os jogos existentes possam continuar sendo lançados usando um GDK descontinuado, isso pode ser problemático para jogos lançados como serviço. Jogos que introduzem novos recursos depois que um GDK foi descontinuado podem encontrar bugs ou problemas de integração que não foram vistos em casos de uso anteriores do GDK. Da mesma forma, o jogo pode querer aproveitar recursos encontrados apenas nos GDKs mais recentes que estão sendo lançados. Um jogo deve ser compilado com um único GDK. Os jogos não podem misturar componentes de um GDK com outro. No console, o jogo inclui apenas um único Game OS, e as várias bibliotecas do GDK podem ter dependências desse sistema operacional subjacente. No PC, apenas uma versão do runtime de jogos é carregada no processo do jogo, criando um ambiente de “versão única” semelhante ao visto no console. É recomendável que os títulos GaaS atualizem periodicamente para um GDK lançado mais recentemente que ainda tenha suporte.

Intelligent Delivery

Os títulos GaaS podem ficar cada vez maiores ao longo dos anos com a introdução de novo conteúdo. Os jogadores podem ter quantidades limitadas de espaço de armazenamento. Isso pode afetar a capacidade deles de instalar a atualização mais recente do jogo. Embora seja verdade que os jogadores podem gerenciar seus próprios espaços de armazenamento, jogos criados com Intelligent Delivery dão ao jogador mais flexibilidade e opções sobre como usar seu espaço de armazenamento, além de desinstalar jogos inteiros, e permitem que os jogadores mantenham mais jogos instalados em seus dispositivos por muito mais tempo. Usando o Intelligent Delivery, os jogos podem aproveitar recursos e receitas, escolhendo o que é instalado por padrão e dando aos jogos a capacidade de gerenciar quais partes do jogo desejam manter instaladas e quais partes podem querer remover porque não as estão mais usando. Os títulos GaaS podem optar por colocar seu novo conteúdo em recursos separados para permitir esse tipo de gerenciamento. A ideia é que o novo conteúdo seja um durável. Aqui está uma sugestão que facilitaria esse gerenciamento:
  1. No arquivo de layout do jogo, faça com que cada durável corresponda a um Feature.
  2. O Feature declarará uma ou mais Tags que podem ser usadas para indicar quais blocos no arquivo de layout devem ser instalados se o jogador tiver uma licença para esse conteúdo.
  3. Certifique-se de que o arquivo de layout inclua uma Recipe que tenha um filho Store ID. Essa receita deve referenciar um único recurso que corresponda ao mesmo Store ID. Adicionar a receita garantirá que, se o jogador tiver comprado esse conteúdo anteriormente, ele será instalado automaticamente.
    [!NOTE] Pode haver outros recursos e receitas que não têm nenhuma relação com duráveis.
Seguir essa recomendação significa que os jogos podem então:
  1. Chamar XPackageEnumerateFeatures para enumerar os recursos.
  2. Usar o Store ID retornado que está em XPackageFeature para verificar a licença, consultar mais detalhes ou invocar fluxos de compra da loja.
Todos os jogos com mais de 40 GB devem considerar fortemente o uso do Intelligent Delivery. Os jogos podem considerar o uso de duráveis para dar suporte a GaaS.

Conteúdo para download

Em vez de evoluir continuamente seu pacote base, alguns títulos GaaS podem optar por evoluir ao longo dos anos usando conteúdo para download (DLC). Os jogos podem optar por colocar ativos ou código executável nesse DLC. Com código executável, há dois caminhos possíveis: DLLs e EXEs. Se o jogo colocar DLLs em seu DLC, ele poderá:
  1. Montar esse DLC usando XPackageMountWithUiAsync.
  2. Usar LoadLibraryEx.
  3. Todo DLC montado anteriormente permanece montado.
Se o jogo colocar um EXE em seu DLC, ele poderá:
  1. Montar esse DLC usando XPackageMountWithUiAsync.
  2. Chamar XLaunchNewGames usando o caminho do DLC montado.
  3. O processo do jogo existente será encerrado.
  4. Todo DLC, exceto o destino de XLaunchNewGames, será desmontado.
  5. A unidade G: continuará apontando para a raiz do pacote base e não para o EXE recém- iniciado.
É recomendável que os jogos que colocam código executável em seu DLC acessem esse código executável usando LoadLibraryEx.

Documentação de referência da API

Confira também

Conteúdo para download (DLC) Recursos e receitas Intelligent Delivery XPackageMountWithUiAsync
Last modified on October 6, 2026