20 Eylül 2026 Pazar

Publier des jeux de bureau MonoGame sur le Microsoft Store : Le guide complet MSIX et WAP




Publier des jeux de bureau MonoGame sur le Microsoft Store : Le guide complet MSIX et WAP

Publier un jeu indépendant sur le Microsoft Store sous Windows 10 et Windows 11 offre aux développeurs un accès direct à des centaines de millions de joueurs PC, des mises à jour automatiques en arrière-plan, l'intégration de la Windows Game Bar et la sécurité d'une installation conteneurisée. Cependant, si votre jeu est conçu avec MonoGame (.NET 8.0 ou .NET 9.0 WindowsDX), son déploiement sur le Store nécessite une passerelle architecturale : faire le lien entre un exécutable Win32 classique (.exe) et le modèle d'application moderne MSIX / AppX.

Chez Arar Games, nous avons validé l'ensemble de ce pipeline avec nos titres Paint Trek et Blocked: Pixel Panzer, de la compilation initiale à la publication finale. Dans ce guide technique, nous détaillons chaque étape : configuration des projets, maîtrise des options du menu Publish de Visual Studio, paramétrage du Package.appxmanifest, dimensionnement des tuiles graphiques, résolution des erreurs WACK et soumission sur le Microsoft Partner Center.


1. Fondations architecturales : Win32 vs MSIX

Les jeux MonoGame traditionnels se compilent en un binaire Win32 classique accompagné de bibliothèques d'exécution (.dll) et d'un dossier Content/ contenant les ressources compilées (textures .xnb, fichiers audio .ogg, shaders HLSL).

L'intégration du jeu dans un projet Windows Application Packaging (WAP) pour produire un MSIX bundle apporte des bénéfices déterminants :

  1. Cycle de vie conteneurisé et propre : Les applications MSIX s'exécutent dans un environnement isolé. Lors de la désinstallation, tous les fichiers et clés de registre virtualisées sont supprimés sans laisser aucun résidu.
  2. Distribution dynamique et taille réduite : Une archive unique .appxupload regroupe les binaires x86 et x64 ainsi que les packs de mise à l'échelle DPI (scale-100 à scale-400). Les joueurs ne téléchargent que les données adaptées à leur matériel.
  3. Télémétrie de crash automatisée : Visual Studio intègre les symboles de débogage (.appxsym). En cas d'erreur, le tableau de bord du Partner Center affiche la trace complète de la pile d'appels avec les numéros de ligne.

2. Hiérarchie et configuration du projet

Dans le fichier .csproj principal, configurez la prise en charge multiplateforme et la copie du contenu :

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

Restauration des packages NuGet :

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

3. Comprendre le menu Publish de Visual Studio

En faisant un clic droit sur le projet WAP puis en sélectionnant Publish, trois options apparaissent :

  1. Associate App with the Store... (Associer l'application au Store) : Connecte le projet à votre compte développeur, extrait les identifiants officiels et génère Package.StoreAssociation.xml.
  2. Convert Content Group Map File : Outil dédié à l'installation en streaming pour les jeux colossaux (+50 Go). Non requis pour les jeux indépendants.
  3. Create App Packages... (Créer les packages d'application) : L'assistant principal pour concevoir les paquets de test local (Sideloading) ou l'archive pour le Store (_bundle.appxupload).

4. Configuration de l'assistant de création de package

  • Méthode de distribution : Choisissez "Microsoft Store under a new or existing app name" pour le Store ou "Sideloading" pour vos tests internes.
  • Architectures : Cochez ☑️ x86 et ☑️ x64 en configuration Release.
  • Génération de bundle : Generate app bundle: Always.
  • Règle absolue de versioning : Format Major.Minor.Build.Revision (ex. 1.0.0.0). Tout nouveau paquet envoyé sur le Partner Center doit impérativement posséder un numéro de version supérieur au paquet actuellement publié. L'option Automatically increment incrémente automatiquement le numéro de révision à chaque build.

5. Maîtriser le fichier Package.appxmanifest

  • <rescap:Capability Name="runFullTrust" /> : MonoGame s'appuyant sur DirectX 11 et des appels natifs via SharpDX/SDL, cette autorisation accorde les privilèges complets d'exécution de bureau tout en préservant l'isolation MSIX.
  • InitialRotationPreference="landscape" : Verrouille l'orientation en mode paysage, indispensable pour les consoles PC portables (ASUS ROG Ally, Lenovo Legion Go).

Warning

Règle stricte du BadgeLogo : L'icône de l'écran de verrouillage (BadgeLogo) doit être exclusivement composée de pixels blancs purs (#FFFFFF) et de transparence. L'utilisation de couleurs ou de dégradés provoquera un échec au test de contraste WACK.


7. Validation WACK et résolution d'incidents

  • Erreur "AppCert.exe wasn't found" : Installez le composant Windows App Certification Kit depuis Visual Studio Installer. Le test local est facultatif : l'infrastructure cloud de Microsoft procède automatiquement à ces contrôles lors du téléversement.
  • Faux positifs sur les fichiers MonoGame : Les fichiers compressés .xnb ou .ogg peuvent fortuitement présenter des séquences d'octets proches d'en-têtes exécutables. La certification Microsoft les reconnaît comme du contenu statique de jeu et valide la publication.

8. Test local via Sideloading

Dans le répertoire AppPackages/YourGame_Test/, exécutez PowerShell en tant qu'administrateur :

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

9. Liste de contrôle Microsoft Partner Center

  1. Tarification et disponibilité : Sélectionnez l'ensemble des 240 marchés mondiaux et définissez le prix de base en USD.
  2. Propriétés : Catégorie Games et lien vers votre politique de confidentialité (Privacy Policy URL).
  3. Classification d'âge (IARC) : Remplissez le formulaire (les jeux d'arcade obtiennent généralement Everyone / PEGI 3).
  4. Fiche du Store : Téléversez des captures d'écran PC en 1920x1080 (sans boutons tactiles mobiles).
  5. Packages : Glissez-déposez le fichier _bundle.appxupload et cliquez sur Submit to the Store.



Hiç yorum yok:

Yorum Gönder