Publicación de juegos de escritorio MonoGame en Microsoft Store: Guía completa de MSIX y WAP
Llevar un juego indie a la Microsoft Store en Windows 10 y Windows 11 ofrece a los desarrolladores acceso directo a cientos de millones de jugadores de PC, actualizaciones automáticas en segundo plano, integración con la barra de juegos de Windows y la seguridad de una instalación en contenedor. Sin embargo, si tu juego está creado con MonoGame (.NET 8.0 o .NET 9.0 WindowsDX), publicarlo requiere un puente arquitectónico: conectar un ejecutable Win32 estándar (.exe) con el moderno modelo de aplicaciones MSIX / AppX.
En Arar Games, hemos recorrido este camino con títulos como Paint Trek y Blocked: Pixel Panzer, desde la primera compilación hasta la publicación en tienda. En esta guía técnica, desglosamos todo el proceso: configuración de proyectos, opciones del menú Publish en Visual Studio, configuración de Package.appxmanifest, escalado de iconos y tiles, resolución de errores de WACK y envío final a Microsoft Partner Center.
1. Fundamentos arquitectónicos: Win32 frente a MSIX
Los juegos MonoGame tradicionales se compilan en un ejecutable Win32 estándar acompañado de bibliotecas .dll y una carpeta Content/ con recursos binarios comprimidos (texturas .xnb, audio .ogg, shaders HLSL).
Empaquetar el juego mediante un proyecto Windows Application Packaging (WAP) para generar un MSIX bundle aporta ventajas esenciales:
- Ciclo de vida aislado en contenedor: Las aplicaciones MSIX se ejecutan de forma aislada. Al desinstalarse, se eliminan por completo todos los archivos y entradas de registro virtualizadas sin dejar residuos en el sistema.
- Distribución dinámica y descargas optimizadas: Un único paquete
.appxuploadcombina binariosx86yx64junto con paquetes de escala DPI (scale-100ascale-400). La tienda solo descarga en el equipo del usuario los archivos necesarios. - Telemetría de errores automática: Visual Studio incluye símbolos de depuración (
.appxsym). Si el juego falla, el panel de Partner Center muestra la traza de la pila (stack trace) completa con nombres de métodos y números de línea.
2. Estructura y configuración del proyecto
En el archivo .csproj del juego de escritorio, habilita la compatibilidad con múltiples plataformas y la copia de contenido:
<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 los paquetes NuGet para ambas arquitecturas:
dotnet restore YourGame.Desktop.csproj -r win-x64
dotnet restore YourGame.Desktop.csproj -r win-x86
3. Opciones del menú Publish en Visual Studio
Al hacer clic derecho en el proyecto WAP y abrir Publish, encontrarás tres opciones:
- Associate App with the Store...: Conecta el proyecto con tu cuenta de Partner Center, obtiene el Publisher ID oficial y genera
Package.StoreAssociation.xml. - Convert Content Group Map File: Conversión para instalaciones en streaming en juegos de gran tamaño (+50 GB). No es necesario para juegos indie.
- Create App Packages...: Asistente principal para generar paquetes de prueba local (Sideloading) o el paquete final para la tienda (
_bundle.appxupload).
4. Configuración del asistente de empaquetado
- Método de distribución: Selecciona "Microsoft Store under a new or existing app name" para la tienda o "Sideloading" para pruebas en equipos locales.
- Arquitecturas: Marca ☑️
x86y ☑️x64(configuración Release). - Bundle: Selecciona
Generate app bundle: Always. - Regla de versión: Formato
Major.Minor.Build.Revision(ej.1.0.0.0). Cualquier nuevo paquete subido a la tienda debe tener una versión superior a la actualmente activa. La opciónAutomatically incrementaumenta automáticamente la revisión.
5. Parámetros clave de Package.appxmanifest
<rescap:Capability Name="runFullTrust" />: Al requerir DirectX 11 y llamadas nativas, este permiso otorga acceso completo de escritorio manteniendo la limpieza del contenedor MSIX.InitialRotationPreference="landscape": Fija la orientación horizontal, indispensable para dispositivos portátiles con Windows (ASUS ROG Ally, Lenovo Legion Go).
6. Iconos y la regla estricta de BadgeLogo
Warning
Requisito para BadgeLogo:
El icono de la pantalla de bloqueo (BadgeLogo) debe estar formado exclusivamente por píxeles blancos puros (#FFFFFF) sobre fondo transparente. Incluir colores provocará un fallo de contraste en el test de certificación WACK.
7. Pruebas WACK y resolución de problemas
- Error "AppCert.exe wasn't found": Instala el componente Windows App Certification Kit desde Visual Studio Installer. La prueba local es opcional, ya que Microsoft ejecuta estos análisis automáticamente al subir el paquete a la nube.
- Falsos positivos en archivos de MonoGame: Archivos binarios
.xnbo.oggpueden coincidir aleatoriamente con firmas de encabezados PE. Microsoft los reconoce como recursos estáticos del juego y aprueba la publicación.
8. Pruebas locales con Sideloading
En la carpeta AppPackages/YourGame_Test/, abre PowerShell como administrador y ejecuta:
Set-ExecutionPolicy RemoteSigned -Scope Process
.\Add-AppDevPackage.ps1
9. Lista de control de Microsoft Partner Center
- Pricing and availability: Selecciona todos los mercados (240 países) y define el precio base en USD.
- Properties: Clasifica el juego en
Gamese incluye el enlace a tu Política de Privacidad. - Age ratings: Completa el formulario de IARC (los juegos arcade suelen recibir Everyone / PEGI 3).
- Store listings: Sube capturas de pantalla de PC en 1920x1080 (sin botones táctiles móviles).
- Packages: Sube el archivo
_bundle.appxuploady haz clic en Submit to the Store.
Hiç yorum yok:
Yorum Gönder