Pastas de sobreposição
Em geral, o Tools SKU permite atualizar as ferramentas do GDK sem precisar atualizar outros componentes do GDK (por exemplo, cabeçalhos, bibliotecas e Game OS). O recurso de pastas de sobreposição é uma exceção, pois depende do suporte do Game OS, que é lançado como parte do GDK, mas não do Tools SKU.
Usos canônicos de pastas de sobreposição
As pastas de sobreposição são adequadas para cenários em que um desenvolvedor de jogos deseja atualizar localmente um único arquivo, ou alguns arquivos, de um título, mas manter intacto o armazenamento subjacente dos arquivos originais do jogo. Considere os exemplos a seguir.- Abigail está testando uma versão empacotada do título dela no XBOX One ERA Development Kit. Ela encontra um bug no título e conhece a causa raiz. Ela corrige rapidamente o código problemático localmente no PC de desenvolvimento. No kit de desenvolvimento, ela cria uma pasta de sobreposição associada ao pacote do título. Ela copia o executável que contém a correção para a pasta de sobreposição, inicia o título e consegue verificar imediatamente que a correção resolveu o bug. Isso acelera drasticamente o tempo de iteração. Antes, ela precisava reempacotar o título inteiro e reimplantar o pacote no console para poder testar esse tipo de correção.
- Felix mantém um laboratório de playtest em que os kits de desenvolvimento são configurados para executar diversos jogos sob demanda, pela rede do estúdio, a partir de builds de arquivos soltos armazenados em um servidor de build centralizado (usando o modelo de implantação Executar a partir de um PC). Um dos playtesters descobre um bug grave. Um desenvolvedor fornece um .dll privado a Felix, que o configura em uma pasta de sobreposição em uma das máquinas do laboratório. Com o .dll privado sobreposto, o jogo agora é executado sem problemas. Felix conseguiu testar a correção localmente em um kit de desenvolvimento sem precisar modificar a versão do jogo compartilhada na rede, reduzindo o risco de atrapalhar outros playtesters.
Conceitos de pastas de sobreposição
Usando uma pasta de sobreposição, um desenvolvedor pode sobrepor ou substituir a versão de um arquivo em um jogo por uma versão alternativa armazenada em outro local, inclusive como arquivo solto em uma unidade local ou em algum lugar da rede. Os principais conceitos que você precisa entender para usar pastas de sobreposição com êxito são os seguintes:- Set: associa o nome completo do pacote do seu jogo ao caminho de uma pasta onde seus arquivos de sobreposição serão armazenados. Quando definidos, o nome completo do pacote e o caminho formam essencialmente um par chave-valor que persiste entre reinicializações do kit de desenvolvimento.
- Get: recupera o caminho da pasta de sobreposição atualmente associado a um nome completo de pacote específico.
- List: lista todos os pares de nome completo do pacote (PFN)/caminho da pasta de sobreposição registrados no kit de desenvolvimento.
- Clear: você pode limpar (também conhecido como redefinir) a pasta de sobreposição de um nome completo de pacote específico ou de todos os nomes completos de pacote. Isso simplesmente remove qualquer caminho de pasta de sobreposição associado anteriormente ao nome completo do pacote.
- Omar usa o prompt de comando do GDK para criar uma nova pasta na unidade de rascunho do sistema do kit de desenvolvimento XBOX.
- Em seguida, ele copia os binários corrigidos para a pasta de sobreposição recém-criada.
- Depois, Omar define a pasta como a pasta de sobreposição do jogo.
- Por fim, ele instala a parte de inicialização do build do pacote da noite anterior.
- Agora ele está pronto para testar. Ele inicia o jogo normalmente.
Implicações de design
O kit de desenvolvimento faz muito trabalho de forma transparente em nome do desenvolvedor para facilitar o uso das pastas de sobreposição. Embora seja transparente, há aspectos que você deve entender para maximizar os benefícios das pastas de sobreposição.Fluxo de trabalho flexível
No exemplo anterior, Omar decidiu configurar primeiro a pasta de sobreposição e depois instalar o build empacotado da noite anterior. Ele poderia muito bem ter decidido instalar o pacote primeiro. Desde que a pasta que contém os arquivos de sobreposição exista e esteja acessível, a pasta de sobreposição tenha sido definida para associar o nome completo do pacote do jogo ao caminho da pasta de sobreposição e o jogo esteja instalado/registrado no momento em que o desenvolvedor tentar iniciá-lo, os arquivos da pasta de sobreposição serão usados para executar o jogo. A ordem dessas operações fica a critério do desenvolvedor.- O jogo não precisa estar instalado/registrado no momento em que a pasta de sobreposição é definida.
- O diretório referenciado no caminho da pasta de sobreposição não precisa existir nem estar acessível quando a pasta de sobreposição é definida.
- Novos arquivos e diretórios adicionados à pasta de sobreposição, inclusive durante a execução do jogo, são usados nas chamadas FileOpen subsequentes enquanto o jogo é executado.
- Não há efeito colateral causado pela desinstalação/reinstalação do jogo depois que a sobreposição é definida.
No momento, não há suporte para substituir o MicrosoftGame.config do seu título em uma pasta de sobreposição.
Escolha das ferramentas de desenvolvimento
No exemplo anterior, Omar criou um diretório no kit de desenvolvimento XBOX e copiou arquivos para ele usando o prompt de comando do GDK (ou seja, usando mkdir e copy). Em vez disso, ele poderia ter optado por usar outras ferramentas.- Ferramentas remotas do GDK (por exemplo, xbdir e xbcp)
- Ferramentas gráficas do Windows (por exemplo, o Explorador de Arquivos)
- Comandos do shell Bash
- Ferramentas de terceiros
- XBOX Manager
- XBOX Device Portal
- Developer Home (Dev Home)
- API do XBOX Tools Framework
Operação e diagnóstico transparentes
Indicador visual
É fácil “definir e esquecer” uma pasta de sobreposição. Depois que uma pasta de sobreposição é definida, arquivos e diretórios dentro dela podem ser adicionados/atualizados/removidos sem alterar a configuração da pasta de sobreposição. Por isso, fornecemos indicações visuais nas ferramentas gráficas para lembrar proativamente os desenvolvedores de que eles definiram uma pasta de sobreposição para um título.Saída de depuração
Quando um jogo é ativado e há uma pasta de sobreposição definida para o nome completo do pacote dele, uma saída de depuração é gravada para indicar que uma sobreposição foi encontrada, e os arquivos carregados da pasta de sobreposição também são exibidos.Configurar pastas de sobreposição
Configurar uma pasta de sobreposição pela linha de comando
Conforme mostrado na seção anterior deste tópico, uma pasta de sobreposição para um nome completo de pacote especificado pode ser recuperada, definida, atualizada e redefinida usando o comando xbApp overlayfolder.Configurar uma pasta de sobreposição pelo XBOX Manager
O XBOX Manager permite exibir, adicionar e excluir o caminho da pasta de sobreposição de um nome completo de pacote. Para obter mais informações, confira Gerenciar aplicativos e arquivos (XBOX Manager).Configurar uma pasta de sobreposição pelo XBOX Device Portal
O XBOX Device Portal permite exibir, adicionar e excluir o caminho da pasta de sobreposição de um nome completo de pacote. Para obter mais informações, confira Gerenciar pastas de sobreposição (XBOX Device Portal).Configurar uma pasta de sobreposição pelo Dev Home
O Dev Home permite exibir, adicionar e excluir o caminho da pasta de sobreposição de um nome completo de pacote. Para obter mais informações, confira Gerenciar pastas de sobreposição (Dev Home).Configurar uma pasta de sobreposição usando a API do XBOX Tools Framework (XTF)
O XTF permite consultar, adicionar e limpar o caminho da pasta de sobreposição de um nome completo de pacote. Para obter mais informações, confira APIs adicionais do Xtf.Configurar caminhos relativos ao console
Os caminhos de pastas de sobreposição têm uma visão relativa ao console. Ao especificar E:\Overlay, o console procurará E:\Overlay no System OS e não o encontrará. Isso se deve à forma como as sobreposições são processadas: o System OS e o Title OS, e não as ferramentas do PC, são responsáveis por processar as sobreposições. Para configurar corretamente sua pasta de sobreposição, use as diretrizes abaixo.- Você pode compartilhar a pasta de sobreposição via SMB e depois usar o caminho \FQDN_PC_NAME\shared_overlay:
- Exemplo:
xbapp.exe overlayfolder bo5-dev_1.0.0.0_neutral__ht1qfjb0gaftw \FQDN_PC_NAME\shared_overlay - OBSERVAÇÃO: o console precisará de credenciais para o compartilhamento SMB via
xbcred add FQDN_PC_NAME\shared_overlay FQDN\USER_NAME PASSWORD - OBSERVAÇÃO: use o nome de domínio totalmente qualificado em todas as referências a esse caminho para evitar problemas de resolução de nomes.
- Exemplo:
- Você pode usar Executar a partir do PC via XBTPLink, usando xbtp:\FQDN\Q:\overlay
- Exemplo:
xbapp.exe overlayfolder bo5-dev_1.0.0.0_neutral__ht1qfjb0gaftw Q:\overlay - OBSERVAÇÃO: você precisará garantir que o XbtpLinkSvc.exe esteja iniciado e que o firewall permita a conexão à porta TCP 4201.
- OBSERVAÇÃO: em versões do GDK anteriores a outubro de 2021, era necessário usar xbtp:\FQDN_PC_NAME\ para criar o caminho xbtp para a pasta de sobreposição. Isso não é mais necessário; basta especificar o caminho para a pasta de rede.
- Exemplo:
- Você pode usar o D:\ no System OS, copiando os arquivos via xbcp:
xbcp Q:\overlay\mygame.exe xd:\overlay\- Exemplo:
xbapp.exe overlayfolder bo5-dev_1.0.0.0_neutral__ht1qfjb0gaftw xD:\overlay - OBSERVAÇÃO: nesse caso, você usará xD:\overlay para a pasta de sobreposição.
- Exemplo:
Impacto das pastas de sobreposição no desempenho
As pastas de sobreposição adicionam um pequeno custo a cada abertura de arquivo. O custo é bem menor se a sobreposição for configurada para um local do System OS (opção nº 3 na seção anterior). Isso ocorre porque cada abertura de arquivo do título em G:\ primeiro processa uma pesquisa no System OS para verificar se a pasta de sobreposição contém o caminho. Esse custo é pago independentemente de o arquivo específico ter ou não uma sobreposição. Se a pasta de sobreposição estiver localizada no PC de desenvolvimento, o impacto no desempenho deve ser considerado comparável ao da execução de um título via Executar a partir do PC. A cada leitura de arquivo, a pasta de sobreposição será verificada para determinar se existe nela um arquivo que deva ser lido em vez do original e, em caso afirmativo, ele será transferido do PC de desenvolvimento para o kit de desenvolvimento. É recomendável usar uma pasta de sobreposição em System Scratch no kit de desenvolvimento para evitar esse custo ao usar pastas de sobreposição com implantações de pasta e instalações de pacote.Configurar sobreposições enquanto o título está em execução
As pastas de sobreposição são aplicadas no momento do mapeamento de volumes, portanto, será necessário reiniciar o título para aplicar uma nova sobreposição. Uma forma de configurar isso com antecedência para que seu título acesse é definir uma pasta vazia como sobreposição do título e adicionar arquivos a ela mais tarde. Essa pasta de sobreposição vazia ainda terá uma pequena sobrecarga de desempenho, conforme descrito na seção acima.Usar pastas de sobreposição com instalações de pacote da parte de inicialização
As pastas de sobreposição dão suporte à sobreposição de arquivos em uma instalação de pacote da parte de inicialização, em que apenas uma parte do pacote é instalada. Nesse cenário,xbapp install deve ser executado com o sinalizador /W.
O /W é necessário para qualquer instalação em que o pacote possa solicitar partes adicionais após a conclusão do ‘xbapp install’ inicial. Nesse caso, as partes posteriores à parte de inicialização serão solicitadas quando o título for iniciado.
