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:
- Izolowany cykl życia: Aplikacje MSIX działają w odizolowanym kontenerze. Przy odinstalowaniu wszystkie pliki i wirtualne wpisy rejestru są czyszczone bez śladu.
- Optymalizacja rozmiaru: Pojedynczy pakiet
.appxuploadłączy wersjex86ix64oraz skale DPI (scale-100doscale-400). Gracz pobiera tylko pliki pasujące do jego konfiguracji. - 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
- Associate App with the Store...: Łączy projekt z kontem Partner Center i generuje
Package.StoreAssociation.xml. - Convert Content Group Map File: Obsługa instalacji strumieniowej dla gier powyżej 50 GB (niepotrzebne w grach indie).
- 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 ☑️
x86oraz ☑️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. OpcjaAutomatically incrementpodnosi 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).
6. Wymagania graficzne i reguła BadgeLogo
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
.xnblub.oggmogą 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
- Ceny i dostępność: Wybierz 240 rynków i cenę bazową w USD.
- Właściwości: Kategoria
Gamesoraz link do Polityki Prywatności. - Klasyfikacja wiekowa: Wypełnij ankietę IARC (gry zręcznościowe otrzymują Everyone / PEGI 3).
- Materiały graficzne: Zrzuty ekranu PC 1920x1080 (bez mobilnych przycisków dotykowych).
- Pakiety: Prześlij plik
_bundle.appxuploadi kliknij Submit to the Store.
Hiç yorum yok:
Yorum Gönder