Baby Steps: Managed DirectX
Microsoft's first official steps into the world of managed code for game development were made with Managed DirectX, which mainly consisted of a managed wrapper around the native DirectX API.
Nitschke was an early adopter of .NET and Managed DirectX for game development, but he saw a clear lack of support for Managed DirectX, and while version 2.0 was still in beta, he got wind that something else was in the works, saying, "I got some early access to internal Microsoft webcasts, and it was very apparent that Managed DirectX 2.0 would never be released at that point (it only reached beta) and all of the ideas and improvements would go into XNA, the successor of Managed DirectX."
Fristrom also tried to give managed code a chance, with very mixed results. He says, "We've experimented with Java and Managed DirectX and a couple Python offerings: PyGame and Panda3D. This is mostly because I'm a language geek—I like messing around with new languages and systems. With Panda3D the performance wasn't there. Same with Java; the Three Rings guys manage to do really impressive stuff with Java, considering it's Java. And Managed DirectX is so complicated you might as well be writing in C++ still." He adds, "I only worked with Managed DirectX long enough to discover I had to write a [lot] of code just to get the gamepad to work with a nice dead zone. That's, like, two lines in XNA."
|Dave Mitchell: "There's something unique and special about seeing a game you made appear on a high-definition TV set through your video game console."|
This is probably what prompted Microsoft to ditch Managed DirectX and rebuild around the XNA Framework. Mitchell confirmed, "Managed DirectX has been retired in favor of the XNA Framework. There have been a number of architectural changes as a result of becoming part of a larger gaming framework that are documented up on our MSDN Dev Center for XNA
. Additionally, the XNA Framework uses XInput rather than DirectInput for input handling and XACT rather than DirectSound or other audio library. Both XInput and XACT are our new cross-platform libraries that work uniformly on both Windows and Xbox 360 through the XNA Framework."
Nitschke certainly hopes Microsoft has learned its lesson with Managed DirectX, saying, "If I were Microsoft I would push XNA much harder. [Recent] history shows us that Managed DirectX was never pushed by Microsoft. It was basically a one-man show by Tom Miller, who did a great job writing the library and tutorials, but the whole DirectX team did not care about game developers using managed code or not; it was just not important to them."
Enter XNA: Game Development with Managed Code
XNA generated a lot of buzz when it was first announced at GDC in 2004 by J Allard during his keynote. As for the name itself, Mitchell told us that back then, XNA was defined as "cross(X)-platform, Next-generation Architecture". It has, however, since evolved to be much more than that and is now an official brand from Microsoft representing their collective assets for game developers. Microsoft's answer to the XNA name is, "XNA's Not Acronymed."
|Josh Williams: "Microsoft is simply providing the best game development platforms out there today. That's not a biased opinion
ask any game developer."|
Fristrom shares his initial thoughts about XNA. "There was a lot of buzz about it on the Internet. I heard weird things, like, "They've rewritten MechWarrior in C#"—which wasn't true—and, "They're giving Visual Studio away for free"—which was! So I checked it out. XNA Game Studio wasn't available yet. I was checking out the build system, which tried to solve a problem (How do we manage thousands of assets and the steps we have to go through with each one to get them into the game?) most professional developers have already solved with their own tools in house. It was a problem we didn't need to solve right then, so I shelved it. Later—I think it was at [the Microsoft] GameFest [conference] last year—I heard about [XNA] Game Studio [Express]. So I checked it out, and it was good. C# is a language I like almost as much, feature for feature, as Python, and it kicks Python's ass in the performance department, so being able to make games with it is dreamy."
Following the GDC announcement, Mitchell tells us, "Upon returning to Redmond, [J Allard] recruited the then development manager of Xbox LIVE as the first official XNA team member (who today is driving all of our XNA Game Studio Express product development efforts). The XNA team and efforts behind it have grown considerably from those humble beginnings, but the charter has always remained consistent and simple—make Microsoft gaming platforms the best for game developers by providing the best tools, technologies, and services. As a result, the best story tellers are bringing their best games to market on Windows and Xbox."
The XNA team did not waste any time. Mitchell says, "XNA Game Studio Express and the XNA Framework were started at the beginning of 2006 and officially released within a single calendar year."
For Hidden Path, their discovery of XNA came later as they worked with Microsoft to deliver one of the first XNA C# demos, named Culture, for GDC 2006. Austin tells us, "The learning curve was very shallow and it was pretty cool how fast we were able to convert it to run on the Xbox 360. It not only helped us get past some of the tedious elements inherent in game development quickly, it also allowed us to implement our unique and creative ideas very easily."
Mitchell expands on this idea. "XNA Game Studio Express was designed specifically for the community members who want to act on their game ideas and bring them to life for all gamers to share." He adds, "With XNA Game Studio Express, we wanted to develop a solution that would help to enable smaller game developers, non-professionals, and academia."
Technically speaking, Nitschke sees the move to XNA as a good thing, commenting on both Managed DirectX and XNA, but feels that Microsoft could have built a simpler framework for casual 3D games. "XNA is the successor of Managed DirectX, which means there are many similarities. Microsoft did a great job making 2D game code much easier and cleaner while also removing the fixed function pipeline support, which makes thinking about 3D code easier, but [it] forces you to use shaders, which is hard for many beginners. Most existing XNA games today are in 2D just for that reason, the jump from 2D to 3D is still too hard and it was very much like that in DirectX too, but there were more samples and tutorials available when Managed DirectX came out."
XNA: .NET Code for Your Console
XNA allows anyone who owns a retail Xbox 360 console and a Creators Club subscription (which costs $49 for four months or $99 for a year) to deploy and play XNA games without the need for an expensive HDK or SDK. Microsoft's decision to open up the console to everyone has been a drastic departure from the paradigms of the past where only official game studios could get access to and afford these proprietary console development kits.
|Mark Terrano: "Opening up the creative power of gaming (and asset creation) to a wider audience will lead to the diversity of titles, ideas, and game play that will keep this medium alive and energized."|
Mitchell does not see this move as a big departure for Microsoft as it might seem. He explains, "At our core, we are a platform company and as such, we realize the value of the developer community as a whole. That includes hobbyists and academics as well as professional developers. Today, developers on Microsoft platforms can develop Windows, Windows Mobile, web, embedded systems, and even robots. The one platform that has until now been off limits for the most part has been the consumer video console."
Mitchell continues, "People have been developing games on PCs for decades, but let's face it: there's something unique and special about seeing a game you made appear on a high-definition TV set through your video game console. That's the ability we wanted to offer all aspiring game developers: a low-cost, accessible solution to develop games on a current generation console: the Xbox 360. By making game development more approachable and a highly desirable platform this accessible, we expect there will be a lot more interest in the games industry overall and eventually newfound creativity and innovation injected into commercial games that originate from community game developers."
Austin applauds Microsoft's strategy and decision. "I think it is a GREAT idea. The more people interested and participating in game development, the better it is long-term for our industry. It also makes strategic sense for Microsoft since developers will be more familiar with the Xbox 360. We're always on the lookout for sharp and talented programmers, and this helps create a new place for up and coming programmers and game developers to come together and let others see what they can do."
Williams also felt that having XNA opening the console to indie game developers would lead to the next strategic direction at his company. "Since its inception, GarageGames has asserted that providing affordable game development tools is a key to injecting innovation back into the industry, and enabling developers to make games on their own terms without being owned and controlled by traditional publishers and business models. We have worked a long time to make this a reality on the PC side of things, but Microsoft has taken it to the next level by starting to do the same for a next-generation console. Just about anyone who is involved in game creation (and many that aren't) has dreamed about putting a game on a console and finally Microsoft has provided open access to something only established professional studios were able to attain before. Doing so can only help to inspire more people to pursue game development."
Fristrom agrees, adding, "It's fantastic—both from the mercenary point of view (now I don't have to spend $10K a pop on [development kits]) and from a more noble, "everyone should be able to make their own console games" point of view. Of course, anybody who really wanted to make their own video games already could. XNA just makes it easier; and being able to then see your game on a console is frosting."
Williams sees XNA as another example of a great Microsoft success story for game developers. "Microsoft is simply providing the best game development platforms out there today. That's not a biased opinion
ask any game developer. They think games are important, and it shows. Their developer tools rock for both Windows and Xbox, and to be frank, they blow away what anyone else offers game developers in regards to tools and technologies. And in this generation of console hardware, they have consistently been the most forward thinking and outgoing toward developers, toward introducing new game distribution models, and even toward gamers. Microsoft introduced Xbox LIVE and Internet-connected games before anyone else. They introduced downloadable games and great developer publishing terms there before anyone else. They have always provided great developer tools, and they're leading the way again by opening up their console in a major, official way for people to begin making games on their own. It's awesome, and it seems Microsoft is helping to drive other companies to follow suit."
Koster thinks it's a step in the right direction, but it's not enough. "I wish that it were even more open; the subscription doesn't need to be there, and I think it's silly to require that you subscribe to be able to play the games. When we see ecologies like this flourish elsewhere—say, with Flash on the Web—a huge part of it is the fact that anyone can check out what you've made."