> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Modèles de projet dans Visual Studio pour le développement de jeux sur PC

> Modèles de projet dans Visual Studio pour le développement de jeux sur PC

Cette rubrique décrit les modèles de projet de jeux pour PC Windows disponibles dans Visual Studio.

## Modèles de projet

Le Microsoft Game Development Kit (GDK) installe les modèles de projet Visual Studio C++ suivants.

* **Direct3D 12 Desktop Game (Classic) :** projet de jeu Windows qui utilise Direct3D 12 et C++ avec la plateforme MSBuild x64 « standard ».
* **Direct3D 12 Desktop Game :** projet de jeu Windows qui utilise Direct3D 12 et C++ avec la plateforme personnalisée MSBuild Gaming.Desktop.x64.
* **Direct3D 12 Desktop Game Makefile :** projet de jeu Windows qui utilise Direct3D 12 et C++ à l'aide d'un système de build externe.
* **Desktop Static Library :** projet de bibliothèque statique Windows avec la plateforme personnalisée MSBuild Gaming.Desktop.x64.
* **Desktop DLL :** projet de bibliothèque de liens dynamiques Windows avec la plateforme personnalisée MSBuild Gaming.Desktop.x64.

### Modèle autonome

Au lieu d'utiliser les modèles GDK installés pour le développement sur ordinateur de bureau et sur appareil portable, vous pouvez utiliser un modèle de projet entièrement autonome qui s'appuie sur le [gestionnaire de packages vc](https://aka.ms/vcpkg) pour ajouter les versions packagées du *Microsoft GDK*, du *DirectX 12 Agility SDK*, etc. Il peut servir de base pour une publication dans le Microsoft Store et l'application XBOX pour PC. Ce package inclut un modèle de projet MSBuild et un modèle de projet CMake, et nécessite Visual Studio 2022 v17.6 ou version ultérieure.

Voir [Visual Studio Marketplace](https://aka.ms/gdktemplates).

## Localiser les modèles de projet du Microsoft Game Development Kit (GDK)

Localisez les modèles du Microsoft Game Development Kit (GDK) en effectuant une recherche et en filtrant dans la boîte de dialogue **Créer un projet** de Visual Studio 2019 ou Visual Studio 2022. Vous trouverez les modèles du Microsoft Game Development Kit (GDK) en filtrant sur le langage **C++**, la plateforme **Windows** et le type de projet **Jeux**, comme illustré dans la capture d'écran suivante.

<img src="https://mintcdn.com/microsoft-4404708b/6TXzXmujKayly5Sf/images/gdk/tools/vs_2019_pc_templates.png?fit=max&auto=format&n=6TXzXmujKayly5Sf&q=85&s=69a6e437793926b85bda150574bff5f3" alt="Capture d'écran de la boîte de dialogue Créer un projet dans Visual Studio 2019 pour localiser les modèles de jeux pour PC Windows" width="903" height="628" data-path="images/gdk/tools/vs_2019_pc_templates.png" />

## La plateforme Gaming.Desktop.x64, les fichiers msbuild et les propriétés

Le Microsoft Game Development Kit (GDK) définit une plateforme msbuild nommée Gaming.Desktop.x64, à utiliser pour le développement de jeux pour PC Windows. Gaming.Desktop.x64 inclut un ensemble de fichiers de propriétés et de cibles msbuild qui définissent les directives de préprocesseur requises (comme `_GAMING_DESKTOP`) et configurent les chemins de sorte que, par exemple, les bibliothèques d'extension, les fichiers include et les bibliothèques soient correctement trouvés sous *C:\Program Files (x86)\Microsoft GDK\edition\GRDK* lors de la génération de votre jeu. Pour plus de détails sur les propriétés et cibles msbuild définies par la plateforme Gaming.Desktop.x64, voir [Configuration de projets sans installer le Microsoft Game Development Kit](/fr-CA/build/console-features/build-without-install/project-configuration-withoutinstall).

## Utilisation de la plateforme x64 avec le Microsoft Game Development Kit (GDK)

Lorsque vous ciblez le PC sans utiliser la plateforme MSBuild personnalisée Gaming.Desktop.x64, les fichiers projet doivent implémenter toutes les fonctionnalités requises.

* Pour prendre en charge l'installation « côte à côte », le projet doit sélectionner l'édition appropriée. Pour cela, vous pouvez définir une propriété dans la section *Globals* :

```xml theme={null}
<PropertyGroup Label="Globals">
...
  <GDKPCEditionPath>$(GRDKLatest)</GDKPCEditionPath>
</PropertyGroup>
```

L'utilisation de la variable d'environnement `GRDKLatest` sélectionne par défaut la dernière édition installée sur le PC de développement, et prend la forme **C:\Program Files (x86)\Microsoft GDK\<edition>\GRDK\\**.

> Nous utilisons la propriété **GDKPCEditionPath** dans le reste des paramètres de build. L'utilisation directe de `GRDKLatest` comme propriété dans le reste du fichier projet n'est pas recommandée, car cela complique l'essai de nouvelles versions, la gestion des mises à jour, la reproduction des problèmes, etc. Si vous utilisez des fichiers .props personnalisés pour piloter votre processus de build, placez-y `GDKPCEditionPath` plutôt que dans chaque fichier projet. Notez aussi que cette propriété nécessite une barre oblique finale pour respecter les conventions MSBuild.

Pour VS 2019, vous devez aussi veiller à utiliser la version native x64 des outils. Pour VS 2022, c'est le comportement par défaut; ce paramètre est donc facultatif.

```xml theme={null}
<PropertyGroup Label="Globals">
...
  <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
```

* Toutes les bibliothèques d'extension du Microsoft Game Development Kit (GDK) requises doivent disposer des chemins include/lib appropriés, et les DLL redistribuables doivent être incluses selon les besoins. Pour cela, vous pouvez modifier les importations *ExtensionSettings* du fichier vcxproj :

**Microsoft GDK (octobre 2024) ou version ultérieure :**

```xml theme={null}
<ImportGroup Label="ExtensionSettings">
    <Import Project="$(GDKPCEditionPath)ExtensionLibraries\Xbox.Services.API.C\ExtensionLibrary.props" />
    <Import Project="$(GDKPCEditionPath)ExtensionLibraries\Xbox.XCurl.API\ExtensionLibrary.props" />
    <Import Project="$(GDKPCEditionPath)ExtensionLibraries\Xbox.LibHttpClient\ExtensionLibrary.props" />
    <Import Project="$(GDKPCEditionPath)ExtensionLibraries\Xbox.Game.Chat.2.Cpp.API\ExtensionLibrary.props" />
    <Import Project="$(GDKPCEditionPath)ExtensionLibraries\PlayFab.Multiplayer.Cpp\ExtensionLibrary.props" />
    <Import Project="$(GDKPCEditionPath)ExtensionLibraries\PlayFab.Party.Cpp\ExtensionLibrary.props" />
    <Import Project="$(GDKPCEditionPath)ExtensionLibraries\PlayFab.PartyXboxLive.Cpp\ExtensionLibrary.props" />
</ImportGroup>
```

**Microsoft GDK (juin 2024) ou version antérieure :**

```xml theme={null}
<ImportGroup Label="ExtensionSettings">
    <Import Project="$(GDKPCEditionPath)ExtensionLibraries\Xbox.Services.API.C\DesignTime\CommonConfiguration\Neutral\ExtensionLibrary.props" />
    <Import Project="$(GDKPCEditionPath)ExtensionLibraries\Xbox.XCurl.API\DesignTime\CommonConfiguration\Neutral\ExtensionLibrary.props" />
    <Import Project="$(GDKPCEditionPath)ExtensionLibraries\Xbox.LibHttpClient\DesignTime\CommonConfiguration\Neutral\ExtensionLibrary.props" />
    <Import Project="$(GDKPCEditionPath)ExtensionLibraries\Xbox.Game.Chat.2.Cpp.API\DesignTime\CommonConfiguration\Neutral\ExtensionLibrary.props" />
    <Import Project="$(GDKPCEditionPath)ExtensionLibraries\PlayFab.Multiplayer.Cpp\DesignTime\CommonConfiguration\Neutral\ExtensionLibrary.props" />
    <Import Project="$(GDKPCEditionPath)ExtensionLibraries\PlayFab.Party.Cpp\DesignTime\CommonConfiguration\Neutral\ExtensionLibrary.props" />
    <Import Project="$(GDKPCEditionPath)ExtensionLibraries\PlayFab.PartyXboxLive.Cpp\DesignTime\CommonConfiguration\Neutral\ExtensionLibrary.props" />
</ImportGroup>
```

* Les propriétés des répertoires VC++ **ExecutablePath**, **IncludePath** et **LibraryPath** doivent être mises à jour pour inclure les chemins du Microsoft Game Development Kit (GDK).

```xml theme={null}
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Debug|x64'">
  <ExecutablePath>$(GameDK)bin;$(ExecutablePath)</ExecutablePath>
  <IncludePath>$(GDKPCEditionPath)GameKit\Include;$(Console_SdkIncludeRoot);$(IncludePath);</IncludePath>
  <LibraryPath>$(GDKPCEditionPath)GameKit\lib\amd64;$(Console_SdkLibPath);$(LibraryPath)</LibraryPath>
</PropertyGroup>
```

```xml theme={null}
<PropertyGroup Condition="'$(Configuration)|$(Platform)'=='Release|x64'">
  <ExecutablePath>$(GameDK)bin;$(ExecutablePath)</ExecutablePath>
  <IncludePath>$(GDKPCEditionPath)GameKit\Include;$(Console_SdkIncludeRoot);$(IncludePath);</IncludePath>
  <LibraryPath>$(GDKPCEditionPath)GameKit\lib\amd64;$(Console_SdkLibPath);$(LibraryPath)</LibraryPath>
</PropertyGroup>
```

Pour le chemin des exécutables, nous utilisons directement la variable d'environnement `GameDK`, car celui-ci n'est pas « côte à côte ». Il peut aussi être remplacé par une propriété dans un fichier .props personnalisé si nécessaire.

Les propriétés **Console\_SdkIncludeRoot** et **Console\_SdkLibPath** sont fournies par les fichiers *ExtensionLibrary.props* du Microsoft Game Development Kit (GDK), qui sont compatibles à la fois avec le PC x64 et la XBOX.

* Dans les *ItemDefinitionGroups* de votre plateforme, veillez à ajouter `_GAMING_DESKTOP` aux définitions du préprocesseur, par souci de cohérence avec Gaming.Desktop.x64 lorsque vous utilisez des bibliothèques ou d'autres middlewares.

```xml theme={null}
 <PreprocessorDefinitions>_GAMING_DESKTOP;WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
```

```xml theme={null}
<PreprocessorDefinitions>_GAMING_DESKTOP;WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
```

* Toujours dans les *ItemDefinitionGroups*, ajoutez les bibliothèques suivantes à vos dépendances de bibliothèques supplémentaires. Plus précisément, `xgameruntime.lib` pour GameRuntime et `gameinput.lib` pour GameInput sur PC.

```xml theme={null}
<AdditionalDependencies>xgameruntime.lib;gameinput.lib;d3d12.lib;dxgi.lib;dxguid.lib;uuid.lib;kernel32.lib;user32.lib;%(AdditionalDependencies)</AdditionalDependencies>
```

* Le dernier élément requis consiste à convertir le fichier source **MicrosoftGameConfig.mgc** en fichier **MicrosoftGame.config** requis dans la sortie de build. Cela peut être implémenté sous forme de personnalisation de build :

```xml theme={null}
<CustomBuild Include="MicrosoftGameConfig.mgc">
  <Command>copy %(Identity) "$(OutDir)MicrosoftGame.config"
makepkg.exe localize /d "$(OutDir)" /pd "$(OutDir)" /gc "%(Identity)"</Command>
  <Message>MGC Compile</Message>
  <Outputs>$(OutDir)MicrosoftGame.config</Outputs>
</CustomBuild>
```

Le fichier **MicrosoftGame.config** nécessite aussi les ressources de logo requises pour être valide, ce que vous pouvez obtenir avec une copie de fichiers :

```xml theme={null}
<ItemGroup>
  <CopyFileToFolders Include="GraphicsLogo.png" />
  <CopyFileToFolders Include="LargeLogo.png" />
  <CopyFileToFolders Include="SmallLogo.png" />
  <CopyFileToFolders Include="SplashScreen.png" />
  <CopyFileToFolders Include="StoreLogo.png" />
</ItemGroup>
```

> Créez un projet à partir du modèle *Direct3D 12 Desktop Game (Classic)* et examinez-le pour voir les paramètres ci-dessus ainsi que quelques recommandations supplémentaires.

## Voir aussi

[Visual Studio (pour le développement de jeux sur PC)](/fr-CA/tools/tools-pc/visualstudio/gr-visualstudio-toc)


## Related topics

- [Visual Studio (sommaire)](/fr-CA/tools/tools-pc/visualstudio/gr-visualstudio-toc.md)
- [Propriétés Visual Studio pour le développement de jeux sur PC](/fr-CA/tools/tools-pc/visualstudio/gr-vs-property-pages.md)
- [Modèles de projet Visual Studio pour le développement XBOX](/fr-CA/tools/tools-console/visualstudio/durango-visual-studio-templates.md)
- [Démarrer un nouveau titre PC avec les modèles de projet du GDK](/fr-CA/build/gdk-and-engines/guides/gdk-project-templates.md)
- [Propriétés de Visual Studio pour le développement XBOX](/fr-CA/tools/tools-console/visualstudio/durango-property-pages.md)
