20 Eylül 2026 Pazar

Veröffentlichung von MonoGame-Desktop-Spielen im Microsoft Store: Der vollständige MSIX- und WAP-Leitfaden




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:

  1. Isolierter Container-Lebenszyklus: MSIX-Anwendungen laufen in einer isolierten Umgebung. Bei der Deinstallation werden alle Dateien und virtualisierten Registry-Einträge rückstandslos entfernt.
  2. Dynamische Architektur- & Ressourcenbereitstellung: Ein einziges .appxupload-Paket bündelt x86- und x64-Binärdateien sowie mehrere DPI-Skalierungspakete (scale-100 bis scale-400). Spieler laden nur die für ihr Gerät passenden Daten herunter.
  3. 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:

  1. Associate App with the Store...: Verbindet das Projekt mit dem Entwicklerkonto, bezieht offizielle IDs und erstellt Package.StoreAssociation.xml.
  2. Convert Content Group Map File: Werkzeug für Streaming-Installationen bei riesigen Spielen (50+ GB). Für Indie-Spiele nicht erforderlich.
  3. 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: ☑️ x86 und ☑️ x64 auswä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 increment erhö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

  1. Preise & Verfügbarkeit: Alle 240 Märkte auswählen und Basispreis in USD festlegen.
  2. Eigenschaften: Kategorie Games zuweisen und Datenschutzerklärung (Privacy Policy URL) hinterlegen.
  3. Altersfreigabe (IARC): Fragebogen ausfüllen (Arcade-Spiele erhalten meist Everyone / PEGI 3).
  4. Store-Eintrag: 1920x1080 PC-Screenshots ohne mobile Touch-Steuerungselemente hochladen.
  5. Pakete: _bundle.appxupload hochladen und auf Submit to the Store klicken.



Hiç yorum yok:

Yorum Gönder