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:
- Geïsoleerde container: MSIX-apps draaien in een beschermde omgeving. Bij verwijdering worden alle bestanden en virtuele registerwaarden zonder restanten opgeruimd.
- Dynamische distributie: Eén
.appxupload-pakket bundeltx86- enx64-uitvoerbestanden samen met DPI-schaalpakketten (scale-100totscale-400). Gebruikers downloaden alleen wat voor hun pc nodig is. - 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
- Associate App with the Store...: Koppelt het project aan de geregistreerde app in Partner Center en maakt
Package.StoreAssociation.xmlaan. - Convert Content Group Map File: Voor streaminginstallaties bij enorme games (+50 GB). Niet nodig voor indiegames.
- 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 ☑️
x86en ☑️x64aan (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. MetAutomatically incrementwordt 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
- Prijzen en beschikbaarheid: Selecteer alle 240 markten en stel de basisprijs in USD in.
- Eigenschappen: Kies categorie
Gamesen vul een privacybeleid-URL in. - Leeftijdsclassificatie (IARC): Vul de vragenlijst in (arcadegames krijgen meestal Everyone / PEGI 3).
- Winkelvermelding: Upload pc-screenshots van 1920x1080 (zonder mobiele touchknoppen).
- Pakketten: Sleep het
_bundle.appxupload-bestand naar het venster en klik op Submit to the Store.
Hiç yorum yok:
Yorum Gönder