diff --git a/.mintlify/Assistant.md b/.mintlify/Assistant.md new file mode 100644 index 00000000..d6a27c6f --- /dev/null +++ b/.mintlify/Assistant.md @@ -0,0 +1,28 @@ +**Language Matching Policy** + +Always respond in the same language the user writes in. This is determined by the language of the user's message, not by their location, name, or any other signal. + +**Detection rules:** + +- Identify the primary language of the user's most recent message and respond entirely in that language. +- If the user switches languages mid-conversation, switch with them. Match the language of their latest message, not earlier ones. +- If a message mixes languages, respond in the dominant language of the message. If it's roughly even, respond in the language the user used for their actual question or request (as opposed to quoted material, code, or pasted content). +- Quoted text, code snippets, error messages, file contents, and pasted documents do not count toward language detection — only the user's own words do. For example, if a user writes in Spanish asking about an English error log, respond in Spanish. + +**Response quality requirements:** + +- Use natural, fluent, idiomatic phrasing in the target language — not literal translations of English sentence structures. +- Match the appropriate register and formality conventions of that language (e.g., usted/tú in Spanish, Sie/du in German, keigo considerations in Japanese) based on the user's own tone. +- Keep technical terms, proper nouns, product names, and code in their original form where that is the convention in the target language. Do not translate code, variable names, commands, or API parameters. +- Formatting conventions (dates, numbers, currency, punctuation such as « » or 「」) should follow the norms of the target language where natural. + +**Edge cases:** + +- If you cannot confidently identify the language, default to English and ask the user to confirm their preferred language. +- If the user explicitly requests a specific response language ("answer in English even though I'm writing in French"), honor that explicit instruction over the matching rule. +- Transliterated text (e.g., Hindi written in Latin script, "Romaji" Japanese) counts as that language — respond in the same script and style the user used, unless they ask otherwise. +- Very short messages with no clear language (e.g., "ok", "?", an emoji) inherit the language of the prior conversation turn. + +**Consistency:** + +- Apply the language choice to the entire response, including headings, lists, captions, and any closing remarks. Do not mix English boilerplate into a non-English response. diff --git a/docs.json b/docs.json index 7c003051..9a51fd34 100644 --- a/docs.json +++ b/docs.json @@ -49,16 +49,6 @@ "github": "https://github.com/microsoft/Xbox-GDK-Samples" } }, - "fonts": { - "heading": { - "family": "Open Sans", - "weight": 700 - }, - "body": { - "family": "Open Sans", - "weight": 400 - } - }, "styling": { "eyebrows": "breadcrumbs" }, @@ -180,7 +170,7 @@ ] }, { - "tab": "Build & Develop", + "tab": "Build", "groups": [ { "group": "Core Features", @@ -342,7 +332,7 @@ ] }, { - "tab": "Publishing & Commerce", + "tab": "Publishing", "groups": [ { "group": "Publishing & Commerce", @@ -491,5 +481,19 @@ ] } ] + }, + "fonts": { + "heading": { + "family": "Segoe UI", + "source": "/fonts/SegoeUI-Bold.woff", + "format": "woff", + "weight": 700 + }, + "body": { + "family": "Segoe UI", + "source": "/fonts/SegoeUI.woff", + "format": "woff", + "weight": 400 + } } } diff --git a/fonts/SegoeUI-Bold.woff b/fonts/SegoeUI-Bold.woff new file mode 100644 index 00000000..b19a7c0b Binary files /dev/null and b/fonts/SegoeUI-Bold.woff differ diff --git a/fonts/SegoeUI.woff b/fonts/SegoeUI.woff new file mode 100644 index 00000000..dac9eac4 Binary files /dev/null and b/fonts/SegoeUI.woff differ diff --git a/index.mdx b/index.mdx index 57293172..58dc68a9 100644 --- a/index.mdx +++ b/index.mdx @@ -2,6 +2,7 @@ title: "XBOX Documentation Hub" sidebarTitle: "Home" description: "Xbox game development documentation to develop and publish XBOX games using Microsoft products, tools, and services." +icon: "house" ---
@@ -14,55 +15,52 @@ description: "Xbox game development documentation to develop and publish XBOX ga Jump into the guides most teams use first, from environment setup to release notes and reference material. +
+ +
+ Get started with the GDK +

Pick a development path, install the toolchain, and build your first console or PC project.

+ Read guide → +
+
+ +
-

Onboard with ID\@Xbox

- + Onboard with ID@Xbox

Complete the NDA, concept approval, and Partner Center setup that unlock GDK access.

Read guide → +
-
- -
-

Get started with the GDK

-

Pick a development path, install the toolchain, and build your first console or PC project.

- Read guide → -
- -
- - - -
-

Download & install

- -

- Grab the latest GDK release and configure Visual Studio for Xbox and - Windows targets. -

- - Read guide → -
- -
- + +
+ Download & install +

+ Grab the latest GDK release and configure Visual Studio for Xbox and + Windows targets. +

+ Read guide → +
+
+
-

API reference

+ API reference

Browse Gaming Runtime, Xbox Services, and platform APIs across the full GDK surface.

Read guide →
@@ -75,13 +73,15 @@ Choose the entry point that matches your platform, engine, and stage of developm Write once with the shared Game Core model and target Xbox Series X|S, Xbox One, and Windows PC. - - Add player accounts, economy, multiplayer, and live ops with PlayFab managed services. - + + Add player accounts, economy, multiplayer, and live ops with PlayFab managed + services. + - - Wire up achievements, leaderboards, multiplayer, cloud saves, and social features. - + + Wire up achievements, leaderboards, multiplayer, cloud saves, and social + features. + Package your title, meet certification, and ship to the Microsoft Store and Xbox. @@ -97,21 +97,21 @@ The features most teams reach for while building a title. Define identity, capabilities, and packaging metadata in `MicrosoftGame.config`. - - Build MSIXVC and loose packages for testing, submission, and distribution. - + + Build MSIXVC and loose packages for testing, submission, and distribution. + - - Persist progress with connected storage that roams across devices. - + + Persist progress with connected storage that roams across devices. + - - Handle gamepads, keyboard, and mouse with the GameInput API. - + + Handle gamepads, keyboard, and mouse with the GameInput API. + - - Connect players with secure sockets, peer-to-peer, and service traffic. - + + Connect players with secure sockets, peer-to-peer, and service traffic. + Manage local and connected storage across console and PC. @@ -127,21 +127,33 @@ Tools, samples, and references to keep you moving. Profilers, deployment, and diagnostics for console and PC development. - - Set up project templates, debugging, and deployment for GDK titles. - - - - Configure sandboxes, test accounts, and service-side settings. - - - - Gaming Runtime, Xbox Services, and platform API documentation. - - - - Look up GDK and Xbox Services error codes and how to resolve them. - + + Set up project templates, debugging, and deployment for GDK titles. + + + + Configure sandboxes, test accounts, and service-side settings. + + + + Gaming Runtime, Xbox Services, and platform API documentation. + + + + Look up GDK and Xbox Services error codes and how to resolve them. + Browse official, buildable samples on GitHub for every major feature. @@ -160,4 +172,4 @@ Use the getting started guides to set up your environment, choose a platform pat Onboarding → -
\ No newline at end of file +
diff --git a/onboarding.mdx b/onboarding.mdx index f8d9e7dd..c23a035c 100644 --- a/onboarding.mdx +++ b/onboarding.mdx @@ -7,10 +7,10 @@ icon: "id-card" Before you can download the GDK, configure a title in Partner Center, or use any of the products and features described in the rest of this documentation, your studio must complete **ID@Xbox onboarding**. This page walks through every step in order, calls out the steps that block GDK access, and sets realistic timing expectations. -/ - - Full onboarding typically takes **~1–2 weeks minimum**, sometimes longer depending on review cycles and contract turnaround. Plan it into your production schedule — do not assume same-day access. + Full onboarding typically takes **~1–2 weeks minimum**, sometimes longer + depending on review cycles and contract turnaround. Plan it into your + production schedule — do not assume same-day access. ## At a glance @@ -20,13 +20,15 @@ Before you can download the GDK, configure a title in Partner Center, or use any The [ID@Xbox onboarding hub](https://www.xbox.com/en-US/developers/id) — not Partner Center, not the Microsoft Store. - - GDK documentation, GDK software downloads (SDS site), Partner Center publishing, and Xbox services. - + + GDK documentation, GDK software downloads (SDS site), Partner Center + publishing, and Xbox services. + - - Skipping the ID@Xbox flow (for example, creating Partner Center independently) breaks role assignment and blocks GDK access. - + + Skipping the ID@Xbox flow (for example, creating Partner Center independently) + breaks role assignment and blocks GDK access. + ~2 weeks minimum from first registration to a fully provisioned dev environment. @@ -51,6 +53,7 @@ Prepare a **fresh Personal Microsoft Account (MSA)** that is not tied to any exi **NDA delivery:** typically within **~20 minutes**, up to **3 business days**. **Output:** signed NDA, onboarding account created. You only complete the contact, studio, and NDA steps once. + Every game requires concept approval before development and publishing. @@ -64,16 +67,19 @@ Prepare a **fresh Personal Microsoft Account (MSA)** that is not tied to any exi **Typical approval time:** **10–15 business days**. Multiple concepts can be submitted in parallel. **Output:** concept approved or rejected. You must have an approved concept to proceed. If rejected, resubmit when the build materially changes. + Once your concept is approved, you receive the **Title Licensing Agreement (TLA)**. The TLA establishes your publishing rights and commercial terms for shipping the title on Xbox. **Output:** signed TLA. Microsoft's counter-signature is automated in most modern cases. + First-time partners — and older partners onboarded before 2020 — must additionally sign the **GDK Agreement** to gain access to Xbox development resources. **Output:** eligibility for GDK documentation and the software download site. + With agreements complete, the onboarding hub unlocks Partner Center registration. You must enroll in the **Windows and Xbox program** in Partner Center. @@ -109,6 +115,7 @@ Prepare a **fresh Personal Microsoft Account (MSA)** that is not tied to any exi Account verification typically takes **3–5 business days**. **Output:** Partner Center account, linked to your ID@Xbox onboarding record. + Associate your studio's **Entra ID** (formerly Azure AD) tenant with your Partner Center account. This gives you organization-level identity management for your dev team. @@ -122,6 +129,7 @@ Prepare a **fresh Personal Microsoft Account (MSA)** that is not tied to any exi 5. Use this Entra account going forward **Result:** any user added to your tenant and granted Partner Center permissions automatically inherits access to the linked Xbox resources. + When you complete the onboarding flow correctly, the system **automatically assigns** the roles your studio needs: @@ -132,6 +140,7 @@ Prepare a **fresh Personal Microsoft Account (MSA)** that is not tied to any exi - Xbox One permissions (in many cases) These roles are guaranteed _only_ if you followed the ID@Xbox onboarding flow end-to-end. If you created Partner Center independently and then tried to link back, you will likely need to file a manual request to get the roles assigned. + Once every prior step is complete, you can: @@ -141,6 +150,7 @@ Prepare a **fresh Personal Microsoft Account (MSA)** that is not tied to any exi - Access additional developer resources **Dependency chain for GDK access:** approved concept \+ signed agreements \+ Partner Center account \+ correct roles \+ Entra ID association. + With Partner Center provisioned, reserve a product so you can start configuration: @@ -153,6 +163,7 @@ Prepare a **fresh Personal Microsoft Account (MSA)** that is not tied to any exi Take note of the values under **Game setup → Identity details** — you'll paste them into your `MicrosoftGame.config` later. See [Partner Center](/publishing/partner-center) for the full product workflow. + Xbox services are **disabled** by default on new products. Enable them early so you can test in your dev cycle. @@ -166,18 +177,19 @@ Prepare a **fresh Personal Microsoft Account (MSA)** that is not tied to any exi Once enabled, return to **Game setup** and choose **Use full Xbox services feature set**. Without this step, Xbox services APIs (for example, Xbox Live initialization) will fail at runtime. + ## Timeline summary -| Phase | Typical time | -| --- | --- | -| NDA and account setup | Same day | -| Concept approval | ~1–2 weeks | -| Contracts (TLA \+ GDK Agreement) | Variable | -| Partner Center setup | 1 to a few days | -| **Total to full GDK access** | **~2\+ weeks minimum** | +| Phase | Typical time | +| -------------------------------- | ---------------------- | +| NDA and account setup | Same day | +| Concept approval | ~1–2 weeks | +| Contracts (TLA \+ GDK Agreement) | Variable | +| Partner Center setup | 1 to a few days | +| **Total to full GDK access** | **~2\+ weeks minimum** | Plan the onboarding window as part of pre-production. Concept approval alone is the longest gating item for most studios. @@ -188,13 +200,18 @@ Plan the onboarding window as part of pre-production. Concept approval alone is The number-one cause of missing GDK access. A Partner Center account created directly — not via the onboarding hub link — will not have the 5x5 token applied, the role assignments will not happen automatically, and you will not be able to download the GDK. Recovering from this requires a manual support request to link the accounts and assign roles. **Always register Partner Center through the link in the onboarding hub.** - - Onboarding is not instant. Concept review meets on a weekly cadence, contracts require signature cycles, and role provisioning runs as a background job. Build at least two weeks of buffer into your schedule before you need the GDK in hand. - + + Onboarding is not instant. Concept review meets on a weekly cadence, contracts + require signature cycles, and role provisioning runs as a background job. + Build at least two weeks of buffer into your schedule before you need the GDK + in hand. + - - The dependency chain (concept approval, contracts, Partner Center, roles, Entra ID, Xbox Live enablement) is largely gated until you already have access. Bookmark this page and use it as the checklist while you wait. - + + The dependency chain (concept approval, contracts, Partner Center, roles, + Entra ID, Xbox Live enablement) is largely gated until you already have + access. Bookmark this page and use it as the checklist while you wait. + Even after the GDK is downloaded and Partner Center is configured, Xbox Live features and some service configurations require a manual activation by Microsoft. If your Xbox services initialization calls fail with a "not enabled" error after a clean onboarding, this is almost always the cause. Contact your Microsoft point of contact to request enablement. @@ -208,4 +225,4 @@ Once you have full GDK access, the natural next pages are: - [Get Started](/gdk/get-started) — the two development paths and how to pick one - [Download & Install](/gdk/download-install) — install the GDK and create your first project - [Partner Center](/publishing/partner-center) — create your first product -- [Publishing overview](/publishing/overview) — the long-term path from build to retail launch \ No newline at end of file +- [Publishing overview](/publishing/overview) — the long-term path from build to retail launch diff --git a/style.css b/style.css index bb96020e..12c146fd 100644 --- a/style.css +++ b/style.css @@ -27,12 +27,12 @@ --xbox-green: #008746; --xbox-green-active: #008746; --xbox-green-fg: #ffffff; - --xbox-grey: #484E58; - --xbox-red: #E51D23; - --xbox-blue: #007DB5; + --xbox-grey: #484e58; + --xbox-red: #e51d23; + --xbox-blue: #007db5; /* System */ - --xbox-radius: 0px; + --xbox-radius: 4px; --xbox-topbar-button-size: 2.125rem; } @@ -52,9 +52,9 @@ --xbox-green: #008746; --xbox-green-active: #008746; --xbox-green-fg: #ffffff; - --xbox-grey: #484E58; - --xbox-red: #E51D23; - --xbox-blue: #007DB5; + --xbox-grey: #484e58; + --xbox-red: #e51d23; + --xbox-blue: #007db5; } /* --------------------------------------------------------------------- @@ -68,7 +68,7 @@ body { } .callout { - border-radius: 0px; + border-radius: 4px; } #almond-background-color { @@ -95,7 +95,7 @@ body { :root { --xbox-page-gutter: 2rem; --xbox-sidebar-width: 16rem; - --xbox-content-width: 42rem; + --xbox-content-width: 50rem; --xbox-toc-width: 15rem; } @@ -120,8 +120,12 @@ body { padding-right: var(--xbox-page-gutter); } +.navbar-link { + font-weight: 500; +} + #content-container { - border-radius: 0px; + border-radius: 4px; border: none; } @@ -160,27 +164,36 @@ body { } .card { - border-radius: 0px; + border-radius: 4px; } -/* Assistant side panel — remove the theme's inset spacing and rounded sheet corners. */ +/* Assistant side panel — remove the theme's inset spacing and normalize sheet corners. */ div.sticky.shrink-0:has(> #chat-assistant-sheet) { padding: 0 !important; - border-radius: 0px; + border-radius: 4px; } #chat-assistant-sheet { - border-radius: 0px !important; + border-radius: 4px !important; } /* The visible assistant input frame is the rounded wrapper, not the transparent textarea. */ .chat-assistant-floating-input .rounded-2xl:has(#chat-assistant-textarea), #chat-assistant-sheet .rounded-2xl:has(#chat-assistant-textarea), #chat-assistant-textarea { - border-radius: 0px; + border-radius: 4px; +} + +#feedback-thumbs-up, +#feedback-thumbs-down, +a[href*="/edit/main/"], +a[href*="/issues/new"] { + border-radius: 4px !important; } -#chat-assistant-sheet .rounded-2xl:has(#chat-assistant-textarea) > div:last-child { +#chat-assistant-sheet + .rounded-2xl:has(#chat-assistant-textarea) + > div:last-child { padding-bottom: 0.5rem; } @@ -291,7 +304,7 @@ div.sticky.shrink-0:has(> #chat-assistant-sheet) { text-transform: uppercase; color: var(--xbox-text-muted); font-size: 12px; - font-weight: 500; + font-weight: 700; letter-spacing: normal; } @@ -362,7 +375,7 @@ div.sticky.shrink-0:has(> #chat-assistant-sheet) { .nav-tabs-item { color: var(--xbox-text-muted); - font-weight: 500; + font-weight: 700; transition: color 0.15s ease; } @@ -521,7 +534,7 @@ div.sticky.shrink-0:has(> #chat-assistant-sheet) { .dark .almond-nav-bottom-section button[aria-label="Toggle dark mode"], .dark #navbar .xbox-theme-toggle-button { background-color: var(--xbox-bg) !important; - border-color: #27272A !important; + border-color: #27272a !important; color: #9f9fa9 !important; } } @@ -552,26 +565,34 @@ div.sticky.shrink-0:has(> #chat-assistant-sheet) { Sidebar navigation --------------------------------------------------------------------- */ -/* Sidebar background — solid darker Xbox grey on every tab, both themes. - Original brand grey is #484E58; this is a darkened variant for better - contrast against the page content. */ -#sidebar-content, +/* Sidebar background — opaque in both themes, with theme-specific colors. */ +#sidebar-content { + background-color: #ffffff !important; + opacity: 1 !important; +} + .dark #sidebar-content { - background-color: #1E2127 !important; + background-color: #1e2127 !important; opacity: 1 !important; } /* Ensure the sidebar layer/wrapper is opaque (defeat any theme transparency). */ -#sidebar, +#sidebar { + background-color: #ffffff !important; + opacity: 1 !important; +} + .dark #sidebar { - background-color: #1E2127 !important; + background-color: #1e2127 !important; opacity: 1 !important; } -/* On dark mode the page background sits behind the sidebar fixed positioning, - so make sure the rail edges read against the grey rather than the page bg. */ +/* Rail edges need enough contrast against each theme's sidebar surface. */ #sidebar-content::before, -#sidebar-content::after, +#sidebar-content::after { + border-left-color: var(--xbox-border); +} + .dark #sidebar-content::before, .dark #sidebar-content::after { border-left-color: rgba(255, 255, 255, 0.12); @@ -579,29 +600,52 @@ div.sticky.shrink-0:has(> #chat-assistant-sheet) { sidebar-title, sidebar-group-header { + color: var(--xbox-text-main); + font-weight: 700; +} + +.dark sidebar-title, +.dark sidebar-group-header { color: #ffffff; - font-weight: 500; + font-weight: 700; } #sidebar-content li a { - color: #d4d4d8; + color: var(--xbox-text-subtle); border-radius: var(--xbox-radius); } -#sidebar-content li a:hover, +#sidebar-content li a:hover { + color: var(--xbox-text-main); + background-color: transparent !important; +} + +.dark #sidebar-content li a { + color: #d4d4d8; +} + .dark #sidebar-content li a:hover { color: #ffffff; background-color: transparent !important; } -/* Active page — darker brand green for stronger contrast on the grey */ +/* Active page — use theme-specific greens for contrast against each surface. */ #sidebar-content li[data-active] > a, #sidebar-content li[data-active] a { - color: #3FB377; - font-weight: 500; + color: var(--xbox-green-active); + font-weight: 700; background-color: transparent; border-left: 0; - border-radius: 0; + border-radius: 4px; +} + +.dark #sidebar-content li[data-active] > a, +.dark #sidebar-content li[data-active] a { + color: #3fb377; + font-weight: 700; + background-color: transparent; + border-left: 0; + border-radius: 4px; } #sidebar-content li:not([data-active]):hover::before, @@ -616,12 +660,20 @@ sidebar-group-header { } #sidebar-content li:not([data-active]):hover::before { + background-color: var(--xbox-border); +} + +.dark #sidebar-content li:not([data-active]):hover::before { background-color: rgba(255, 255, 255, 0.35); } #sidebar-content li[data-active]::before { width: 2px; - background-color: #3FB377; + background-color: var(--xbox-green-active); +} + +.dark #sidebar-content li[data-active]::before { + background-color: #3fb377; } /* --------------------------------------------------------------------- @@ -636,7 +688,7 @@ sidebar-group-header { .dark #search-bar-entry { background-color: #000; - border-color: #27272A; + border-color: #27272a; } #assistant-entry { @@ -646,7 +698,7 @@ sidebar-group-header { } .dark #assistant-entry { - border-color: #27272A; + border-color: #27272a; } /* --------------------------------------------------------------------- @@ -654,7 +706,7 @@ sidebar-group-header { --------------------------------------------------------------------- */ #page-title { color: var(--xbox-text-main); - font-weight: 500; + font-weight: 700; letter-spacing: -0.7px; } @@ -687,7 +739,7 @@ card .font-semibold, card h2, card h3 { color: var(--xbox-text-main); - font-weight: 500; + font-weight: 700; } card p { @@ -780,8 +832,7 @@ toc-item[data-active-deepest], color: var(--xbox-green-active) !important; } -#table-of-contents-content .toc-item[data-active-deepest][data-depth="0"] - > a { +#table-of-contents-content .toc-item[data-active-deepest][data-depth="0"] > a { border-left-width: 2px; border-left-color: var(--xbox-green-active) !important; } @@ -923,10 +974,10 @@ mdx-content a:not(card a) { padding: 16px; } -.xbox-quick-body h3 { +.xbox-quick-title { margin: 0; font-size: 16px; - font-weight: 500; + font-weight: 700 !important; letter-spacing: -0.2px; color: var(--xbox-text-main); } @@ -935,13 +986,14 @@ mdx-content a:not(card a) { margin: 0; font-size: 14px; line-height: 20px; + font-weight: 400; color: var(--xbox-text-subtle); } .xbox-quick-link { margin-top: auto; font-size: 14px; - font-weight: 500; + font-weight: 700; color: var(--xbox-green-active); } @@ -984,7 +1036,7 @@ mdx-content a:not(card a) { align-items: center; padding: 8px 16px; font-size: 14px; - font-weight: 500; + font-weight: 700; text-decoration: none; border-radius: var(--xbox-radius); transition: