20 Eylül 2026 Pazar

Pubblicazione di giochi desktop MonoGame su Microsoft Store: Guida completa a MSIX e WAP




Pubblicazione di giochi desktop MonoGame su Microsoft Store: Guida completa a MSIX e WAP

Pubblicare un gioco indipendente su Microsoft Store in Windows 10 e Windows 11 garantisce agli sviluppatori l'accesso a centinaia di milioni di giocatori PC, aggiornamenti automatici in background, integrazione con Windows Game Bar e la sicurezza di un'installazione isolata. Tuttavia, se il gioco è sviluppato con MonoGame (.NET 8.0 o .NET 9.0 WindowsDX), l'approdo sullo store richiede un ponte architetturale: collegare un comune eseguibile Win32 (.exe) al moderno modello di applicazioni MSIX / AppX.

Noi di Arar Games abbiamo affrontato questo percorso con titoli come Paint Trek e Blocked: Pixel Panzer, dalla compilazione iniziale fino alla pubblicazione finale. In questa guida tecnica esaminiamo l'intera pipeline: configurazione dei progetti, gestione delle opzioni del menu Publish in Visual Studio, configurazione del Package.appxmanifest, scalabilità delle immagini dei tile, gestione degli errori WACK e invio a Microsoft Partner Center.


1. Fondamenti architetturali: Win32 e MSIX a confronto

I giochi MonoGame tradizionali vengono compilati come normali eseguibili Win32 accompagnati da librerie di runtime (.dll) e da una directory Content/ contenente risorse binarie compresse (texture .xnb, audio .ogg, shader HLSL).

L'incapsulamento del gioco all'interno di un progetto Windows Application Packaging (WAP) per generare un MSIX bundle offre vantaggi fondamentali:

  1. Ciclo di vita isolato in container: Le applicazioni MSIX girano in un ambiente protetto. Durante la disinstallazione, tutti i file e le chiavi di registro virtualizzate vengono rimossi senza lasciare residui nel sistema operativo.
  2. Distribuzione dinamica e peso ridotto: Un unico pacchetto .appxupload racchiude i binari per x86 e x64 e i set di risorse per le diverse risoluzioni DPI (scale-100 fino a scale-400). Gli utenti scaricano solo i file necessari per la propria macchina.
  3. Telemetria automatica degli arresti anomali: Visual Studio include i simboli di debug (.appxsym). In caso di crash, il pannello di Partner Center mostra lo stack trace completo con i numeri di riga e i nomi dei metodi.

2. Configurazione del progetto

Nel file .csproj del progetto principale di gioco, abilita il supporto multipiattaforma e la copia dei contenuti:

<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>

Ripristino dei pacchetti NuGet:

dotnet restore YourGame.Desktop.csproj -r win-x64
dotnet restore YourGame.Desktop.csproj -r win-x86

3. Le opzioni del menu Publish di Visual Studio

Facendo clic con il tasto destro sul progetto WAP e selezionando Publish, si hanno a disposizione 3 opzioni:

  1. Associate App with the Store...: Associa il progetto all'applicazione riservata nel Partner Center, recupera il Publisher ID ufficiale e genera Package.StoreAssociation.xml.
  2. Convert Content Group Map File: Strumento per installazioni in streaming per giochi enormi (+50 GB). Non necessario per giochi indie.
  3. Create App Packages...: La procedura guidata principale per creare pacchetti di test locale (Sideloading) o il bundle definitivo per lo Store (_bundle.appxupload).

4. Configurazione della procedura guidata di creazione pacchetti

  • Metodo di distribuzione: Seleziona "Microsoft Store under a new or existing app name" per lo store oppure "Sideloading" per i test interni.
  • Architetture: Spunta ☑️ x86 e ☑️ x64 in configurazione Release.
  • Creazione bundle: Generate app bundle: Always.
  • Regola di controllo delle versioni: Formato Major.Minor.Build.Revision (es. 1.0.0.0). Ogni nuovo pacchetto caricato deve avere un numero di versione superiore a quello attualmente attivo sullo Store. La spunta su Automatically increment aumenta automaticamente la revisione a ogni build.

5. Configurazione fondamentale di Package.appxmanifest

  • <rescap:Capability Name="runFullTrust" />: Poiché MonoGame richiede DirectX 11 e chiamate native Win32, questo permesso assicura l'esecuzione completa su desktop all'interno del container MSIX.
  • InitialRotationPreference="landscape": Blocca l'orientamento orizzontale, essenziale per dispositivi portatili da gioco con Windows (ASUS ROG Ally, Lenovo Legion Go).

Warning

Regola tassativa per BadgeLogo: L'icona per la schermata di blocco (BadgeLogo) deve essere formata esclusivamente da pixel bianchi puri (#FFFFFF) su sfondo trasparente. L'uso di colori o gradienti provocherà la bocciatura del test di contrasto in WACK.


7. Verifica WACK e risoluzione problemi

  • Errore "AppCert.exe wasn't found": Installa il Windows App Certification Kit tramite Visual Studio Installer. Il test locale è facoltativo: Microsoft esegue la certificazione automaticamente nei propri server cloud durante il caricamento.
  • Falsi positivi nei file MonoGame: I file binari compressi .xnb o .ogg possono accidentalmente somigliare a header eseguibili. La certificazione di Microsoft li identifica regolarmente come asset statici e autorizza la pubblicazione.

8. Test locale tramite Sideloading

Nella cartella AppPackages/YourGame_Test/, apri PowerShell come amministratore ed esegui:

Set-ExecutionPolicy RemoteSigned -Scope Process
.\Add-AppDevPackage.ps1

9. Checklist finale per Microsoft Partner Center

  1. Prezzo e disponibilità: Seleziona tutti i 240 mercati e fissa il prezzo base in USD.
  2. Proprietà: Assegna la categoria Games e inserisci l'URL dell'Informativa sulla privacy.
  3. Classificazione per età (IARC): Compila il questionario (i giochi arcade ottengono solitamente Everyone / PEGI 3).
  4. Scheda dello Store: Carica screenshot di gioco per PC a 1920x1080 (senza levette touch per cellulari).
  5. Pacchetti: Carica il file _bundle.appxupload e fai clic su Submit to the Store.



Hiç yorum yok:

Yorum Gönder