Learn to build your Godot 4 game for XBOX on PC. Reference GDExtension addons binding the Microsoft GDK, XBOX Services, PlayFab, and GameInput into Godot - usable from both GDScript and C#/.NET.
Warning
Breaking change: GDK* classes are now Xbox*. Every script-visible type was renamed from the GDK prefix to the Xbox prefix — GDKUser → XboxUser, GDKResult → XboxResult, GDKAchievement → XboxAchievement, and so on. The C# facade moved with them: namespace GodotGdk → GodotXbox, static class Gdk → Xbox. No deprecated GDK* aliases are provided, so type references must be updated.
Why: to let this addon enable console support inside compatible Godot forks. Those forks provide the console platform layer and expose their own types, and the GDK* prefix collided with names they already use. Moving to the Xbox* prefix keeps this addon's types distinct so it can be dropped into such a fork and light up console scenarios there. Godot itself is unchanged — the engine's own console support is not something this repo provides.
One binary covers both. The same addon build runs on PC and on console — there is no separate console compilation, preset, or #define. godot_gdk.gdextension declares only the windows.*.x86_64 libraries, and those are what a console-capable fork loads too.
The singleton is still called GDK. Calls like GDK.initialize() and GDK.users.add_default_user_async() keep working unchanged — only the type names moved. The addons/godot_gdk folder, the gdk/runtime/* Project Settings, and the godot_gdk.gdextension entry point are all unchanged as well.
# before
var r: GDKResult = GDK.initialize()
var u: GDKUser = r.data
# after
var r: XboxResult = GDK.initialize()
var u: XboxUser = r.dataOne consequence worth calling out: the ClassDB class name (Xbox) and the singleton name (GDK) are now different strings. If your code class-checks the singleton, compare against "Xbox" — is_class("GDK") no longer matches.
See Migrating to v0.3.0 for the full old → new table, or run the codemod:
.\tools\migrate_gdk_to_xbox.ps1 -Path <your-project> -WhatIfImportant
This is a source-only sample, not a product. The repository is MIT-licensed at the wrapper layer; the Microsoft GDK and PlayFab dependencies still require their own installs and license acceptance, consistent with other XBOX samples. There is no specified update cadence for support or maintenance. We'll watch the repo, monitor issues, and iterate where it makes sense, but this isn't a commercial release. We are excited to hear your feedback, and see any community PRs, as we evolve this together.
This is a sample specific to XBOX on PC. There is no specific support for XBOX Series X|S or XBOX One. Please talk with your Microsoft representative if you'd like to learn more about support on those platforms.
| I want to… | Start here |
|---|---|
| Drop the addons into an existing Godot project | Addons quickstart |
| Clone and build the sample from source | Getting started |
| Follow a guided, task-oriented walkthrough | Tutorials |
| Set up an XBOX sandbox and test accounts | Sandbox and test accounts |
| Fix a build or runtime error | Troubleshooting |
| Browse the full documentation tree | Documentation index |
A working source-only reference for building a Godot extension that wraps the Microsoft GDK, XBOX Services, and PlayFab, and lets you build your title for XBOX on PC - without leaving the engine you already love.
The sample covers roughly 85–95% of the surface area a Godot developer needs to ship for XBOX on PC, across:
- GDK platform services and XBOX services (identity, achievements, presence, social, profile, privacy, multiplayer activity, stats, leaderboards, title storage, package metadata + DLC, XStore commerce, GameUI, accessibility, capture, launcher, error reporting)
- PlayFab Core + Services (accounts, catalog, cloud script, entity data, experimentation, friends, groups, inventory, localization, player data, statistics, title data)
- PlayFab Multiplayer (Lobby, Matchmaking, Party)
- PlayFab Game Saves
- Microsoft GameInput v3 controller support - devices, polling, rumble, and an action bridge into Godot's
Input/InputMap
The PlayFab extension sample code does not have a specific dependency on the Microsoft GDK extension sample code, so the two can be adopted modularly - use either on its own, or compose them (e.g. sign in to PlayFab with the XBOX user provided by the GDK side).
The sample is intended to give you insights and re-usable integration code that you can leverage in your own game. The default (vcpkg) build targets the April 2026 Microsoft GDK out of the box; the sample also builds against an installed October 2025 Microsoft GDK (edition 251001) or later via the installed-gdk preset and -DGDK_VERSION=<edition> - see Source for the Microsoft GDK dependency.
This is the first step in our XBOX Godot Sample integration journey. We plan to evolve it over time based on what the community tells us is most valuable.
The addons are designed to be dropped into any Godot 4.5+ project. This repository is where the addons are authored, built, tested, and demonstrated through the tutorial sample projects under sample/tutorial_gdk/, sample/tutorial_playfab/, sample/tutorial_integrated/, and sample/tutorial_gameinput/. Build the addons from source per Getting started, then drop the addon folders into your project.
| Addon | Description |
|---|---|
godot_gdk |
GDK runtime + PC-supported XBOX services: users, achievements, presence, social, profile, privacy, multiplayer activity, stats, leaderboards, title storage, string verification, package metadata + DLC, XStore commerce, GameUI, accessibility, capture, launcher, error reporting, system metadata |
godot_playfab |
PlayFab runtime, XBOX- and custom-ID sign-in, Game Saves, leaderboards, Multiplayer (lobby + matchmaking), Party, and client-safe service wrappers (accounts, catalog, cloud script, entity data, experimentation, friends, groups, inventory, localization, player data, statistics, title data) |
godot_gameinput |
Native GameInput v3 controller support - devices, polling, vibration, and an action bridge into Godot's InputMap |
godot_gdk_editortools |
Pure-GDScript editor plugin for PC MSIXVC packaging via makepkg.exe, plus the in-editor Package Manager dialog |
Full documentation lives in docs/.
Start here:
- Documentation index - full doc tree
- Getting started - clone, build, install the addons in your own Godot project, and sign in
- Addons quickstart - drop the addons into an existing Godot project
- Tutorials - task-oriented walkthroughs (sign-in, achievements, leaderboards, Game Saves, lobbies, Multiplayer Activity, PlayFab Party, integration tech demo) plus a standalone GameInput track
- Troubleshooting - common build, runtime, and test issues
Per-addon documentation:
godot_gdk- runtime, services, async system, build, editor toolinggodot_playfab- runtime configuration, user sessions, Game Saves, leaderboards, client servicesgodot_gameinput- devices, polling, vibration, action bridgegodot_gdk_editortools- headless packaging runner; see also the editorGDKmenu
Platform setup:
Design specs live in spec/ - design intent that is not always reflective of the current implementation.
- Microsoft GDK - Microsoft GDK product details
- PlayFab Unified SDK - PlayFab Unified SDK product details
- GameInput - GameInput product details
- Docs - documentation on XBOX development with Godot on Microsoft GDK Learn website
- Issues - list of issues & feedback related to XBOX Godot sample
- Godot C# Essentials - learning content provided by Microsoft on using Godot with C#
- Report a bug - file a bug report with repro steps, Godot engine version, and GDK version
- Open an issue - pick from the available issue templates
SUPPORT.md- how to file issuesCONTRIBUTING.md- CLA and Code of ConductSECURITY.md- security vulnerability reporting (MSRC; please do not file security issues via GitHub)CODE_OF_CONDUCT.md- Microsoft Open Source Code of Conduct