Veröffentlichung von MonoGame-Desktop-Spielen im Microsoft Store: Der vollständige MSIX- und WAP-Leitfaden
Die Veröffentlichung eines Indie-Spiels im Microsoft Store unter Windows 10 und Windows 11 bietet Entwicklern direkten Zugang zu Hunderten Millionen PC-Spielern, automatische Hintergrund-Updates, Integration in die Windows Game Bar und die Sicherheit einer isolierten Container-Installation. Wenn Ihr Spiel jedoch mit MonoGame (.NET 8.0 oder .NET 9.0 WindowsDX) entwickelt wurde, erfordert die Store-Bereitstellung eine architektonische Brücke: die Verbindung einer klassischen Win32-Desktop-Executable (.exe) mit dem modernen MSIX / AppX-Anwendungsmodell.
Bei Arar Games haben wir diesen Weg mit Titeln wie Paint Trek und Blocked: Pixel Panzer von der ersten Kompilierung bis zur weltweiten Veröffentlichung gemeistert. In diesem technischen Leitfaden erläutern wir die gesamte Pipeline: Projektkonfiguration, Beherrschung der Visual Studio Publish-Optionen, Konfiguration der Package.appxmanifest, Skalierung von Kachelgrafiken, Behebung von WACK-Validierungsfehlern und Einreichung im Microsoft Partner Center.
1. Architektonische Grundlagen: Win32 vs. MSIX
Klassische MonoGame-Spiele kompilieren in eine Win32-Anwendung mit Laufzeitbibliotheken (.dll) und einem Content/-Ordner mit komprimierten Binärressourcen (.xnb-Texturen, .ogg-Audiodateien, Shaders).
Die Kapselung des Spiels in einem Windows Application Packaging (WAP)-Projekt zur Erstellung eines MSIX bundle bietet signifikante Vorteile:
- Isolierter Container-Lebenszyklus: MSIX-Anwendungen laufen in einer isolierten Umgebung. Bei der Deinstallation werden alle Dateien und virtualisierten Registry-Einträge rückstandslos entfernt.
- Dynamische Architektur- & Ressourcenbereitstellung: Ein einziges
.appxupload-Paket bündeltx86- undx64-Binärdateien sowie mehrere DPI-Skalierungspakete (scale-100bisscale-400). Spieler laden nur die für ihr Gerät passenden Daten herunter. - Automatische Absturztelemetrie: Visual Studio packt Debug-Symbole (
.appxsym) in das Paket. Bei Abstürzen zeigt das Partner Center-Dashboard den vollständigen Stacktrace mit Zeilennummern an.
2. Projektstruktur und Konfiguration
In der .csproj-Datei des Hauptspiels Multi-Plattform-Unterstützung und Ressourcenkopie konfigurieren:
<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>
NuGet-Pakete wiederherstellen:
dotnet restore YourGame.Desktop.csproj -r win-x64
dotnet restore YourGame.Desktop.csproj -r win-x86
3. Das Visual Studio Publish-Menü im Detail
Beim Rechtsklick auf das WAP-Projekt und Auswahl von Publish stehen drei Optionen bereit:
- Associate App with the Store...: Verbindet das Projekt mit dem Entwicklerkonto, bezieht offizielle IDs und erstellt
Package.StoreAssociation.xml. - Convert Content Group Map File: Werkzeug für Streaming-Installationen bei riesigen Spielen (50+ GB). Für Indie-Spiele nicht erforderlich.
- Create App Packages...: Der Hauptassistent zur Erstellung von Testpaketen (Sideloading) oder des finalen Store-Bundles (
_bundle.appxupload).
4. Konfiguration des Paketierungsassistenten
- Vertriebsmethode: "Microsoft Store under a new or existing app name" für den Store, "Sideloading" für lokale Tests.
- Architekturen: ☑️
x86und ☑️x64auswählen (Release-Konfiguration). - Bundle-Einstellung:
Generate app bundle: Always. - Versionsregel:
Major.Minor.Build.Revision(z. B.1.0.0.0). Jedes neue Paket im Partner Center muss eine höhere Versionsnummer als das aktive Store-Paket aufweisen.Automatically incrementerhöht bei jedem Build automatisch die Revision.
5. Konfiguration der Package.appxmanifest
<rescap:Capability Name="runFullTrust" />: MonoGame benötigt vollen Desktop-Zugriff für DirectX 11 und SharpDX/SDL, behält dabei aber die saubere Container-Installation bei.InitialRotationPreference="landscape": Fixiert das Querformat, essenziell für Windows-Gaming-Handhelds (ASUS ROG Ally, Lenovo Legion Go).
6. Grafik-Assets und die BadgeLogo-Vorschrift
Warning
Strikte BadgeLogo-Vorgabe:
Das Sperrbildschirm-Symbol (BadgeLogo) darf ausschließlich aus rein weißen Pixeln (#FFFFFF) und Transparenz bestehen. Farbige Pixel führen zu Kontrastfehlern im WACK-Test.
7. WACK-Prüfung und Fehlerbehebung
- Fehler "AppCert.exe wasn't found": Installieren Sie das Windows App Certification Kit über den Visual Studio Installer. Der lokale Test ist optional, da Microsoft die Prüfung beim Upload in der Cloud vornimmt.
- Fehlalarm bei MonoGame-Dateien (Blocked Executable): Komprimierte
.xnb- oder.ogg-Dateien können zufällig Signaturen von PE-Headern aufweisen. Das Store-Team erkennt sie als statische Spieldaten an.
8. Lokales Testen via Sideloading
Im Ordner AppPackages/YourGame_Test/ PowerShell als Administrator öffnen und ausführen:
Set-ExecutionPolicy RemoteSigned -Scope Process
.\Add-AppDevPackage.ps1
9. Microsoft Partner Center Checkliste
- Preise & Verfügbarkeit: Alle 240 Märkte auswählen und Basispreis in USD festlegen.
- Eigenschaften: Kategorie
Gameszuweisen und Datenschutzerklärung (Privacy Policy URL) hinterlegen. - Altersfreigabe (IARC): Fragebogen ausfüllen (Arcade-Spiele erhalten meist Everyone / PEGI 3).
- Store-Eintrag: 1920x1080 PC-Screenshots ohne mobile Touch-Steuerungselemente hochladen.
- Pakete:
_bundle.appxuploadhochladen und auf Submit to the Store klicken.
Hiç yorum yok:
Yorum Gönder