June 2022 Update 4 Public Release
June 2022 Microsoft Game Development Kit (GDK) Update 4 release notes
Note: June 2022 Update 3 release has been temporarily removed to correct an error in a script that packaged the files. Will post as a standalone .zip as the 2206_June branch has already been updated to Update 4.
Introduction
- The public GDK release notes are a subset of information available to developers inside the Xbox developer program (e.g. ID@Xbox). The goal is to increase the amount of public information with every release, but some content remains specific and exclusive to developers with an active Microsoft Game Developer Kit w/ Xbox Extensions (GDKX) license agreement.
- GDK development samples are publicly available: https://github.com/microsoft/Xbox-GDK-Samples/!
- GDK public documentation available here: https://aka.ms/gamedevdocs
- For more information about the GDK and how to start developing games for Xbox consoles or Xbox Game Pass for PC on Windows 10/11, view the ReadMe.MD.
About this document
We have organized this document into the following sections.
- Release notes errata [topics added closer to or after the general availability (GA) date]
- What’s new
- Breaking changes
- Issues fixed in this release
- Known issues in this release
- Development environment setup
Release notes errata
Topics highlighted in this section were added closer to the general availability (GA) date.
What's new in the June 2022 Microsoft Game Development Kit
There is no "What's new" content for UPDATE releases.
- The GDK/GDKX are released in two types: Major (focused on features, three times a year) and Updates (focused on fixes, as often as needed by partners).
- To see the full What's New section, read the release notes for the corresponding mMajor rRelease.
Breaking changes
Note: For other breaking changes in this branch, please see the previous release notes.
Issues fixed in this release
Fixes: Networking
PlayFabMultiplayer - websocket memory leak in PFMultiplayerUninitialize
(Added October 3, 2022)
Fixed a bug in the PlayFabMultiplayer C++ Client SDK that caused websocket resources to leak memory when PFMultiplayerUninitialize() was called or when the library internally handled app
suspension on Xbox consoles.
Fixes: XSAPI
Connectivity issues on Fortnite (xboxone only) since GDK QFE2 Update
(Added October 3, 2022)
Fixed an issue where XblMultiplayerWriteSessionAsync's async callback doesn't return if it is waiting for an RTA connection ID and RTA can't reconnect after the network connection is lost.
Known issues in this release
Known issues: Development environment
Application platform | Multiprocess games are not currently supported on console
(Added June 9, 2022)
Multiprocess games in the GDKX on console are not currently supported. Do not use this feature in your games. We plan to revisit this area based on feedback and prioritization from our development partners. While it is possible to use CreateProcess to create multiple processes, the following are currently known issues.
- Graphics are only supported for a single process and device at any time.
- Audio is only supported for a single process at any time.
- Gaming Runtime Services (GRTS) and the various user APIs do not work across multiprocess games.
- Gamepad input does not work across multiprocess games.
Developer tools | .NET Core updates can block GDK/GDKX installation
(Added June 8, 2022)
.NET Core updates that are delivered through Microsoft Update can block GDK/GDKX installation. To resolve this issue, update your Visual Studio instance or uninstall the workloads that contain Microsoft.NET.Core.Component.SDK.2.1 through the Visual Studio Installer and then retry (un)installing the GDK/GDKX.
Known issues: Developer tools
Developer tools | PC projects that use Xbox services, XGameSave, XStore, and/or XUser must use <game configversion=”1”>
(Added June 10, 2022)
Developers can use the June 2022 GDK/GDKX to rapidly iterate on their PC games without registering them. As a result, we strongly recommend that you update to <game configversion=”1”> in MicrosoftGame.config. This requires setting MSAAppId and Title ID for titles that are using this version or later of the GDK/GDKX, that also use one or more of the following features.
- Xbox services
- XGameSave
- XStore
- XUser
For more information, see MicrosoftGame.config reference.
Without this MicrosoftGame.config setting, launching these titles by Visual Studio Run/F5 or double-clicking the .exe file causes the following missing package error.
E_GAMEUSER_NO_PACKAGE_IDENTITY
APIs in the previous areas can also fail with various error codes because of the missing package identity.
An alternate workaround (for remaining at <game configversion=”0”>) is to register and launch the build by using the wdapp command line-tool. This is shown in the following example.
c:\temp> wdapp register Gaming.Desktop.x64\Debug
The Ggame is registered as an Application,. iIf game-specific OS features are needed, run this as an Administrator to register it as a Game.
Registered 41336MicrosoftATG.InGameStoreXS_2021.6.10.0_x64__dspnxghe87tn0
1336MicrosoftATG.InGameStoreXS_dspnxghe87tn0!Game
Copied temporarily generated AppXManifest.xml file to C:\Users\user\AppData\Local\Temp\41336MicrosoftATG.InGameStoreXS_2021.6.10.0_x64__dspnxghe87tn0_AppXManifest.xml
The operation was completed successfully.
c:\temp> wdapp launch 41336MicrosoftATG.InGameStoreXS_dspnxghe87tn0!Game
The Application was launched successfully.
After the title has been launched, you can debug it by using the Attach to process feature of Visual Studio. If the title requires debugging as it is launching, you can add a DebugBreak() call to prompt to attach a debugger at the debug location. Depending on the configuration of your development PC, this might require you to add the following registry key.
HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows NT\CurrentVersion\AeDebug – Aadd a DWORD named Auto with a value of 1.
- The wdapp register step makes the title appear in the Start menu, which has been changed to not be done as part of Visual Studio deploy/F5—the same behavior as generic Win32 projects.
This does not apply to console workflows and is also unnecessary for packaged builds to function correctly. This includes builds that were installed from the Xbox App or Microsoft Store.
(Known Issue – added June 15, 2022)
Developer tools | PC Game Pass titles might generate a pop-up error message (E_FAIL) when the user attempts to sign in to Xbox services
(Added June 9, 2022)
One of the newest features to improve the game launch experience for both developers and players is the PC Bootstrapper.
Bootstrapper has a dependency on GRTS. It is distributed automatically to all Windows 10 PCs and Windows 11 PCs.
If GRTS is out of date on your development PC, it can generate an error (E_FAIL) when the user attempts to sign in to the Xbox services.
To ensure that you have the latest version of SRTS on your development PC
- Verify your Windows 10 or Windows 11 developer environment is set to RETAIL mode and not in a developer sandbox.
- Close all other games and apps.
- Select the following link to go to the Microsoft Store page for GRTS (and then select More details to expand the Store page, if needed): https://www.microsoft.com/store/productId/9MWPM2CQNLHN.
- Ensure that the version of GRTS is current and does not prompt you for an update.
- To update all apps and components, go to the Library view in the Microsoft Store app.
Visual Studio life cycle updates
(Added June 9, 2022)
- Visual Studio 2017 (15.9) is now out of mainstream support. The June 2022 GDK/GDKX is the last release expected to support the Visual Studio 2017 IDE. Note that Platform Toolset v141 (the Visual Studio 2017 compiler) is supported through Visual Studio 2019 and Visual Studio 2022 with the appropriate components installed.
- Visual Studio 2019 (16.8) and earlier are out of mainstream support. Visual Studio 2019 (16.9) is in mainstream support through October 2022 and is supported by the June 2022 GDK/GDKX. Visual Studio 2019 (16.11) is in mainstream support until April 2029.
- Visual Studio 2022 (17.0) and Visual Studio 2022 (17.2) are supported through a Long-Term Servicing Channel.
Issue with XGameSaveFiles and player sign-out
(Added June 9, 2022)
If a game uses XGameSaveFiles and has any signed-in player sign out of that game, it will be closed. This issue will be fixed in a future update.
Updated requirements for MSAAppId and TitleId
(Added June 9, 2022)
As of the March 2022 GDK/GDKX, MicrosoftGame.config has been updated to schema version 1 (Game configVersion="1") for new titles. As part of these new schema requirements, MSAAppId and TitleId must be present if either element is specified in MicrosoftGame.config. Also, if AdvancedUserModel is set to false, a valid MSAAppId and TitleId must be present in MicrosoftGame.config.
Newly added MicrosoftGameConfig.mgc files do not appear in Xbox Gaming Project Control
(Added June 9, 2022)
When you add a new MicrosoftGameConfig.mgc file to a Visual Studio project for the first time, it does not immediately appear in Xbox Gaming Project Control. You must close your Visual Studio project and then reopen it for the new file to appear. Note that this only occurs for the first file that you add. Subsequent files immediately appear in Xbox Gaming Project Control.
Quick Resume debugging Preview in Visual Studio 2022
(Added June 9, 2022)
This release contains a Preview feature that enables you to debug through a Quick Resume save and restore. The saving and restoring of the Quick Resume state is done by using the Xbox Gaming Explorer in the Visual Studio IDE. In this release of the GDKX, a save cannot be initiated if the title is currently being debugged. The Save menu item on the context menu of the Xbox Gaming Explorer is currently disabled if a debugger is attached to the title.
Selecting the Visual Studio 2019 or Clang build tools in a Visual Studio project
(Added June 9, 2022)
The options to select either the version 142 (Visual Studio 2019) toolsets or the Clang toolsets by using the Platform Toolset property in Visual Studio is not available if the toolsets were installed by using the Individual Components section of the Visual Studio installation dialog. Selecting version 142 and Clang components from the Desktop Development with C++ workload at installation time causes the toolsets to appear properly in the Platform Toolset property.
__imp___std_init_once_complete unresolved external symbol with Visual Studio 2022 17.2
When you use the Xbox Services API (XSAPI) static C++ library with Visual Studio 2022 17.2, you might see what’s in the following error example.
This is because of a change in Microsoft STL. The workaround is to add the following code example to one of your code files.
For status on a fix for this issue, see Visual Studio Feedback.
Error example
unresolved external symbol __imp___std_init_once_begin_initialize referenced in function "void __cdecl std::call_once<class <lambda_155357a9be3d845a3d89ac4e05cd0d71(struct std::once_flag &,class <lambda_155357a9be3d845a3d89ac4e05cd0d71> &&)" (?$call_once@V<lambda_155357a9be3d845a3d89ac4e05cd0d71>@@$$V@std@@YAXAEAUonce_flag@0@$$QEAV<lambda_155357a9be3d845a3d89ac4e05cd0d71>@@@Z)
Code example
#if _MSC_VER == 1932 // Visual Studio 2022 version 17.2.
#pragma comment(linker, "/alternatename:__imp___std_init_once_complete=__imp_InitOnceComplete")
#pragma comment(linker, "/alternatename:__imp___std_init_once_begin_initialize=__imp_InitOnceBeginInitialize")
#endif
Debugger property might be missing when upgrading PC GDK/GDKX projects
(Added June 9, 2022)
When you upgrade your PC projects to the June 2022 version of the GDK/GDKX, there might be cases where the debugger property is set to the Unsupported debug option.
If this occurs, you must reset the debugger property to Local Windows Debugger by using the debugging toolbar, the project property page, or by setting the DebuggerFlavor msbuild property to WindowsLocalDebugger. (Removing the DebuggerFlavor property altogether also causes Local Windows Debugger to be used.)
GDK features might be disabled if a Visual Studio 2022 Preview has been installed
(Added June 9, 2022)
Developer PCs with a version of Visual Studio 2022 from the Preview channel can result in GDK .vsix files being erroneously marked as disabled.
- If the GDK Visual Studio extensions do not appear in the Visual Studio IDE in this scenario in Visual Studio 2019 and Visual Studio 2022, select Extensions > Manage Extensions. In Visual Studio 2017, select Tools > Extensions and Updates.
- The GDK .vsix files are on the Installed tab. If any of them are marked disabled, reenable them. Restart Visual Studio to restore the GDK features.
Known issues: Performance tools - CPU and others
PIX (CPU) | Instrumenting PC titles with PIX events requires the WinPixEventRuntime package
(Added June 9, 2022)
To instrument your Windows PC title with PIX events, you must use the following steps.
- Download and install the WinPixEventRuntime NuGet package.
- Include pix3.h from this NuGet package. Note that the Windows 10 SDK contains a pix.h header. However, this file is now obsolete and cannot be used in gaming titles on Windows PCs. The project templates that are included in the GDKX include pix.h by default.
- After the WinPixEventRuntime NuGet package is downloaded, you must change pix.h to pix3.h.
Known issues: Input
Input | Minimum value required for manual title control of GameInput work queue (CreateDispatcher)
(Added June 8, 2022)
IGameInputDispatcher::Dispatch will not complete any work when passing a value of 0 for the quotaInMicroseconds parameter per the API documentation. To work around this, pass a value of at least 100 us. This regression will be fixed in an upcoming GDK update.
General
(Added June 8, 2022)
- GameInput currently supports Windows 10 build 18362 (the “Windows 10 May 2019 Update”) and later.
- GameInput is currently available for PC as part of the GDK + Gaming Runtime Services (GRTS) package.
Keyboard and mouse support
Keyboard and mouse support is currently in Beta release quality. The primary known issues are as follows.
- The following members of the GameInputDeviceInfo structure are currently populated with hard-coded values that might not match the device’s actual properties.
- keyboardInfo
- mouseInfo
- The codePoint, virtualKey, and isDeadKey values that are returned in the GameInputKeyState structure might not always be accurate.
- Keyboard state is currently hard-coded to the US English keyboard layout.
- Aggregate keyboard device support is not available. Keyboard state must be individually processed from each keyboard.
Game controller device support
All Xbox One, Xbox 360, and Human Interface Device (HID) game controllers are supported, with the following exceptions.
- Xbox 360 devices are only supported on PC, on Windows 10 build 19041 (the “Windows 10 May 2020 Update”), and later.
HIDs are only supported on PC. Most HIDs only provide “controller” (raw axis and button) state. Support for fixed-format state like Gamepad or RacingWheel is limited to the following:
- The original version of the Sony DualSense™ Wireless Controller (but not the latest version)
- The Nintendo Switch™ Pro controller, but only when it isit’s operating in Bluetooth mode
- Several popular racing wheels
*“DualSense” is a registered trademark or trademark of Sony Interactive Entertainment Inc.* *“Nintendo Switch” is registered trademark or trademark of Nintendo of America Inc.*Missing features and APIs
Several GameInput APIs aren’t yet implemented, or have limited functionality, as detailed as follows.
IGameInput
- The GetNextReading and GetPreviousReading APIs require a valid IGameInputDevice filter that matches the device that the reference reading is from. Support for iterating through readings across all devices (by passing null for the device filter) will be added in a future update.
- The following functions are currently not implemented and will be added in a future update.
- CreateAggregateDevice
- EnableOemDeviceSupport
- FindDeviceFromObject
- FindDeviceFromPlatformHandle
- FindDeviceFromPlatformString
- GetTemporalReading
- RegisterReadingCallback
- RegisterGuideButtonCallback
- RegisterKeyboardLayoutCallback
- SetFocusPolicy
- On Xbox, the focus policy is currently always set to GameInputDisableBackgroundInput. Only the application in focus receives input.
- On PC, the focus policy is currently always set to GameInputDefaultFocusPolicy. Applications always receive input, even when not in focus.
IGameInputReading
- IGameInputReading instances currently do not have reference identity, contrary to what the API documentation indicates. This means that IGameInputReading pointers obtained via separate API calls cannot be compared for equality to determine if both API calls refer to the same reading. Instead, get the input state from both readings and compare that instead.
- The value returned by the GetSequenceNumber function is currently not valid (for all input kinds).
IGameInputDevice
- Force Feedback is currently only supported for Xbox One accessories (on both Xbox and PC). On PC, the device must be running in Xbox One mode, not HID mode.
- Vibration Feedback is currently only supported for Xbox One gamepads, Xbox 360 gamepads, and the Sony DualSense Wireless Controller.
- The IsForceFeedbackMotorPoweredOn function always returns “true”, regardless of the actual hardware state, unless the provided motor index is invalid.
- The CreateRawDeviceReport function can only be used to create reports of the GameInputRawOutputReport kind.
- The SendRawDeviceOutput function can only be used on Xbox to send these reports to Xbox One accessories.
- The following functions are currently not implemented and will be added in a future update.
- AcquireExclusiveRawDeviceAccess
- ExecuteRawDeviceIoControl
- GetBatteryState
- GetRawDeviceFeature
- PowerOff
- ReleaseExclusiveRawDeviceAccess
- SetHapticMotorState
- SetRawDeviceFeature
The following members of the GameInputDeviceInfo structure are currently not populated with valid values. These either contain zero or a null pointer.
- collectionNumber
- controllerAxisInfo
- controllerButtonInfo
- controllerSwitchInfo
- deviceDescriptorData
- deviceDescriptorSize
- deviceRootId
- deviceStringCount
- deviceStrings
- displayName
- featureReportCount
- featureReportInfo
- hapticFeedbackMotorInfo
- inputReportCount
- inputReportInfo
- interfaceNumber
- outputReportCount
- outputReportInfo
- revisionNumber
Documentation
Offline documentation for the June 2022 Update 4 release of the GDKX is installed on your development PC by the GDKX Setup program. After running Setup, the Help file for the GDKX (gdk.chm) is in C:\Program Files (x86)\Microsoft GDKX\Documentation.
- The online GDKX documentation is at http://aka.ms/gdkonline.
- For your convenience, you can also download an offline copy of the documentation from the GDKX download site at http://aka.ms/gdkdl.
- Localized GDKX offline documentation will be available approximately four to five weeks following the initial release of the English documentation.