次の方法で共有


PC ゲーム開発用 Visual Studio のプロジェクト テンプレート

このトピックでは、Visual Studio で使用できる Windows PC ゲーム用プロジェクト テンプレートについて説明します。

プロジェクト テンプレート

Microsoft Game Development Kit (GDK) は、次の Visual Studio C++ プロジェクト テンプレートをインストールします。

  • Direct3D 12 デスクトップ ゲーム (クラシック): "ストック" x64 MSBuild プラットフォームで Direct3D 12 と C++ を使用する Windows ゲームのプロジェクト。

  • Direct3D 12 デスクトップ ゲーム: Gaming.Desktop.x64 MSBuild カスタム プラットフォームで Direct3D 12 と C++ を使用する Windows ゲームのプロジェクト。

  • Direct3D 12 デスクトップ ゲーム メイクファイル: Direct3D 12 と C++ を使用する Windows ゲーム用のプロジェクト (外部ビルド システムを使用)。

  • デスクトップ スタティック ライブラリ: Gaming.Desktop.x64 MSBuild カスタム プラットフォームを使用した Windows スタティック ライブラリのプロジェクト。

  • デスクトップ DLL: Gaming.Desktop.x64 MSBuild カスタム プラットフォームを使用した Windows 動的リンク ライブラリのプロジェクト。

Microsoft Game Development Kit (GDK) プロジェクト テンプレートの検索

Visual Studio 2019 または Visual Studio 2022 の [新しいプロジェクトの作成] ダイアログ ボックスで検索とフィルター処理を行って、Microsoft Game Development Kit (GDK) テンプレートを見つけます。 Microsoft Game Development Kit (GDK) テンプレートは、次のスクリーンショットに示すように、C++ 言語、Windows プラットフォーム、およびゲーム プロジェクト タイプでフィルタリングすることで見つけることができます。

Visual Studio 2019 で Windows PC ゲーム テンプレートを検索するための [新しいプロジェクトの作成] ダイアログのスクリーンショット

Gaming.Desktop.x64 プラットフォーム、msbuild ファイル、およびプロパティ

Microsoft Game Development Kit (GDK) は、Windows PC ゲーム開発に使用される Gaming.Desktop.x64 という名前の msbuild プラットフォームを定義します。 Gaming.Desktop.x64 には、一連の msbuild プロパティと、必要なプリプロセッサ ディレクティブ (_GAMING_DESKTOP など) を定義するターゲット ファイル、および拡張ライブラリ (ファイルも含む)、ライブラリなどのセットアップパスが含まれており、これらはゲームのビルド時に C:\Program Files (x86)\Microsoft GDK\edition\GRDK で正しく見つかります。 Gaming.Desktop.x64 によって定義された msbuild のプロパティとターゲットの詳細については、「Microsoft Game Development Kit をインストールせずにプロジェクトを構成する」を参照してください。

Microsoft Game Development Kit (GDK) での x64 プラットフォームの使用

カスタム Gaming.Desktop.x64 MSBuild プラットフォームを使用せずに PC をターゲットにする場合、プロジェクト ファイルは必要なすべての機能を実装する必要があります。

  • 'side-by-side' インストールをサポートするには、プロジェクトで適切なエディションを選択する必要があります。 これは、Globals セクションのプロパティ セットを使用して実現できます。
<PropertyGroup Label="Globals">
...
  <GDKPCEditionPath>$(GRDKLatest)</GDKPCEditionPath>
</PropertyGroup>

GRDKLatest 環境変数の使用は、既定で開発用 PC にインストールされている最新エディションに設定され、C:\Program Files (x86)\Microsoft GDK <Edition>\GRDK\ 形式です。

ビルド設定の残りの部分では、GDKPCEditionPath プロパティを使用します。 プロジェクト ファイルの残りの部分でプロパティとして GRDKLatest を直接使用することはお勧めしません。これにより、新しいリリースの試用、更新の管理、問題の再現などが困難になります。カスタム .props ファイルを使用してビルド プロセスを推進する場合は、各プロジェクト ファイルではなくそこに GDKPCEditionPath を配置します。 また、このプロパティには、MSBuild 規則を満たすために末尾のスラッシュが必要であることにも注意してください。

VS 2019 では、x64 ネイティブ バージョンのツールも必ず使用する必要があります。 VS 2022 の場合、それは既定値であるため、省略可能です。

<PropertyGroup Label="Globals">
...
  <PreferredToolArchitecture>x64</PreferredToolArchitecture>
</PropertyGroup>
  • 必要な Microsoft Game Development Kit (GDK) 拡張機能ライブラリには、必要に応じて適切な include/lib パスと再配布 DLL が含まれている必要があります。 これは、vcxproj ファイル ExtensionSettings インポートを変更することで実現できます。
<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.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>
  • VC++ ディレクトリのプロパティ ExecutablePathIncludePathLibraryPath は、Microsoft Game Development Kit (GDK) パスを含めるために更新する必要があります。
<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>
<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>

実行可能ファイルのパスでは、 GameDK 環境変数を直接使用します。これは 'side-by-side' ではないためです。 これは、必要に応じてカスタム .props ファイルのプロパティとしてオーバーライドすることもできます。

Console_SdkIncludeRoot プロパティと Console_SdkLibPath プロパティは、x64 PC と Xbox の両方と互換性のある Microsoft Game Development Kit (GDK) ExtensionLibrary.props によって提供されます。

  • プラットフォーム ItemDefinitionGroups の場合は、ライブラリやその他のミドルウェアを使用する場合は、Gaming.Desktop.x64 との一貫性を保つためにプリプロセッサ定義に _GAMING_DESKTOP を追加してください。
 <PreprocessorDefinitions>_GAMING_DESKTOP;WIN32;_DEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
<PreprocessorDefinitions>_GAMING_DESKTOP;WIN32;NDEBUG;_WINDOWS;%(PreprocessorDefinitions)</PreprocessorDefinitions>
  • また、ItemDefinitionGroups で、次のライブラリを追加のライブラリ依存関係に追加します。 具体的には、PC 上で GameRuntime に xgameruntime.lib と GameInput の gameinput.lib です。
<AdditionalDependencies>xgameruntime.lib;gameinput.lib;d3d12.lib;dxgi.lib;dxguid.lib;uuid.lib;kernel32.lib;user32.lib;%(AdditionalDependencies)</AdditionalDependencies>
  • 最後に必要な要素は、ビルド出力で必要なソース MicrosoftGameConfig.mgc ファイルを MicrosoftGame.config に変換することです。 これは、ビルドのカスタマイズとして実装できます:
<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>

MicrosoftGame.config では、必要なロゴアセットも有効にする必要があります。これは、コピー ファイルを使用して実行できます:

<ItemGroup>
  <CopyFileToFolders Include="GraphicsLogo.png" />
  <CopyFileToFolders Include="LargeLogo.png" />
  <CopyFileToFolders Include="SmallLogo.png" />
  <CopyFileToFolders Include="SplashScreen.png" />
  <CopyFileToFolders Include="StoreLogo.png" />
</ItemGroup>

Direct3D 12 デスクトップ ゲーム (クラシック) テンプレートからプロジェクトを作成し、上記の設定といくつかの追加の推奨事項を確認します。

関連項目

Visual Studio (PC ゲーム開発用)