Lowering the bar for entry
On Monday, Microsoft celebrated the official full release of Microsoft's XNA Game Studio for both Windows and the Xbox 360. The beta program started in March of this year, and allowed developers a sneak peek at these technologies.
XNA Game Studio is a collection of game development technologies that Microsoft believes will make it easier than ever for independent developers to write and publish new titles. A basic version of the software package is a free download on Windows, but for $99 a year, or $49 for a four-month trial, developers gain access to a host of extra features, including access to sample art assets, technical support, source code, and the ability to compile and run their games on both Windows and the Xbox 360 platform.
Much has been written about the runaway cost of video game development in recent years. Keeping up with the ever-expanding laundry list of new graphics features and the demand for high-resolution content has caused the number of employees required to produce a new game to skyrocket. Smaller game companies have either folded or been bought out by larger publishers with the financial resources to pay for such large teams. In this environment, what chance is there for the independent developer?
Microsoft's hope is that the XNA Game Studio will help level the playing field and allow these small developers to produce games that can stand up with the "big boys" without requiring an enormous amount of resources. The company wants XNA Studio to become a kind of "YouTube for game developers," allowing many more people to express themselves in the form of video games and share their work with the world.
To achieve these goals, Microsoft is using a three-pronged strategy: technology, content, and community. The idea is to provide independent game developers with assistance at every stage of the game development process, and thus make it easier for small teams and even individuals to make their own games.
The technology
On the technological side is the XNA Game Studio software itself, which uses a customized copy of Microsoft's popular Visual Studio compiler. The big advantage of developing games with the XNA Game Studio is the ability to use managed code, which means that the compiler and runtime environment handles all the messy issues of memory allocation and garbage collection (deleting references to memory created by objects that are no longer in use, thus freeing up the memory for use elsewhere). This is done through Microsoft's .NET framework, which is available as a free download for Windows XP and comes preinstalled with Windows Vista. XNA acts as a bridge between the .NET frameworks and the lower-level game interfaces such as DirectX. Programmers call routines in the XNA game library that activate 3D screen modes, create polygons, paint textures on 3D meshes, play sounds, and interface with control devices such as joysticks or the Xbox 360 game controller.
Programming in managed code is generally acknowledged as being far more productive than using traditional methods. Joel Spolsky even went so far as to say that using managed code was the only advance in programming methodologies that led to measureably increased productivity. Microsoft's stalwart Visual Basic, although often derided by "real programmers," used managed code, and it was famous for its ability to enable coders to create programs quickly. However, interfacing between Visual Basic and DirectX was rather nasty and required a bunch of hacks that didn't always work as expected, nor did they allow the full functionality of DirectX to be accessed.
There were other managed development solutions available, such as Java, but performance concerns and a lack of integration with game libraries such as DirectX meant that Java was never a significant force in game development. (This is not to say, however, that nobody is developing games in Java—there is a healthy Java game development community, and the cross-platform nature of the Java library has meant that the language has found considerable success on diverse hardware such as cell phones.)
In the Windows and console world, however, there was no easy way to connect managed code and existing game development technologies, until a small team at Microsoft came up with the Managed DirectX platform, which was a set of libraries that glued together the .NET development framework and DirectX itself. A couple of years back, I picked up a copy of Managed DirectX Graphics and Game Programming by Tom Miller, which contained sample code and tutorials that allowed a complete game programming novice to enter the world of 3D meshes, texture maps, sound and joysticks, and even special effects such as specular highlights and programmable shaders. Having attempted graphics programming in C++ before, I was surprised at how easy the process was in C# (the code worked equally well in Visual Basic.NET as well).
Microsoft has taken this effort and expanded it tenfold to create the XNA development platform. Not only are all the Managed DirectX goodies present, but the entire build process has been optimized to make game development easier. The Game Studio includes an asset management system to simplify handling the hundreds of meshes and textures that make up a typical 3D game.
Of course, with the switch to managed code comes inevitable questions about performance compared to traditional C++ programming. The Managed DirectX team was concerned about these issues, and included sections on optimizing managed code and tools for finding performance bottlenecks. While performance may never match that of a highly-tuned C++ game engine, the XNA team has done wonders with the technology.
To demonstrate the types of games and the kind of performance that can be created with the XNA Game Studio, Microsoft took a small team and made an XNA Racing Game Starter Kit, which comes with the full source code and graphics. The game runs on the Xbox 360, utilizing one of the system's CPU cores (the code is single-threaded—developers can add multiple threads if they wish but there are no special libraries to assist in multithreaded code development as with Valve's new toolkits), and runs at 30 frames per second at 1080p, with 2x antialiasing and lots of special effects such as motion blur.
The content
Programming, of course, is just one aspect of game development. An increasingly large proportion of development costs these days is taken up by game art and other media assets: from 3D models to level designs and high-resolution textures, the task of creating the mountain of new content required for a new 3D game often seems overwhelming, especially to a small developer.
Microsoft hopes to help by providing subscribers to the XNA service access to the "XNA Creators Club," which includes a large database of free 2D and 3D art, models, and textures. Developers can use these assets as-is free of charge in developing their own games, or modify them to suit their purposes. Everything from human models to vehicles can be found in the art library. While there are plenty of free 3D models available on the Internet, having everything in one place saves developers time and energy, and ensures that the quality of the content is up to certain standards.
In addition, developers can, if they choose, share their own art assets with the community by uploading them to the Creators Club site.
3D models come in a dizzying variety of formats, depending on what tool has been used to create them. In order to make it easier for developers to create their own content, Microsoft has announced that SoftImage has added support for the XNA's native ".X" format to their Mod Tool 4.2 software, a free version of the company's popular 3D modelling program. In addition, the XNA software supports the Autodesk .FBX format, which can be exported by tools such as 3D Studio Max and its free cousin, GMax. The .X format is text-based and very straightforward, so it is easy for other modelling software companies to add support for the format, and some free file translators are already available.
The community
Microsoft's aim with the whole XNA program is to create a community of developers that can create homebrew games for both the Windows platform and the Xbox 360. Many beta testers of the XNA Game Studio are ecstatic that their games will run, largely unmodified, when recompiled on the Xbox 360.
Developers who subscribe to the $99-per-year service will not only be able to compile their games on the 360, but can upload them to the Creators Club (which will be accessible through Xbox Live) and share them with other developers. Microsoft will then choose which of the games are most popular and suitable for public consumption, and make them available to all Xbox Live users through the Xbox Live Marketplace. Unlike YouTube, where user-created content is shared for free and no money is returned to the creators, developers will receive royalties from games that are purchased on Xbox Live Marketplace.
Microsoft's plan is to allow the strengths of both the Xbox 360 and Windows PC platforms to support and enhance each other. Getting independent developers started for little to no cost with Windows programming encourages new independent games, and making these games available to a wider audience on the Xbox 360 will add financial incentive to keep creating. With Windows Vista, players will be able to access the same game on Xbox Live Marketplace whether they are at the console or at their PC, further adding the number of potential players for these games.
Will the days of the basement coder return?
Back in the late eighties and early nineties, small groups of hobbyist coders broke into the video game business by creating exciting new games on the Amiga, an open computer platform that had many advantages for developing the popular 2D side-scrolling games of the day. With nothing but a few magazines and a compiler, dedicated coders could create something that rivalled the output of the big game houses.
With the move to 3D gaming, development has become more complex, and, outside of the mod community, it has been difficult for small teams or individuals to create games that can stand next to the industry heavyweights. Many of the people on the XNA team either were involved with or remember the glory days of the Amiga gaming scene and its independent coders, and they are anxious to see if those times can come again.
Of course, the sheer sophistication of modern games makes it difficult to imagine a return to the days when an individual could compete on his own with the big boys. However, the popularity of simpler games such as Lumines on modern platforms has shown that you don't necessarily have to make a sprawling epic adventure in order to be a success. With the XNA Game Studio lowering the bar for developers to create content, we can expect more unique and interesting titles to come out of the woodwork. Not all of them will be gems, of course, but the next killer game may well come from someone the world has never heard of.
Microsoft has big plans for the XNA Game Studio, and plans to sponsor a contest in January for the best new game written using their development platform. The winner will receive publicity and an unannounced cash prize, as well as inclusion in the Xbox Live Marketplace. So what are you waiting for? Get coding!
