Publicando jogos desktop MonoGame na Microsoft Store: O guia definitivo de MSIX e WAP
Levar um jogo independente para a Microsoft Store no Windows 10 e Windows 11 oferece aos desenvolvedores acesso direto a centenas de milhões de jogadores de PC, atualizações automáticas em segundo plano, integração com a Windows Game Bar e a segurança de uma instalação em contêiner. No entanto, se o seu jogo foi desenvolvido com MonoGame (.NET 8.0 ou .NET 9.0 WindowsDX), colocá-lo na loja requer uma ponte arquitetural: unir um executável Win32 tradicional (.exe) com o modelo moderno de aplicativos MSIX / AppX.
Na Arar Games, percorremos todo esse caminho com jogos como Paint Trek e Blocked: Pixel Panzer, desde a compilação inicial até o lançamento oficial. Neste guia prático, detalhamos todo o pipeline técnico: configuração de projetos, domínio das opções do menu Publish no Visual Studio, configuração do Package.appxmanifest, dimensionamento de tiles visuais, resolução de alertas do WACK e envio ao Microsoft Partner Center.
1. Fundamentos da Arquitetura: Win32 vs MSIX
Jogos MonoGame tradicionais são compilados em um executável Win32 comum, bibliotecas de tempo de execução (.dll) e uma pasta Content/ com recursos binários compactados (texturas .xnb, áudio .ogg, shaders).
O empacotamento do jogo em um projeto Windows Application Packaging (WAP) para gerar um MSIX bundle oferece vantagens definitivas:
- Ciclo de vida isolado em contêiner: Aplicativos MSIX rodam em ambiente isolado. Na desinstalação, todos os arquivos e entradas virtuais do registro são removidos sem deixar lixo no sistema operacional.
- Distribuição dinâmica e economia de espaço: Um único pacote
.appxuploadreúne bináriosx86ex64com múltiplos pacotes de escala DPI (scale-100atéscale-400). O usuário baixa apenas o conteúdo compatível com seu hardware. - Telemetria automática de falhas: O Visual Studio inclui os símbolos de depuração (
.appxsym). Havendo falhas na máquina do jogador, o painel do Partner Center apresenta o rastreamento de pilha (stack trace) completo com linhas de código.
2. Configuração do Projeto
No arquivo .csproj principal, configure o suporte multiplataforma e a cópia de conteúdo:
<Project Sdk="Microsoft.NET.Sdk">
<PropertyGroup>
<OutputType>WinExe</OutputType>
<TargetFramework>net9.0-windows</TargetFramework>
<UseWindowsForms>true</UseWindowsForms>
<Platforms>AnyCPU;x64;x86</Platforms>
</PropertyGroup>
<ItemGroup>
<Content Include="Content\**\*.*">
<CopyToOutputDirectory>PreserveNewest</CopyToOutputDirectory>
</Content>
</ItemGroup>
</Project>
Restauração de pacotes NuGet:
dotnet restore YourGame.Desktop.csproj -r win-x64
dotnet restore YourGame.Desktop.csproj -r win-x86
3. As Opções do Menu Publish no Visual Studio
Ao clicar com o botão direito no projeto WAP e selecionar Publish:
- Associate App with the Store...: Associa o projeto ao app reservado no Partner Center, obtém o Publisher ID oficial e gera o
Package.StoreAssociation.xml. - Convert Content Group Map File: Recurso de streaming de instalação para jogos gigantescos (+50 GB). Dispensável para jogos indie.
- Create App Packages...: O assistente principal para criar pacotes de teste local (Sideloading) ou o arquivo para a loja (
_bundle.appxupload).
4. Configuração do Assistente de Criação de Pacotes
- Método de distribuição: Escolha "Microsoft Store under a new or existing app name" para a loja ou "Sideloading" para testes internos.
- Arquiteturas: Marque ☑️
x86e ☑️x64em Release. - Geração de bundle:
Generate app bundle: Always. - Regra estrita de versionamento: Formato
Major.Minor.Build.Revision(ex:1.0.0.0). Todo novo pacote enviado à loja deve ter uma versão estritamente maior que a versão ativa. MarcarAutomatically incrementadiciona +1 à revisão a cada build.
5. Configuração do Package.appxmanifest
<rescap:Capability Name="runFullTrust" />: Como o MonoGame utiliza DirectX 11 e chamadas nativas de sistema, esse privilégio assegura execução completa mantendo o isolamento seguro do contêiner.InitialRotationPreference="landscape": Trava a tela em modo paisagem, fundamental para consoles portáteis Windows (ASUS ROG Ally, Lenovo Legion Go).
6. Recursos Visuais e a Regra do BadgeLogo
Warning
Regra do BadgeLogo:
O ícone da tela de bloqueio (BadgeLogo) precisa ser composto exclusivamente de pixels brancos puros (#FFFFFF) sobre fundo transparente. Cores ou degradês causarão reprovação no teste de contraste do WACK.
7. Validação WACK e Solução de Problemas
- Erro "AppCert.exe wasn't found": Instale o componente Windows App Certification Kit no Visual Studio Installer. O teste local é opcional; os servidores em nuvem da Microsoft executam a validação completa no envio.
- Falso positivo de executável bloqueado: Arquivos
.xnbou.oggpodem coincidir com assinaturas binárias PE. O processo de certificação da Microsoft reconhece-os como dados de jogo estáticos e aprova o aplicativo.
8. Teste Local via Sideloading
Na pasta AppPackages/YourGame_Test/, execute o PowerShell como Administrador:
Set-ExecutionPolicy RemoteSigned -Scope Process
.\Add-AppDevPackage.ps1
9. Checklist de Envio no Microsoft Partner Center
- Preço e disponibilidade: Selecione os 240 mercados mundiais e defina o valor em dólar.
- Propriedades: Categoria
Gamese link da Política de Privacidade (Privacy Policy). - Classificação indicativa (IARC): Responda ao questionário (jogos arcade geralmente recebem Everyone / PEGI 3).
- Listagem da loja: Envie capturas de tela de PC em 1920x1080 (sem controles de toque móveis).
- Pacotes: Envie o arquivo
_bundle.appxuploade clique em Submit to the Store.
Hiç yorum yok:
Yorum Gönder