20 Eylül 2026 Pazar

Publikowanie gier desktopowych MonoGame w Microsoft Store: Kompletny przewodnik po MSIX i WAP




Publikowanie gier desktopowych MonoGame w Microsoft Store: Kompletny przewodnik po MSIX i WAP

Wprowadzenie gry niezależnej do Microsoft Store w systemach Windows 10 i Windows 11 zapewnia twórcom bezpośredni dostęp do setek milionów graczy na PC, automatyczne aktualizacje w tle, integrację z Windows Game Bar oraz bezpieczeństwo instalacji w piaskownicy. Jednak jeśli Twoja gra powstała w MonoGame (.NET 8.0 lub .NET 9.0 WindowsDX), proces wydawniczy wymaga mostu architektonicznego: połączenia tradycyjnego pliku wykonywalnego Win32 (.exe) z nowoczesnym modelem aplikacji MSIX / AppX.

W Arar Games przeszliśmy tę ścieżkę z grami Paint Trek oraz Blocked: Pixel Panzer – od pierwszych kompilacji po obecność w sklepie. W tym poradniku omawiamy cały proces: konfigurację projektów, opcje menu Publish w Visual Studio, konfigurację Package.appxmanifest, skalowanie grafik kafelków, rozwiązywanie błędów WACK i zgłoszenie w Microsoft Partner Center.


1. Fundamenty architektury: Win32 a MSIX

Tradycyjne gry MonoGame kompilują się do pliku Win32 .exe, bibliotek .dll oraz folderu Content/ ze skompresowanymi zasobami (tekstury .xnb, dźwięki .ogg, shadery).

Opakowanie gry w projekt Windows Application Packaging (WAP) w celu utworzenia pakietu MSIX bundle przynosi wymierne korzyści:

  1. Izolowany cykl życia: Aplikacje MSIX działają w odizolowanym kontenerze. Przy odinstalowaniu wszystkie pliki i wirtualne wpisy rejestru są czyszczone bez śladu.
  2. Optymalizacja rozmiaru: Pojedynczy pakiet .appxupload łączy wersje x86 i x64 oraz skale DPI (scale-100 do scale-400). Gracz pobiera tylko pliki pasujące do jego konfiguracji.
  3. Telemetria awarii: Visual Studio dołącza pliki symboli (.appxsym). W razie awarii panel Partner Center wyświetla pełny ślad stosu (stack trace) z numerami linii kodu.

2. Konfiguracja projektu

W pliku .csproj gry włącz obsługę wielu platform oraz kopiowanie zawartości:

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

Przywróć pakiety NuGet:

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

3. Opcje menu Publish w Visual Studio

  1. Associate App with the Store...: Łączy projekt z kontem Partner Center i generuje Package.StoreAssociation.xml.
  2. Convert Content Group Map File: Obsługa instalacji strumieniowej dla gier powyżej 50 GB (niepotrzebne w grach indie).
  3. Create App Packages...: Główny kreator do generowania pakietów testowych (Sideloading) lub gotowej paczki sklepowej (_bundle.appxupload).

4. Konfiguracja kreatora pakietów

  • Dystrybucja: Wybierz "Microsoft Store under a new or existing app name" dla sklepu lub "Sideloading" do testów lokalnych.
  • Architektury: Zaznacz ☑️ x86 oraz ☑️ x64 (konfiguracja Release).
  • Generowanie bundle: Generate app bundle: Always.
  • Zasada numeracji wersji: W formacie Major.Minor.Build.Revision (np. 1.0.0.0). Każdy nowy pakiet musi mieć numer wyższy od aktualnie opublikowanego. Opcja Automatically increment podnosi numer rewizji przy każdej kompilacji.

5. Konfiguracja pliku Package.appxmanifest

  • <rescap:Capability Name="runFullTrust" />: Daje grze pełne uprawnienia pulpitu niezbędne dla DirectX 11 przy zachowaniu bezpieczeństwa instalacji MSIX.
  • InitialRotationPreference="landscape": Blokuje orientację poziomą, co jest kluczowe dla przenośnych konsol z Windows (np. ASUS ROG Ally).

Warning

Zasada BadgeLogo: Ikona ekranu blokady (BadgeLogo) musi składać się wyłącznie z czysto białych pikseli (#FFFFFF) na przezroczystym tle. Jakikolwiek kolor spowoduje błąd kontrastu w teście WACK.


7. Weryfikacja WACK i rozwiązywanie problemów

  • Błąd "AppCert.exe wasn't found": Zainstaluj zestaw Windows App Certification Kit w Visual Studio Installer. Test lokalny jest opcjonalny – chmura Microsoft wykonuje go automatycznie po przesłaniu pliku.
  • Fałszywe alarmy dla plików MonoGame: Pliki .xnb lub .ogg mogą przypominać nagłówki plików binarnych, ale zespół certyfikacyjny Microsoftu traktuje je jako statyczne dane gry.

8. Testy lokalne (Sideloading)

W folderze AppPackages/YourGame_Test/ uruchom PowerShell jako administrator:

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

9. Zgłoszenie w Microsoft Partner Center

  1. Ceny i dostępność: Wybierz 240 rynków i cenę bazową w USD.
  2. Właściwości: Kategoria Games oraz link do Polityki Prywatności.
  3. Klasyfikacja wiekowa: Wypełnij ankietę IARC (gry zręcznościowe otrzymują Everyone / PEGI 3).
  4. Materiały graficzne: Zrzuty ekranu PC 1920x1080 (bez mobilnych przycisków dotykowych).
  5. Pakiety: Prześlij plik _bundle.appxupload i kliknij Submit to the Store.



Hiç yorum yok:

Yorum Gönder