20 Eylül 2026 Pazar

MonoGame-desktopgames publiceren in de Microsoft Store: De complete MSIX- en WAP-gids




MonoGame-desktopgames publiceren in de Microsoft Store: De complete MSIX- en WAP-gids

Een indiegame uitbrengen in de Microsoft Store op Windows 10 en Windows 11 geeft ontwikkelaars direct toegang tot honderden miljoenen pc-gamers, automatische achtergrond-updates, Windows Game Bar-integratie en een veilige installatieomgeving. Als je game echter is gebouwd met MonoGame (.NET 8.0 of .NET 9.0 WindowsDX), vereist distributie via de store een architecturale brug: het verbinden van een standaard Win32-bestand (.exe) met het moderne MSIX / AppX-applicatiemodel.

Bij Arar Games hebben we dit traject succesvol doorlopen met games zoals Paint Trek en Blocked: Pixel Panzer. In deze handleiding behandelen we het complete technische proces: projectconfiguratie, de opties in het Publish-menu van Visual Studio, Package.appxmanifest, schaling van grafische tegels, het oplossen van WACK-fouten en de indiening in Microsoft Partner Center.


1. Architecturale basis: Win32 vs MSIX

Standaard MonoGame-games compileren naar een Win32-applicatie met runtime-bibliotheken (.dll) en een Content/-map met gecomprimeerde bestanden (.xnb, .ogg, shaders).

Het verpakken van de game in een Windows Application Packaging (WAP)-project om een MSIX bundle te creëren biedt grote voordelen:

  1. Geïsoleerde container: MSIX-apps draaien in een beschermde omgeving. Bij verwijdering worden alle bestanden en virtuele registerwaarden zonder restanten opgeruimd.
  2. Dynamische distributie: Eén .appxupload-pakket bundelt x86- en x64-uitvoerbestanden samen met DPI-schaalpakketten (scale-100 tot scale-400). Gebruikers downloaden alleen wat voor hun pc nodig is.
  3. Automatische crash-telemetrie: Visual Studio voegt foutopsporingssymbolen (.appxsym) toe. Bij crashes toont het Partner Center-dashboard de volledige stack trace inclusief regelnummers.

2. Projectconfiguratie

Stel in het .csproj-bestand van je desktopgame ondersteuning in voor meerdere architecturen:

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

Herstel de NuGet-pakketten:

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

3. Visual Studio Publish-menuopties

  1. Associate App with the Store...: Koppelt het project aan de geregistreerde app in Partner Center en maakt Package.StoreAssociation.xml aan.
  2. Convert Content Group Map File: Voor streaminginstallaties bij enorme games (+50 GB). Niet nodig voor indiegames.
  3. Create App Packages...: De wizard voor het maken van testpakketten (Sideloading) of het definitieve winkelpakket (_bundle.appxupload).

4. De pakketwizard configureren

  • Distributiemethode: Kies "Microsoft Store under a new or existing app name" voor publicatie of "Sideloading" voor lokale tests.
  • Architecturen: Vink ☑️ x86 en ☑️ x64 aan (Release-configuratie).
  • Bundle: Zet Generate app bundle: Always.
  • Versienummering: Volgt Major.Minor.Build.Revision (bijv. 1.0.0.0). Elk nieuw pakket in Partner Center moet een hoger versienummer hebben dan het actieve pakket. Met Automatically increment wordt het revisienummer bij elke build automatisch verhoogd.

5. Instellingen in Package.appxmanifest

  • <rescap:Capability Name="runFullTrust" />: Noodzakelijk omdat MonoGame DirectX 11 en systeemaanroepen gebruikt. Dit geeft volledige desktoptoegang binnen de schone MSIX-omgeving.
  • InitialRotationPreference="landscape": Vergrendelt de liggende stand voor handhelds (zoals ASUS ROG Ally).

6. Visuele activa en de BadgeLogo-regel

Warning

Strikte BadgeLogo-regel: Het vergrendelingsschermpictogram (BadgeLogo) mag uitsluitend bestaan uit zuiver witte pixels (#FFFFFF) en transparantie. Kleuren leiden tot afwijzing in de WACK-contrasttest.


7. WACK-validatie en probleemoplossing

  • Fout "AppCert.exe wasn't found": Installeer de Windows App Certification Kit via Visual Studio Installer. Lokale controle is optioneel; Microsoft voert de tests automatisch uit in de cloud.
  • Valse meldingen bij MonoGame-bestanden: Gecomprimeerde .xnb- of .ogg-bestanden kunnen toevallig lijken op uitvoerbare headers, maar worden door Microsoft geaccepteerd als statische game-inhoud.

8. Lokaal testen via Sideloading

Open PowerShell als Administrator in AppPackages/YourGame_Test/ en voer uit:

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

9. Checklist voor Microsoft Partner Center

  1. Prijzen en beschikbaarheid: Selecteer alle 240 markten en stel de basisprijs in USD in.
  2. Eigenschappen: Kies categorie Games en vul een privacybeleid-URL in.
  3. Leeftijdsclassificatie (IARC): Vul de vragenlijst in (arcadegames krijgen meestal Everyone / PEGI 3).
  4. Winkelvermelding: Upload pc-screenshots van 1920x1080 (zonder mobiele touchknoppen).
  5. Pakketten: Sleep het _bundle.appxupload-bestand naar het venster en klik op Submit to the Store.



Hiç yorum yok:

Yorum Gönder