.NET Zone is brought to you in partnership with:

David Catuhe is a Microsoft HTML5 Evangelist based in Paris, France. He does much of his research on Windows 8, Kinect, and the various HTML5 standards and JS libraries. David is a DZone MVB and is not an employee of DZone and has posted 26 posts at DZone. You can read more from them at their website. View Full User Profile

Game-Building Tools for Windows 8 and Modern UI

10.08.2012
| 4518 views |
  • submit to reddit

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

Using DirectX

Windows 8 Modern UI allows developers to create games using DirectX 11 with C++:

http://msdn.microsoft.com/en-us/library/windows/apps/ee663274.aspx

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:

http://www.sharpdx.org/

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).

Using HTML5

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:

  1. 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
  2. Modernizing your HTML5 canvas games:
    1. http://blogs.msdn.com/b/davrous/archive/2012/04/06/modernizing-your-html5-canvas-games-with-offline-apis-file-apis-css3-amp-hardware-scaling.aspx
    2. http://blogs.msdn.com/b/davrous/archive/2012/04/17/modernizing-your-html5-canvas-games-part-2-offline-api-drag-n-drop-amp-file-api.aspx
  3. 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
  4. Writing a small game using HTML5 and JavaScript: http://blogs.msdn.com/b/eternalcoding/archive/2011/09/06/write-a-small-game-using-html5-and-javascript-brikbrok.aspx

Using tools

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:

http://blogs.msdn.com/b/designmichel/archive/2012/09/24/the-3d-and-windows-8-unity-3d-4.aspx

EaselJS

EaselJS provides straight forward solutions for working with rich graphics and interactivity with HTML5 canvas. It provides an API that is familiar to Flash developers, but embraces JavaScript sensibilities. It consists of a full, hierarchical display list, a core interaction model, and helper classes to make working with Canvas much easier: http://www.createjs.com/#!/EaselJS.

For instance, the Atari Arcade experience was developed using EaselJS: http://www.atari.com/arcade.

Furthermore, EaselJS comes with another really useful frameworks:

  1. TweenJS: A simple tweening library for use in JavaScript. It was developed to integrate well with the EaselJS library, but is not dependent on or specific to it. It supports tweening of both numeric object properties & CSS style properties. The API is simple but very powerful, making it easy to create complex tweens by chaining commands.
  2. 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

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:

http://monogame.codeplex.com/

DirectX ToolKit

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++.

It features:

· 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:

http://directxtk.codeplex.com/

So where should I go?

This matrix is not the absolute truth but a guide to help you make a decision:

image

Some examples?

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

Cut The Rope was ported from IOS to HTML5 / canvas with a really successful story:
http://www.cuttherope.ie/dev/

Jazz

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).

 

Published at DZone with permission of David Catuhe, author and DZone MVB. (source)

(Note: Opinions expressed in this article and its replies are the opinions of their respective authors and not those of DZone, Inc.)