Introducing Game Development with Microsoft XNA
- Moving from Managed DirectX to XNA
- Using the XNA Game Studio Express
- Extending Game Studio Express
- Where to Go from Here
Got game? Easy enough question. Come on, if you are a developer, there is a good chance that the first program you wrote was a game. It might have been a clone of Break Out or PacMan, but at some point you probably thought that it would be cool to write a 3D game—something like DOOM. Am I right? I know I have been down this path—I even wrote a book on building games for Flash.
The problem many of us come up against is this: Game development is bloody hard. It doesn’t matter how you spin it, building solutions that leverage OpenGL or DirectX really are not easy. It can be frustrating to try and get the results you want. The world of game development becomes very complex very quickly. The flow chart the following figure illustrates this point.
Well, my companions in frustration, we are not alone. In fact, it seems as if game development is a problem even for the big companies. Microsoft is addressing this problem with a new game framework called XNA.
Moving from Managed DirectX to XNA
Over the last decade, Microsoft has been focused very hard on the game industry. You could argue that early DOS games such as DOOM, Quake, and Double Dragon drove Microsoft to recognize and ratify a standard around which games can be developed. A foundation of tools was released in the mid-90s under the title of DirectX.
DirectX, or MDX for Managed DirectX, is a grouping of technologies that allows for 3D, video, audio, 2D and more to be applied easily to game designs. Using DirectX ensured that the game would behave consistently on a Windows computer. You can see here where the problem lies: MDX is only for Windows computers. A specialized version of MDX was used as the underpinnings of the original Xbox. However, it did require you to use two different technologies to create the same game. Bummer.
Through working extensively in the Enterprise, Microsoft has learned that solutions need to be developed quickly, efficiently, and cheaply. If you look at game development, it follows a very similar model. The additional challenge is that through increasingly more complex game design models, AI, 3D models and video/audio you need more and more people with different backgrounds working on the same projects.
The release of the Xbox 360 is the start of a new framework for building games. XNA is the successor to MDX. XNA is a framework, similar to the .NET framework, being applied to the game development world. The difference with XNA to other game frameworks is that XNA manages your code, so you can develop solutions for the PC and Xbox 360 at the same time with the same code. You do not need to worry about the final output. The result is that Microsoft has created a single form factor solution for hobbyists who want to take their games from the PC to the Xbox 360.
First of all, XNA is not an acronym. Why it’s called XNA I don’t know, and I could not get an answer. Maybe a play on letters with DNA, or maybe it just sounds cool? Who knows, and, frankly, who really cares? The point is what XNA is about.
There are three basic fundamentals being addressed by XNA:
- It makes it easier for design/content creators to work together.
- It makes the process of game development easier.
- It makes the game technology itself easily accessible.
These three objectives sound simple in concept, but in reality are very complex. Look at the previous flow chart—you can see how complex game design can become in very little time.
So how do you make it easier for disparate groups to work together? Believe it or not, the complexity of game design is not being mirrored in the real world. Designs and developers are being forced to work hand in hand. Game development forces deep interaction on a more frequent basis. The XNA team did not need to look far to find a tool that can used to allow content creators to work together: the Visual Studio 2005 Team System.
The basis of Visual Studio Team System is to enable different groups to work on the same project. You can use different tools; for instance, I am a Flash designer and I work with C# developers in the same projects as they do, but can easily work with a different design tool.
The process of managing all these people can also be completed through Visual Studio Team System. The Team System part of the environment ships with technology that allows for easy documentation, bug tracking, defect management, test case scenario construction, and consistent developer tools.
The flow chart shown in the following figure illustrates the three objectives outlined above.
Okay, so if Microsoft already has all the tools, what is missing? The missing element is the ability to develop games quickly and easily, which is accomplished with the XNA Game Studio Express.