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

# Develop a new GDK title

> Create a new GDK title in Visual Studio using project templates for Windows PC, XBOX Series X|S consoles, or a cross-platform build that targets both.

This is step 3 of the guided path. Install the GDK and build a sample from [Set up and install the GDK](/home/setup-install/get-started) before starting here.

Every GDK game starts as a Visual Studio project. You select a template based on where you want your game to run: Windows PC only, XBOX consoles only, or both targets from the same code. You don't need to finalize this now, because you can add another target later.

<Tip>
  If you're not sure which target to pick, start with **Desktop** (`Gaming.Desktop.x64`) when you have a Windows PC and no dev kit yet. You can test everything locally. Add XBOX targets after you receive a dev kit.
</Tip>

## Project templates

Installing the GXDK adds nine GDK project templates to Visual Studio: five for PC and four for XBOX consoles.

| Target      | Template                           | Description                                                             |
| ----------- | ---------------------------------- | ----------------------------------------------------------------------- |
| **Desktop** | Direct3D 12 Desktop Game (Classic) | Standalone PC game on the stock x64 MSBuild platform.                   |
|             | Direct3D 12 Desktop Game           | Standalone PC game on the `Gaming.Desktop.x64` custom MSBuild platform. |
|             | Direct3D 12 Desktop Game Makefile  | PC game built from a makefile through the command prompt.               |
|             | Desktop Static Library             | Static lib targeting `Gaming.Desktop.x64`.                              |
|             | Desktop DLL                        | DLL targeting `Gaming.Desktop.x64`.                                     |
| **Console** | Direct3D 12 XBOX Game              | Standalone XBOX game executable.                                        |
|             | Direct3D 12 XBOX Game Makefile     | XBOX game built from a makefile.                                        |
|             | XBOX Static Library                | Static lib targeting the XBOX platforms.                                |
|             | XBOX DLL                           | DLL targeting the XBOX platforms.                                       |

## Create a project

1. Open Visual Studio.
2. Go to **File** > **New** > **Project**.
3. In **All Languages**, select **C++**. In **All Platforms**, select **XBOX** or **Windows**. In **All Project Types**, select **Games**. You can also search by template name.
4. Select a template and select **OK**.

## Select a template

### PC only

Start with **Direct3D 12 Desktop Game**.

* Uses `WINAPI_FAMILY_DESKTOP_APP` and links against the full set of PC libraries, including `kernel32.lib` and `user32.lib`.
* Includes headers and libraries for D3D12. Provides a simple swap chain, D3D device, and update or render loop.
* Includes `XGameRuntime.h` and links `XGameRuntime.lib`. All GDK Gaming Runtime capabilities are ready.
* XSAPI extension library available by default.
* Builds against the stock x64 platform or the custom `Gaming.Desktop.x64` platform.
* Creates a `MicrosoftGameConfig.mgc` file with placeholders for your Partner Center identity.

### XBOX only

Start with **Direct3D 12 XBOX Game**.

* Uses `WINAPI_FAMILY_GAMES` and links against `XGamePlatform.lib`.
* Includes D3D12 headers ready for XBOX D3D12.x extensions.
* Includes `XGameRuntime.h` and links `XGameRuntime.lib`.
* XSAPI extension library available by default.
* Uses the `Gaming.XBOX.XboxOne.x64` MSBuild platform with remote-debug expectations.
* Creates a `MicrosoftGameConfig.mgc` file with placeholders.

### PC and XBOX (shared codebase)

Start with one template, for example **Direct3D 12 Desktop Game**, and add a second build configuration targeting `Gaming.XBOX.XboxOne.x64` (or vice versa).

Tailor source code with `#define` or `#ifdef` guards, or partition platform-specific code into separate DLLs:

* The PC configuration uses stock D3D12.
* The XBOX configuration uses D3D12.x.

Switching the active configuration changes the debugger, linked libs, and other tooling settings automatically.

## Ship end-to-end on a dev kit

Before you select a deeper path, work through the hands-on console walkthrough. It takes the **Direct3D 12 XBOX Game** template you created through a running loose deployment on an XBOX dev kit. From there, it produces an installable XVC.

<Card title="Build and run your first console title with GDKX" icon="gamepad" horizontal href="/home/build-first-title/first-console-title-walkthrough">
  14-step tutorial: pin the GDK edition, add DirectXTK12, build for XBOX Series X|S consoles, deploy to a dev kit, diagnose launch failures, and produce an installable XVC.
</Card>

## Next steps

You have a project building. Select the curated path that matches what you're shipping. The guide points you to the deeper docs (Build, Services, Optimize, Publishing, and API References) you need next.

<CardGroup cols={2}>
  <Card title="Porting" icon="arrow-right-arrow-left" href="/paths/porting/overview">
    Port a shipped title from another platform.
  </Card>

  <Card title="XBOX Play Anywhere" icon="globe" href="/paths/play-anywhere/overview">
    One purchase, PC and console. Shared saves.
  </Card>

  <Card title="XBOX Series X|S consoles" icon="tv" href="/paths/series-xs/overview">
    Console-first: Quick Resume, DirectStorage, and Smart Delivery.
  </Card>

  <Card title="Windows and ROG XBOX Ally" icon="laptop" href="/paths/windows/overview">
    Ship on Windows PC and handhelds.
  </Card>

  <Card title="Unreal Engine" icon="gamepad" href="/paths/unreal/overview">
    GDK plugins and platform extensions for Unreal.
  </Card>

  <Card title="Unity" icon="cube" href="/paths/unity/overview">
    Unity integration for PC and XBOX.
  </Card>

  <Card title="Godot and community engines" icon="code" href="/paths/community-engines/overview">
    Godot, GameMaker, and custom-engine notes.
  </Card>
</CardGroup>

<Tip>
  Most titles pair the GDK with [PlayFab](/services/playfab/get-started) for identity, multiplayer, leaderboards, economy, and live-ops. You can wire it in any time after your project builds.
</Tip>

## See also

* [Porting guides](/home/build-first-title/porting-guides): Technical index of porting topics (ERA to GDK, shaders, GameInput, and Steamworks mapping).
* [MicrosoftGame.config overview](/build/core-features/common/game-config/MicrosoftGameConfig-Overview).
* [Packaging your game](/build/core-features/common/packaging/overviews/packaging).


## Related topics

- [Build and run your first console title with GDKX](/home/build-first-title/first-console-title-walkthrough.md)
- [Porting guides to the XBOX GDK](/home/build-first-title/porting-guides.md)
- [Start a new PC title with GDK project templates](/build/gdk-and-engines/guides/gdk-project-templates.md)
- [Develop](/services/xbox-services/develop/index.md)
- [News](/services/playfab/live-service-management/game-configuration/title-communications/news/index.md)
