Windev Game Dev Guide Oct 2017
Windev Game Dev Guide Oct 2017
Windev Game Dev Guide Oct 2017
Y
X B
A
Production 29
Additional resources 40
Dream.Build.Play 41
Welcome to the Windows 10 Game Development Guide!
When you create a Windows 10 game, you have the opportunity to reach millions of players worldwide across
phone, PC, and Xbox One. With Xbox on Windows, Xbox Live, cross-device multiplayer, an amazing gaming
community, and powerful new features like the Universal Windows Platform (UWP) and DirectX 12, Windows 10
games thrill players of all ages and genres. The new Universal Windows Platform (UWP) delivers compatibility
for your game across Windows 10 devices with a common API for phone, PC, and Xbox One, along with tools
and options to tailor your game to each device experience.
This guide provides an end-to-end collection of information and resources that will help you as you develop
your game. The sections are organized according to the stages of game development, so you’ll know where to
look for information when you need it.
To get started, the Game development resources section provides a high-level survey of documentation,
programs, and other resources that are helpful when creating a game.
This guide will be updated as additional Windows 10 game development resources and material
become available.
Game Development Guide (09/2017) | Intro to game development for the Universal Windows Platform (UWP) 3
Game development resources
From documentation to developer programs, forums, blogs, and samples, there are many resources available
to help you on your game development journey. Here’s a roundup of resources to know about as you begin
developing your Windows 10 game.
Some features are managed through various programs. This guide covers a broad range of
resources, so you may find that some resources are inaccessible depending on the program
you are in or your specific development role. Examples are links that resolve to developer,
xboxlive.com, forums.xboxlive.com, xdi.xboxlive.com, or the Game Developer Network
(GDN). For information about partnering with Microsoft, see Developer Programs.
White Papers
Xbox One developer whitepapers (GDN)
aka.ms/white-papers
Microsoft also offers several developer programs to help you develop and publish Windows games. We
recommend seeing if any are right for you before registering for a Dev Center account. For more info, go to
Developer programs.
You can deploy, design, and publish your game in the Creators Program without a dedicated dev kit, using only
retail hardware. To get started, download the Dev Mode Activation app (aka.ms/dev-mode-activation-app) on
your Xbox One.
If you want access to even more Xbox Live capabilities, dedicated marketing and development support, and the
chance to be featured in the main Xbox One store, apply to the ID@Xbox (aka.ms/ID-atxbox) program.
ID@Xbox
The ID@Xbox program helps qualified game developers self-publish on Windows and Xbox One. If you want
to develop for Xbox One, or add Xbox Live features like Gamerscore, achievements, and leaderboards to your
Windows 10 game, sign up with ID@Xbox. Become an ID@Xbox developer to get the tools and support you
need to unleash your creativity and maximize your success. We recommend that you apply to ID@Xbox first
before registering for a developer account on Windows Dev Center.
ID@Xbox
ID@Xbox consumer site
aka.ms/id-xbox
Game samples
There are many Windows 10 game and app samples available to help you understand Windows 10 gaming
features and get a quick start on game development. More samples are developed and published regularly,
so don’t forget to occasionally check back at sample portals to see what’s new. You can also watch GitHub
repos (aka.ms/github-watch) to be notified of changes and additions.
Windows-universal-samples
Universal Windows Platform app samples
aka.ms/windows-universal-samples
DirectX-Graphics-Samples
Direct3D 12 graphics samples
aka.ms/directx-graphics-samples
Directx-sdk-samples
Direct3D 11 graphics samples
aka.ms/directx-sdk-samples
D2DCustomEffects
Direct2D custom image effects sample
aka.ms/d2d-custom-effects
D2DGradientMesh
Direct2D gradient mesh sample
aka.ms/d2d-gradient-mesh
D2DPhotoAdjustment
Direct2D photo adjustment sample
aka.ms/d2d-photo-adjustment
Developer forums
Developer forums are a great place to ask and answer game development questions and connect with the
game development community. Forums can also be fantastic resources for finding existing answers to difficult
issues that developers have faced and solved in the past.
DirectX 12 forum
DirectX forums
aka.ms/directx-12-forum
Azure forum
Azure platform forums
aka.ms/Azure-Platform-Forums
Posts in Windows 10
Windows 10 (blog posts)
aka.ms/posts-in-windows-10
Somasegar’s blog
Somasegar’s developer tools blog
aka.ms/Somasegars-dev-tools-blog
DirectX 12
DirectX 12 introduction (blog post)
aka.ms/direct-x-12
In the concept and planning stage, you’re deciding what your game is going to be like and the technologies
and tools you’ll use to bring it to life.
If you’ve already decided on all the technologies you’ll be using in your game, great! If not, the Game
technologies for UWP apps guide (aka.ms/game-tech-for-uwp-apps-guide) is an excellent overview of many of
the technologies available, and is highly recommended reading to help you understand the options and how
they fit together.
These three GDC 2015 videos give a good overview of Windows 10 game development and the Windows 10
gaming experience.
DirectX
Microsoft DirectX is the choice to make for the highest-performance 2D and 3D graphics and multimedia.
Direct3D 12, new in Windows 10, brings the power of a console-like API and is faster and more efficient than
ever before. Your game can fully utilize modern graphics hardware and feature more objects, richer scenes, and
enhanced effects. Direct3D 12 delivers optimized graphics on Windows 10 PCs and Xbox One. If you want to
use the familiar graphics pipeline of Direct3D 11, you’ll still benefit from the new rendering and optimization
features added to Direct3D 11.3. And, if you’re a tried-and-true desktop Windows API developer with roots in
Win32, you’ll still have that option in Windows 10.
The extensive features and deep platform integration of DirectX provide the power and performance
needed by the most demanding games.
Graphics and DirectX 12 development videos Microsoft DirectX 12 and Graphics Education
(YouTube channel) aka.ms/microsoft-directx-12-and-graphics-education
XAML
XAML is an easy-to-use declarative UI language with convenient features like animations, storyboards, data
binding, scalable vector-based graphics, dynamic resizing, and scene graphs. XAML works great for game UI,
menus, sprites, and 2D graphics. To make UI layout easy, XAML is compatible with design and development
tools like Expression Blend and Microsoft Visual Studio. XAML is commonly used with C#, but C++ is also a
good choice if that’s your preferred language or if your game has high CPU demands.
XAML platform
XAML platform overview
aka.ms/xaml-platform
HTML 5
HyperText Markup Language (HTML) is a common UI markup language used for web pages, apps, and rich
clients. Windows games can use HTML5 as a full-featured presentation layer with the familiar features of
HTML, access to the Universal Windows Platform, and support for modern web features like AppCache, Web
Workers, canvas, drag-and-drop, asynchronous programming, and SVG. Behind the scenes, HTML rendering
takes advantage of the power of DirectX hardware acceleration, so you can still get the performance benefits
of DirectX without writing any extra code. HTML5 is a good choice if you are proficient with web development,
porting a web game, or want to use language and graphics layers that can be easier to approach than the other
choices. HTML5 is used with JavaScript, but can also call into components created with C# or C++/CX.
HTML5
The HTML5 W3C Recommendation
aka.ms/html-5
C++
C++/CX is a high-performance, low-overhead language that provides the powerful combination of speed,
compatibility, and platform access. C++/CX makes it easy to use all of the great gaming features in Windows
10, including DirectX and Xbox Live. You can also reuse existing C++ code and libraries. C++/CX creates fast,
native code that doesn’t incur the overhead of garbage collection, so your game can have great performance
and low power consumption, which leads to longer battery life. Use C++/CX with DirectX or XAML, or create a
game that uses a combination of both.
C#
C# (pronounced “C sharp”) is a modern, innovative language that is simple, powerful, type-safe, and object-
oriented. C# enables rapid development while retaining the familiarity and expressiveness of C-style languages.
Though easy to use, C# has numerous advanced language features like polymorphism, delegates, lambdas,
closures, iterator methods, covariance, and Language-Integrated Query (LINQ) expressions. C# is an excellent
choice if you are targeting XAML, want to get a quick start developing your game, or have previous C#
experience. C# is used primarily with XAML, so if you want to use DirectX, choose C++ instead, or write part of
your game as a C++ component that interacts with DirectX. Or, consider Win2D (aka.ms/win2d), an immediate-
mode Direct2D graphics libary for C# and C++.
C# language reference
C# programming guide and reference
aka.ms/c-language-reference
JavaScript is a dynamic scripting language widely used for modern web and rich client applications.
Windows JavaScript apps can access the powerful features of the Universal Windows Platform in an easy,
intuitive way—as methods and properties of object-oriented JavaScript classes. JavaScript is a good choice for
your game if you’re coming from a web development environment, are already familiar with JavaScript, or want
to use HTML5, CSS, WinJS, or JavaScript libraries. If you’re targeting DirectX or XAML, choose C# or C++/CX
instead.
JavaScript reference
JavaScript and Windows Runtime reference
aka.ms/javascript-reference
Direct3D 12, new in Windows 10, brings the power of a console-like API and is faster and more efficient than
ever before. Your game can fully utilize modern graphics hardware and feature more objects, richer scenes, and
enhanced effects. Direct3D 12 delivers optimized graphics on Windows 10 PCs and Xbox One. Since Direct3D
12 works at a very low level, it is able to give an expert graphics development team or an experienced DirectX
11 development team all the control they need to maximize graphics optimization.
Direct3D 11.3 is a low-level graphics API that uses the familiar Direct3D programming model and handles more
of the complexity involved in GPU rendering for you. It is also supported in Windows 10 and Xbox One. If you
have an existing engine written in Direct3D 11, and you’re not quite ready to make the jump to Direct3D 12,
you can use Direct3D 11 on 12 to achieve some performance improvements. Versions 11.3+ contain the new
rendering and optimization features that are also enabled in Direct3D 12.
Direct3D 11 Graphics
Overview of Direct3D 11
aka.ms/direct3d-11-graphics
Direct3D 11 on 12
Overview of Direct3D 11 on 12
aka.ms/direct3d-11-on-12
Windows Bridge for desktop applications Convert your desktop application to a UWP app
(.NET and Win32) aka.ms/uwpgdg_convert-your-desktop-application
Unity
Unity offers a platform for creating beautiful and engaging 2D, 3D, VR, and AR games and apps. It enables you
to realize your creative vision fast and delivers your content to virtually any media or device.
Get Unity
Get Unity
aka.ms/uwpgdg_get-unity
Universal Windows Platform app support in Windows 10 Universal Platform apps in Unity 5.2
Unity 5.2 or later (blog post) aka.ms/uwpgdg_windows-10-universal-platform-apps
Unity Manual/Windows
Unity documentation for Windows
aka.ms/uwpgdg_unity-manual-windows
Porting guide
Publish your Unity game to Windows Store
aka.ms/uwpgdg_porting-guide
Use Unity to make Windows games and apps Making Windows games and apps with Unity
(video) aka.ms/uwpgdg_making-windows-games-and-apps-with-unity
Unity game development using Visual Studio Using Unity with Visual Studio 2015
(video series) aka.ms/uwpgdg_using-unity-with-visual-studio
Havok
Havok’s modular suite of tools and technologies helps game creators reach new levels of interactivity and
immersion. Havok enables highly realistic physics, interactive simulations, and stunning cinematics. Version
2015.1 and higher officially support UWP in Visual Studio 2015 on x86, 64-bit, and ARM.
Havok
Havok website
aka.ms/uwpgdg_havok
Havok
Havok support forums
aka.ms/uwpgdg_havok-support
MonoGame website
MonoGame
aka.ms/uwpgdg_monogame-website
Cocos2d
Cocos2d-X is a cross-platform open source game development engine and tools suite that supports building
UWP games. Beginning with version 3, 3D features are being added as well.
What is Cocos2d-X?
Cocos2d-x
aka.ms/uwpgdg_what-is-cocos2d-x
Unreal Engine 4
Unreal Engine overview
aka.ms/uwpgdg_unreal-engine-4
BabylonJS
BabylonJS is a complete JavaScript framework for building 3D games with HTML5, WebGL, and Web Audio.
BabylonJS
BabylonJS
aka.ms/uwpgdg_babylonjs
Porting a Windows 8 app to a Universal Move from Windows Runtime 8.x to UWP
Windows Platform app aka.ms/uwpgdg_move-from-windows-runtime-8.x-to-uwp
Porting a Silverlight app to a Universal Windows Move from Windows Phone Silverlight to UWP
Platform app aka.ms/uwpgdg_move-from-windows-phone-silverlight-to-uwp
Porting an Xbox game to a Universal Windows Porting from Xbox One to Windows 10 UWP
Platform app aka.ms/uwpgdg_porting-from-xbox-one-to-windows-10-uwp
ANGLE
OpenGL ES to Direct3D 11 using ANGLE
aka.ms/uwpgdg_angle
Now that you’ve decided the type of game you want to create and the tools and graphics technology you’ll
use to build it, you’re ready to get started with the design and prototype. At its core, your game is a Universal
Windows Platform app, so that’s where you’ll begin.
• One store
The following are excellent guides that discuss the Universal Windows Platform apps in detail, and are
recommended reading to help you understand the platform.
Get set up
Getting set up for UWP development
aka.ms/uwpgdg_get-set-up
If you’re an “absolute beginner” to UWP programming, and are considering using XAML in your game (see
Choosing your graphics technology and programming language (aka.ms/uwpgdg_choosing-your-graphics)),
the Windows 10 development for absolute beginners (aka.ms/uwpgdg_win10-dev-beginners) video series
is a good place to start.
Use existing C++ code for UWP game How to: Use existing C++ code in a UWP app
development aka.ms/Use-existing-Cplusplus-UWP-game-dev
App lifecycle
Handling app lifecyle transitions
aka.ms/uwpgdg_app-lifecycle
Games share some common user interface elements and design principles with apps, but games often have a
unique look, feel, and design goal for their user experience. Games succeed when thoughtful design is applied
to both aspects—when should your game use tested UX, and when should it diverge and innovate? The
presentation technology that you choose for your game—DirectX, XAML, HTML5, or some combination of the
three—will influence implementation details, but the design principles you apply are largely independent of
that choice.
Separately from UX design, gameplay design such as level design, pacing, world design, and other aspects is an
art form of its own—one that’s up to you and your team, and not covered in this development guide.
Design your UWP app for Xbox One and Designing for Xbox and TV
television screens aka.ms/Design-UWP-app-xbox1-tvscreens
UI map
A UI map is a layout of game navigation and menus expressed as a flowchart. The UI map helps all involved
stakeholders understand the game’s interface and navigation paths, and can expose potential roadblocks and
dead ends early in the development cycle.
Game Audio
Guides and references for implementing audio in games using XAudio2, XAPO, and Windows Sonic. XAudio2 is
a low-level audio API that provides signal processing and mixing foundation for developing high performance
audio engines. XAPO API allows the creation of cross-platform audio processing objects (XAPO) for use in
XAudio2 on both Windows and Xbox. Windows Sonic audio support allows you to add Dolby Atmos for
Home Theater, Dolby Atmos for Headphones, and Windows HRTF support to your game or
streaming media application.
XAPO Overview
Create cross-platform audio processing objects
aka.ms/Creat-crossplatform-audio-processing-objects
DirectX development
Guides and references for DirectX game development.
Graphics and DirectX 12 development videos Microsoft DirectX 12 and Graphics Education
(YouTube channel) aka.ms/uwpgdg_microsoft-directx-12-and-graphics-education
Direct3D 12 Graphics
Direct3D 12 programming guide and reference
aka.ms/uwpgdg_direct3d-12-graphics
DirectXTK
Get DirectX Tool Kit for DirectX 11
aka.ms/uwpgdg_directxtk
DirectXTK 12
Get DirectX Tool Kit for DirectX 12
aka.ms/uwpgdg_directxtk-12
DirectXTex
Get DirectX texture-processing library
aka.ms/uwpgdg_directxtex
DirectXMesh
Get DirectXMesh geometry-processing library
aka.ms/uwpgdg_directxmesh
DirectXMath
Get the DirectXMath library
aka.ms/uwpgdg_directxmath
Your studio is now fully engaged and moving into the production cycle, with work distributed throughout your
team. You’re polishing, refactoring, and extending the prototype to craft it into a full game.
Notifications sample
Sample illustrating live tiles and notifications
aka.ms/uwpgdg_notifications-sample
UWP Tile Generator extension for Visual Studio Tips on using the UWP Tile Generator tool
(blog post) aka.ms/uwpgdg_tips-on-using-uwp-tile-generator-tool
IAP submissions
In-app product details and submission
aka.ms/uwpgdg_iap-submissions
The Windows Performance Toolkit (WPT) consists of performance monitoring tools that produce in-depth
performance profiles of Windows operating systems and applications. This is especially useful for monitoring
memory usage and improving game performance. The Windows Performance Toolkit is included in the
Windows 10 SDK and Windows ADK. This toolkit consists of two independent tools: Windows Performance
Recorder (WPR) and Windows Performance Analyzer (WPA). ProcDump, which is part of Windows Sysinternals
(aka.ms/uwpgdg_windows-sysinternals), is a command-line utility that monitors CPU spikes and generates
dump files during game crashes.
Diagnose memory usage and leaks using Memory footprint and leaks
Windows Performance Recorder (video) aka.ms/uwpgdg_memory-footprint-and-leaks
ProcDump
Get ProcDump
aka.ms/uwpgdg_procdump
The following guides and information help make the publishing and submission process as smooth as possible.
Publishing
You’ll use the new unified Windows Dev Center dashboard to publish and manage your game packages.
Use Azure Active Directory (AAD) to add users to Manage account users
your Dev Center account aka.ms/AAD-add-users-DevCenter-account
Packaging apps
Package your UWP game
aka.ms/Package-UWP-game
After you’ve finished development and shipped your game, it’s not “game over.” You may be done with
development on version one, but your game’s journey in the marketplace has only just begun. You’ll want to
monitor usage and error reporting, respond to user feedback, and publish updates to your game.
Analytics
Windows Dev Center analytics
aka.ms/uwpgdg_analytics
GameAnalytics
Understand player behavior using GameAnalytics
aka.ms/Understand-player-behavior-GameAnalytics
Use Facebook App Installs Ads to promote your Get Windows SDK for Facebook
game to Facebook users aka.ms/Facebook-install-Ads-promote-game
Learn how to use Facebook App Installs Ads Getting started with Windows SDK for Facebook
(video) aka.ms/Learn-Facebook-install-Ads
Xbox Live is a premier gaming network that connects millions of gamers across the world. Developers gain
access to Xbox Live features that can organically grow their game’s audience, including Xbox Live presence,
Leaderboards, Cloud Saves, Game Hubs, Clubs, Party Chat, Game DVR, and more.
If you would like to develop Xbox Live enabled titles, several options are available to you.
For info about the various programs, see Developer program overview
(aka.ms/Developer-Program-Overview).
Understand which features are available Developer program overview: Feature table
depending on program aka.ms/Understand-available-features-depending-on-program
Learn how to integrate cross-platform Xbox Live Xbox Live Creators Program
experiences in UWP games (video) aka.ms/Integrate-crossplatform-Xboxlive-UWPgames
Overview of Xbox Live game development Developing with Xbox Live for Windows 10
(video) aka.ms/uwpgdg_developing-with-xbox-live-for-windows10
developer.microsoft.com/games
Dream.Build.Play Community
Dream.Build.Play is an online community of creators and game makers from across the globe. It was
created under the premise that together, as a global collective of talented individuals, we can elevate the
industry with great games and content.
Dream.Build.Play is a:
• Global community of game makers
• Place to showcase and share game ideas, content, artwork and more