Game-Building Tools for Windows 8 and Modern UI
The Web Dev Zone is brought to you in partnership with Mendix. Discover how IT departments looking for ways to keep up with demand for business apps has caused a new breed of developers to surface - the Rapid Application Developer.
The Windows Store is an exceptional opportunity for your games to reach a wide audience. So which technologies are available to develop a game?
Developing from scratch
Windows 8 Modern UI allows developers to create games using DirectX 11 with C++:
Microsoft DirectX graphics provides a set of APIs that you can use to create games and other high-performance multimedia apps. DirectX graphics includes support for high-performance 2-D and 3-D graphics.
If you are a .NET developer you can use an excellent wrapper called SharpDX:
Using a wrapper consumes a bit of the raw power of your computer but it can be a good tradeoff if you do not want to learn C++ (for instance my game, WorldMonger, is developed using SharpDX. By the way, I will publish soon the Babylon Engine I wrote for WorldMonger).
Another way to develop a game for Windows 8 is to use HTML5. The beauty of the thing is that you can just use standard HTML5 code and integrate it in your Windows 8 project!
You have tons of articles on the web explaining how to use the canvas to create accelerated 2D games. Some of them:
- Everything you need to know to build HTML5 games with canvas and SVG: http://blogs.msdn.com/b/davrous/archive/2012/07/27/everything-you-need-to-know-to-build-html5-games-with-canvas-amp-svg.aspx
- Modernizing your HTML5 canvas games:
- Unleash the power of HTML5 canvas for gaming: http://blogs.msdn.com/b/eternalcoding/archive/2012/03/22/unleash-the-power-of-html-5-canvas-for-gaming-part-1.aspx
You can also use third parties tools to help you create your games. I tried to gather some of them and possibly I will update my post to add new ones when available.
Unity 3D 4
Unity 3D is one of the biggest middleware for developing 2D and 3D cross platform games. The next version (4.0) will add support for Windows 8. You can already pre-order it right there: http://unity3d.com/#unity4beta
Unity 3D is an integrated environment where coding skill are not required (but you can
My colleague Michel Rousseau published an article about it:
For instance, the Atari Arcade experience was developed using EaselJS: http://www.atari.com/arcade.
Furthermore, EaselJS comes with another really useful frameworks:
- SoundJS: Works to abstract away the problems and makes adding sound to your games or rich experiences much easier. You can query for capabilities, then specify and prioritize what APIs, plugins, and features are leveraged for specific devices or browsers.
MonoGame is an Open Source implementation of the Microsoft XNA 4 Framework which you can use to port an existing XNA game to Windows 8:
DirectX Tool Kit (aka DirectXTK) is a collection of helper classes for writing Direct3D 11 code for Windows Store apps, Windows 8 Win32 desktop, and Windows 7 'classic' applications in C++.
· SpriteBatch: simple & efficient 2D sprite rendering
· SpriteFont: bitmap based text rendering
· Effects: a set of built-in shaders for common rendering tasks
· GeometricPrimitive: draws basic shapes such as cubes and spheres
· CommonStates: factory providing commonly used D3D state objects
· VertexTypes: structures for commonly used vertex data formats
· DDSTextureLoader: light-weight DDS file texture loader
· WICTextureLoader: WIC-based image file texture loader
· ScreenGrab: light-weight screen shot saver
You can find it on Codeplex:
So where should I go?
This matrix is not the absolute truth but a guide to help you make a decision:
To end this article, I would like to share with you some examples of games ported to Windows 8 in order to see the portage path.
Cut The Rope
Jazz (from Bulkypix & Eggball games) was ported (really quickly) from C++/DirectX on the desktop to C++/DirectX for Windows 8 Modern UI.
Pirates Love Daisies
Pirates Love Daisies was almost directly ported from HTML5 / canvas with EaselJS to HTML5 / canvas for Windows 8 (with EaselJS obviously).