Microsoft opened the doors of game development to the .NET developer community in December 2006 with the first release of XNA Game Studio Express.

No longer constrained to enterprise systems, database-driven applications or Web service layers, .NET developers can now spread their digital wings and let their pixelized imagination run wild as their favorite development platform and language now enable them to explore new worlds and new challenges of their own making, all in full high definition (HD) at 60 frames per second! But who is XNA for? Is it a serious enough initiative, platform, and set of tools for professional game developers in the gaming industry? Eager to answer those questions, I (virtually) sat down with a number of professional game designers, studio directors, and developers for a chat in order to find out: Is Microsoft XNA ready for prime time?

Before I answer this question, let me frame the discussion around what XNA truly is and means. In Microsoft’s words, “XNA Game Studio Express is a game development solution targeted primarily at students, hobbyists, and independent game developers. XNA Game Studio Express is based on Visual C# Express 2005 and lets developers create games for both Windows and Xbox 360.”

Jamie Fristrom: “Getting away from C++ has, up until now, simply not been an option when doing console development, unless you want to write your own compiler.

XNA as a whole is Microsoft’s game development platform. XNA is comprised of three major pieces: tools and technology (like Microsoft’s game SDKs and DirectX), solutions (like Game Studio Express), and the ecosystem (what the XNA community and Microsoft partners are building).

XNA tools and technologies are what most developers in the industry are using today to make retail games for Xbox and Windows. This includes things like DirectX, PIX, XACT, and the Xbox and Xbox 360 developer kits. Which means that XNA as a whole is the name of Microsoft’s overarching initiative and offering for game development on Windows and Xbox 360, whether you use managed (C#) or unmanaged (C++) code. Note that for the sake of this article, all references to XNA imply development with managed code using C# and XNA Game Studio.

If you have never heard of XNA before or if you want to learn more about the technical features of XNA and discover how to get started with game development using XNA Game Studio Express, you should read the article titled “Introducing XNA Game Studio Express” in this issue of CoDe Magazine by George Clingerman.

Off to the Game Developers Conference

While Microsoft’s initial XNA offering is clearly labeled for amateurs, hobbyists, and students, Microsoft will surely generate a lot of buzz in the professional game development industry. As a matter of fact, Microsoft held several sponsored sessions on XNA at the last Game Developers Conference (GDC) in March 2007 in San Francisco. The conference featured the “XNA Lobby Bar” where GDC attendees could hang out and have a drink while watching rolling demos of Xbox 360 games on HDTVs, or observe four development teams hard at work on the premises, building XNA games in only four days.

Josh Williams: “Studios who use more efficient practices will start eating the other guys’ lunch!

Clearly Microsoft has a vested interest in catching the attention of professionals when it comes to their latest game developer tool for Windows and the Xbox 360. I spent the week at GDC and I questioned a lot of people about whether XNA was of any interest to them as game developers. Not everyone was convinced; few of them were, in fact. Most people seemed to brush XNA aside as a non-issue, or perceive it as another gimmicky wacko idea by Microsoft to push their platforms.

Not content with simple hearsay, expo floor buzz or opinions bordering on zealotry, I set out to gather the opinions of industry professionals about XNA to bring a perspective on the gaming industry to IT developers already familiar with .NET. I reached out to many experts and studios, and while many declined to comment on XNA, had little to say about XNA or simply failed to reply, the following game industry veterans graciously answered my call and provided me, and you, with the insights and opinions found in the rest of this article.

  • Michael Austin, Chief Technology Officer, and Mark Terrano, Design Director, both founders of Hidden Path Entertainment
  • Jamie Fristrom, Technical Director of Torpex Games
  • Raph Koster, President of Areae
  • Dave Mitchell, Director of XNA Game Platform Marketing in the Game Developer Group at Microsoft
  • Benjamin Nitschke, Founder of exDream Entertainment
  • Josh Williams, CEO of GarageGames, developers of the new Torque X game engine for XNA

I invite you to refer to the sidebars in the pages of this article for full background information about the subject matter experts interviewed, about their respective companies, and the games they build.

Game Programming Tools

It’s no secret that while managed languages like C#, Visual Basic or Java are fairly ubiquitous in the IT industry, C++ remains the primary language of choice for game developers. In fact, the gaming industry seems to be slow to move beyond C++.

Jamie Fristrom: “I only worked with Managed DirectX long enough to discover I had to write a crapload of code just to get the gamepad to work with a nice dead zone. That’s, like, two lines in XNA.

But what is less well-known to industry outsiders is that for various reasons, game developers use a lot of different languages in their games. For instance, Raph Koster, President of Areae, tells us, “We’re very much into rapid prototyping at Areae. Because of this we use a wide variety of languages-whatever gets the job done the fastest. Currently, we are using C++, Flash & Flex, PHP, Python, Lua, and even BlitzMax, which is a game development language aimed at indies and hobbyists. Basically, we use whatever gets us to working code the fastest so that we can try out concepts and iterate. Then we will replace that code with a more final solution chosen for speed or flexibility.”

Managed languages have, in fact, not been used much for any commercial console or computer games to date. There are a few exceptions says Dave Mitchell, Director of XNA Game Platform Marketing in the Game Developer Group at Microsoft. “There are actually quite a few examples of games developed using managed code for commercial purposes but most of them tend to be for the casual games market. Managed code tends to be popular for developing games on popular gaming portals or mobile phones. Beyond those, [online virtual world] Second Life is probably the best known commercial game that uses managed code (C#). What isn’t well known, however, is that many commercial game studios use C# and .NET for their production pipeline and tools.”

I encounter the same story everywhere. C++ is the common denominator, and is accompanied by several other scripting or custom languages. Flexibility is the key. Jamie Fristrom, Technical Director of Torpex Games, says, “We’re fairly agnostic [at Torpex]-we’ll use whatever the project demands. Usually that’ll be C++ -with Visual Studio for a Windows or Xbox game or SN Systems for a PlayStation game. But right now it’s C# and XNA Game Studio for [our upcoming Xbox LIVE Arcade game] Schizoid(Figure 1).”

Figure 1: Schizoid, by Torpex Games, will be the very first commercial XNA game title to be released for the Xbox 360 on Xbox LIVE Arcade.

While Fristrom’s studio Torpex Games recently started to adopt managed code for game development, it was just not an option they could consider until now. He says, “Getting away from C++ has, up until now, simply not been an option when doing console development, unless you want to write your own compiler-like the Naughty Dog guys did with their LISP compiler. Me, I’d rather write in C++ than write my own compiler. But I’d rather write in C# than C++.”

Jamie Fristrom: “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.

Michael Austin, Chief Technology Officer of Hidden Path Entertainment, echoes Fristrom’s comments. Most C++ developers are simply not interested in looking at managed languages, but it seems that trying C# is loving it. Austin explains, “We used C++ on most of our development projects in the past. We used C# to develop the Culture technical demo (Figure 2) for Microsoft at last year’s Game Developer Conference. Culture is, on one hand, a casual game with flowers, butterflies, and easy controls, and on the other hand a high performance next-generation Xbox 360 title. Once I used C# to develop a procedural flower modeling tool, I was hooked-now we use C# for almost all of our tools and prototype games.”

Figure 2: The Culture technical demo was developed by Hidden Path Entertainment for Microsoft and GDC 2006 using an early release of XNA.

But when it comes to learning new languages, Austin does not think it’s entirely tied to the language itself. “In the game industry there’s barely time to slow down and take a week to go to GDC or read the latest Game Developer magazine, much less learn a new language or development paradigm.” Mitchell agrees with Austin.

Benjamin Nitschke, Founder of exDream Entertainment, has however observed some irregular patterns that indicate that some changes are more welcome than others among game developers, commenting “We are talking about game developers here, it just takes a while. Give them a new graphic card and they will get crazy and develop the most creative new graphic shaders for them. But give them a new language and they will not adopt it that fast.”

Game Development Methodologies

New programming languages are not the only thing that game developers are slow to adopt. The same goes for approaches that other software industries have embraced for years, such as agile methodologies or test-driven development. And judging from the number of talks on agile development at this year’s GDC, agile methodologies has been gaining in popularity in recent years in the gaming industry. However, why this popularity increased is also an indicator as to what can be expected with the transition from native to managed code for game development: seeing is believing.

Josh Williams, CEO of GarageGames, says “Many studios are waking up. In our development process [at GarageGames], for example, with [our new XNA game engine] Torque X, we utilized an agile methodology and were very test-driven. Part of the problem in many cases is that game development is often influenced either by an outside publisher who wants to see pretty art on the screen early on, big up-front designs (e.g., the massive design documents that are still commonplace in the industry), and often induce a more traditional waterfall-based development model. But that’s fine; studios who use more efficient practices will start eating the other guys’ lunch!”

Dave Mitchell: “XNA Game Studio Express and the XNA Framework were started at the beginning of 2006 and officially released within a single calendar year.

Koster also sees this change, but attributes the slowness in adopting new paradigms to other factors. He says, “I think this has changed already-agile development is pretty common these days in game shops. But there’s little doubt that it took a while to sink in. I think some of the cause is cultural, of course; when I joined the industry 12 years ago, it wasn’t unusual to hire whiz kid programmers straight out of high school. So there wasn’t much of an engineering sort of approach.”

Fristrom’s past experiences taught him to be more cautious when new radical ideas show up at his doorstep. He explains, “Perhaps it’s the sober wisdom of the game development industry that allows us to overlook fads? Agile is a loaded term. I’m always in the market for silver bullets and better approaches, so I look into all these things and try them out, but I make sure to keep before-and-after metrics of things like bugs found and velocity attained-and am usually disappointed. Approaches we’ve kept, that are clear wins, include: staying away from design documents and waterfall; avoiding speculative generality; tracking our speed; and continuous integration with end-to-end builds. Approaches we’ve experimented with and abandoned because the benefits were not clearly obvious include mandatory code reviews and mandatory pair programming. And the court’s still out for us on test-driven development: we’ve been using it for the duration of Schizoid and although it’s clear that it slows us down in the short run it’s not clear yet that we’ll make it back in the long run.”

Michael Austin: “Once I used C# to develop a procedural flower modeling tool, I was hooked.

But Mitchell thinks it simply took longer for the gaming industry to catch up in terms of maturity. He comments, “Until recently, team sizes were still relatively small and while agile or test-driven development would have benefited, it wasn’t necessary. That landscape has been changing, however, with team sizes today surpassing 300 on specific game titles and budgets growing to movie production levels. The increased challenges and complexities this brings, not to mention significantly increased risk, means that game development teams will have to turn to more robust and predictable development methodologies.”

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.

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.

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 crapload of code just to get the gamepad to work with a nice dead zone. That’s, like, two lines in XNA.”

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 (http://msdn.com/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.”

XNA Creators Club: “YouTube for Games”?

XNA has been touted as the “YouTube” of game development, where people will be able to build and share games with anyone else in the world, for everyone to download, play, and then rate or write comments about. But can Microsoft make it happen?

Benjamin Nitschke: “There is the fear of slow performance which just can be solved by actually working with .NET for a while.

Nitschke thinks the current offering has limited appeal to gamers, saying, “For now, only fans of .NET and game programming beginners will subscribe to the [XNA] Creators Club, but no gamer will know much about XNA games if they are not listed [on Xbox LIVE] and much less will anyone download someone’s source code and compile it themselves to deploy it on his Xbox 360. This process [got] easier with the [latest] release of XNA Game Studio Express, which allows building installers and direct deployment to the console, but we still need a way to get the content to normal gamers and XNA games need to be in Xbox LIVE!”

When it comes to building such a community around user-created XNA games, Mitchell thinks it’s more a question of when rather than if, informing us that we should not judge the full strategy based only on the current offering. He says, “A community of users creating games and then sharing them broadly will absolutely develop. We have a multi-year strategy we are executing on and XNA Game Studio Express is just the first of many offerings that will bring this community into reality. Our first milestone was to deliver the easy-to-use, low cost tools and technology to the community as well as access to the platforms. We delivered the first wave of the these tools last December in shipping XNA Game Studio Express 1.0 and have had more than 350,000 downloads of this technology in just the first four months of its availability. It is worth pausing for a moment to consider the magnitude of this number. More than 350,000 members of the community have expressed an interest in developing their own games. This figure represents more than 10x the number of professional game developers in the commercial games industry!”

Mitchell elaborates further on what to expect next. “Our second milestone was unveiled at GDC this year in San Francisco-the XNA Creators Club Online community site. Along with the more than 40 community sites around the world supporting community game development using XNA Game Studio Express, the XNA Creators Club Online site will provide aspiring game developers with a growing number of starter kits, samples, tutorials, and most important of all-support and community.”

Austin shares some of his vision and what he’d like to see. “I think a community like that can develop. Having strong community support features (forums, community written tutorials) will keep it vibrant, and allowing for people to post tutorials and moddable projects will improve the chances. There are varying levels of ability there, and if there’s the possibility for taking someone else’s project with permission and adding your own minor changes to it, I think it will attract a lot more users.”

Fristrom says the community is already here, but the tools themselves are lacking, explaining, “A community has already developed-you can go to the XNA forums and see that people are asking each other questions. ’How do I do this? How do I do that?’ and sharing code and showing each other their games. Microsoft could help grow the community by continuing to lower the barriers,” says Fristrom. “The ultimate goal being that you push a button in GSE and your game is uploaded to a Microsoft-hosted server that anyone, even non-programmers, can then download and play on their 360s and PCs, complete with a ranking and categorizing system that helps the good games rise to the top.”

Nitschke also wants better community support. “Just a forum is not going to cut it in the time of YouTube, MySpace and co. The XNA documentation is also not as good as it could be. There are a lot of tutorials for 2D games, but nearly no resources for 3D game development. The developer is almost on [their] own!”

Microsoft is not the first company to take this approach, and could learn from other initiatives already available on the Web. Koster comments, “There are several Web-based projects that seem to me to be closer fits to that “YouTube for Games” idea-Kongregate, GameGum, Pjio, and so on. They have all the rest of the infrastructure: tagging systems, reviews, community features, free uploads, ways for creators to make money for good content, and so on.”

Williams is already seeing this community growth happen to some extent on GarageGames’ own community site-The Great Games Experiment (www.greatgamesexperiment.com)-a gaming-focused social networking site that allows people to share their games or games that they enjoy with a variety of different audiences, and hopes that Microsoft can extend this idea with their own sites and community tools. “I can see a huge opportunity for such a community to develop. We don’t yet know if they will go that far, but I’d love to see it!”

Mitchell recognizes that the tools are not all there yet, commenting, “The third milestone we’ve shared publicly builds upon the previous two and is where consumers-or those simply wishing to play user-generated games-come into play. This is where a community arcade or “YouTube for games” type of offering becomes available. Our community should start to see the initial offerings under this milestone within a year.”

Mark Terrano, Design Director of Hidden Path Entertainment, also sees potential, but questions how easily it will happen. “I’d agree with that [“YouTube for Games”] statement as soon as game development (even with great tools) is as easy as pointing a video camera at someone and uploading a video. Great tools and a community that is based around sharing can let anyone who is motivated start to modify and later create their own games. Even being part of the community will be energizing-as someone who pretty much pounded out games solo in the 80s and early 90s, I think it will be great for anyone who wants to get going in the industry. 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.”

XNA Opinions: What Professional Game Developers Think

Clearly a community of XNA game developers already exists less than a year after Microsoft released the first beta of XNA Game Studio Express. But does Microsoft target professional game developers with XNA? If the XNA presence at GDC is any indication, it certainly appears so, and Mitchell clearly told us that the answer is yes. “XNA Game Studio Express is intended for the hobbyist or small development team to help them get started on the game design process. We’re also working on a professional level offering based on XNA Game Studio which is designed with professional game developers in mind. It will include additional features and functionality but most importantly, enable the development and certification of commercial games using the XNA Framework provided the game developer has an approved publishing contract. Even using XNA Game Studio Express, however, we’re already seeing some developers, like Torpex Games here in Washington, use it successfully in developing their first Xbox LIVE Arcade commercial game which makes it the first XNA Framework-based game to be commercially available on the Xbox 360. The limit is really up to the user.”

Josh Williams: “Managed languages are pretty well proven to be more efficient, from a programmer’s development time perspective, so it’s likely they’ll get more and more use in games.

Austin thinks the buzz is there, but it’s too early to tell how long it will take for professional game developers to catch on, saying “XNA is talked about a lot in professional circles and depending on each developer’s needs, opportunities, objectives, and situations, some are trying it out faster than others. I think it is going to catch on for a lot of uses, but the nature of the game industry is that these things will take time.”

A lot of the reservations towards XNA seem to be about the use of C# instead of C++, and the fact that it is based on managed code instead of native code. Nitschke explains why new languages are feared in gaming. “First of all there is the fear of slow performance which just can be solved by actually working with .NET for a while, and then there is the problem that most game engines are just available in C++ and if you have written a couple of C++ games before you still want to use that code base, tools, and libraries.”

Koster shares his initial thoughts on XNA and the impact it will have. “My initial impression was very positive, because I’ve been concerned for some time over how hard it is for people to get into programming, especially game making, these days. It used to be that there was an easy and easily accessible programming environment on every computer sold, and that’s not the case anymore. With the advent of the modern OS, just opening a window on screen is hard, what with all the foundation classes you need to learn.”

Being an early XNA adopter for commercial game development, Fristrom has almost become the XNA poster-boy in the gaming industry. He says that he gets very mixed reaction from industry professionals upon hearing about XNA developments at Torpex games. “From the programmers, [I sense] a mixture of curiosity and jealousy. Some of them act like we live in a strange exotic new country that they’d love to visit or maybe even defect to themselves. Others would love to be working with a high-level language instead of C++,” he says.

The primary argument against XNA is usually around performance, but this is what most professional game developers also said about DirectX in the 1990s. Back then, all PC games were running on DOS because it allowed game developers to tap directly into the hardware without any high-level operating system overhead. DirectX was Microsoft’s strategy to bring games to Windows, and it turned out to be a very successful one. Virtually all PC games are running on Windows now. So is history repeating itself? Developers got over their fear of Windows and adopted it as the PC gaming platform of the future. Will the benefits of managed code and XNA prevail over the shortcomings, just like they did for DirectX?

Fristrom answers, “I’m not sure it’s the same thing. We were dragged into DirectX whether we wanted to be or not, as some video card manufacturers made it the only API by which we could program their cards. And then it turned out to be a good thing anyway, as the API wasn’t the slow part. We were either bound by the CPU, the GPU, or DMA (the bridge between them), but taking a few extra CPU cycles to get our graphics onto the bridge didn’t matter. A lot of games these days are GPU or DMA bound-for those games, a performance hit on the CPU won’t matter, and you might as well use XNA.”

You Mean Managed Code Actually Gets Compiled?

In talking to game developers at GDC about XNA, I got the impression that many of them associate managed code with interpreted code, like scripting languages, assuming that the former will perform as inefficiently as the latter. Does the average game developer know the difference? It seems that many do not know that managed code is, in fact, compiled for native execution.

Koster thinks that developers are quick to forget that most of the scripting languages they have already embraced are not compiled either, commenting, “So I think that this is a bit of a red herring. Just as the reasons to go with a scripting language have to do with the benefits in other areas outweighing speed, we have to think of XNA in terms of whether the benefits in other areas outweigh the disadvantages.”

Jamie Fristrom: “Managed code is compiled as necessary and then kept in a cache for execution, so it can, theoretically, be as fast as C++.

Williams expands on Koster’s thoughts. “Most game developers nowadays use scripting languages to a large extent for their games, and we’ve been using scripting languages in game development for more than 10 years (at GarageGames, Dynamix, and other studios). So, there is a natural progression here where CPU time becomes more of a commodity as computing speed power marches ever onward, and developer time becomes more precious as game budgets get larger and larger. Managed languages are pretty well proven to be more efficient, from a programmer’s development time perspective, so it’s likely they’ll get more and more use in games.”

Fristrom says he didn’t know that C# code ran as native compiled code back when he first started playing with XNA, thinking then he would only be using it as a prototyping language. “What the hell is this ‘Just in Time Compiling’ stuff?” he wondered then, adding, “So, for those people who are as ignorant as I was-yes, managed code is compiled as necessary and then kept in a cache for execution, so it can, theoretically, be as fast as C++. We’ve found that our whole game gets compiled just once and the whole thing is kept in the cache.”

Nitschke remains firm in his belief that C# can be used for professional game development, stating, “There is absolutely no performance argument against .NET [and XNA]. There are many tools that allow you to write much better code and profile it much easier in .NET, but most [game developers] just do not know about it because they have not bothered to really try .NET yet.”

Ultimately, Koster does not think the answer always lies in the technology, stating, “Good solutions do not always get adopted, and it often has little to do with the actual strengths or weaknesses of a given platform.” Microsoft will need to publish data from performance benchmarks and also share information with the rest of the industry on what is being done with XNA commercially, and who is using it. Koster adds, “Judging whether XNA is successful is probably premature. I haven’t even heard any stats on adoption.”

Mark Terrano: “Anything that makes the creation experience easier, more fun, or accessible to more people is a great thing-I’m all for it.

Williams knows it all too well, blaming it on short-sightedness and stubbornness, saying, “Native vs. managed? It’s a question most people aren’t even willing to consider today (naively, in many cases, since many people simply dismiss the possibility out of hand without doing any sort of serious technical investigation). Eventually, it should become a more hotly debated topic, which will be the first sign of C++’s impending demise,” he jokes, adding, “I’m exaggerating a bit, but the trend toward higher level languages and systems is well established, and for good reason. And thankfully so! I think game developers would breathe a collective sigh of relief if they never had to debug a corrupted memory stack again!”

What Games Can You Build with XNA?

Not everyone I talked to at GDC believes in XNA. Not yet in any case. Many of the XNA doubters and naysayers claim that XNA is only fitting for casual games, or at most prototyping game ideas. Until game developers see more commercial XNA games and bigger examples of XNA games in various genres, like first-person shooters, action games, role-playing games, sports games, and others, the question will remain about the type of game that can be tackled efficiently with XNA.

John Williams: “I think game developers would breathe a collective sigh of relief if they never had to debug a corrupted memory stack again!

Koster has strong opinions about this false perception on the scale of games from his industry peers, saying, “I think a lot of this is snobbishness about what “a game” means these days. Somehow we have started thinking of something that was a commercial product making millions of dollars in the 80s, as just “a minigame” today. But a killer puzzle game is still a hit game. Scale is not an indicator of quality. In addition, I don’t think that there’s anything specific precluding larger projects being made with XNA. Again, what I have seen within the indie community is that they will make large and ambitious titles with pretty low-end tools.”

Microsoft also seems realistic about who these initial tools are for, but Mitchell is very confident about what can be achieved with XNA Game Studio Express. He comments, “XNA Game Studio Express was designed first and foremost for community game developers and not the professionals. Even so, we’ve been continually amazed at what professional game developers have been able to do with it once they’ve gotten past any initial objections to it being a managed code environment. The XNA Framework is really proving to be favored by a growing number of professional and indie game developers for Xbox LIVE Arcade games and rapid prototyping of new commercial game concepts. As we move closer to unveiling details on our professional level offering of XNA Game Studio Express, I think you’ll start to see an even greater rate of exploration and adoption of “bigger” game ideas using this technology. From what I personally have seen developed using it so far, I’d bet that nearly all games on any last generation console and even a fair number of the games this generation could be created using the XNA Framework.”

XNA and C# are primarily used for prototyping at Hidden Path today, says Austin. “Hidden Path Entertainment is a typical independent developer-we want to be able to make games for any platform and suit the experience to the user, the controls, and performance of that platform. We use middleware and unified systems for some titles or custom tiny engines for others-our main goal is flexibility and speed so we can take on a variety of challenges. C# is useful in that we can get game play prototyping going while the technical specifics get worked out for the specific platform.”

Fristrom does not think XNA is just for prototyping. He does not consider Schizoid to be a casual game either. He sees hardcore game developers having an interest in it, and Torpex is shipping Schizoid as an XNA game after all, “so it’s clearly not just for prototyping” he says.

Terrano cautions against underestimating the value of prototyping though. “Game development is about finding the core fun activities in your title and iterating and carefully tuning that experience-then adding the best audio and video assets to match the game play that you can afford. I’d be surprised (and disappointed) to see a professional designer disparaging something as being fit only for prototyping game ideas-that is the most important and critical part of the game development process. Ultimately, in a highly competitive space where speed of iteration, quality of execution, and reducing development risk are major factors to success, I’m fine letting naysayers ignore whatever tools and advances they’d like.”

Austin would use C# for commercial games, not just prototyping, provided that XNA Game Studio could also allow you to integrate native code calls as well, which it does not today. While it is possible to use the full .NET Framework 2.0 including all namespaces, networking features and even unmanaged code calls in XNA games running on Windows, the .NET Compact Framework-based XNA Framework on the Xbox 360 does not offer such flexibility. “I think the using only one or the other mentality is limiting, and I think once one considers projects that have both managed and unmanaged code, the possibilities are quite large. I don’t know if I’d ever write a full production, AAA action game exclusively in C#. However, it’s been my experience that many really tough debugging issues come up in game play code which C# helps prevent. I can see writing a AAA game where everything except the very low level bottleneck systems (rendering, physics) are in managed code, for example” Austin says.

Is XNA Just for Casual Games?

Casual games are those games we can pick-up and play for a few minutes on a console, portable device, computer or even in a Web browser as many casual games are Flash-based. From Solitaire to Tetris, Sudoku and beyond, casual games have the widest and most diverse audience among gamers, and they are also the most probable to be played by non-gamers, hence the term casual gamer. But quick to play does not mean these games do not attract hardcore gamers too. Microsoft’s Xbox LIVE Arcade features a wide variety of casual games, and even the most hardcore Gears of War player often can’t resist a good game of Hexic HD or Geometry Wars.

Raph Koster: “A killer puzzle game is still a hit game. Scale is not an indicator of quality.

Williams is quick to point out that XNA is not just for casual games. When asked the question about whether XNA is just for casual games, he answers “Casual games… assuming we define that as today’s stereotypical PC online match-3, puzzlers, and bubble-poppers, absolutely not. Mid-way through development of Torque X, without even having done the majority of our performance tuning and optimization, we had a fully shaderized, 3D level of Marble Blast Ultra up and running and performing well on XNA and Torque X. Marble Blast Ultra, I think most anyone would agree, is one of the most technically sophisticated and largest scope games on Xbox LIVE Arcade, and goes well beyond any normal definition of a casual game.”

But before going too far on the question, we need to assess whether or not the casual game developers even care about XNA. To find out how XNA was received in the casual game community, I contacted Brad Edelman, CTO of PlayFirst, who is one of the leading developers and publishers of casual games across several platforms.

“In our opinion [at PlayFirst], Microsoft is focused on a completely different audience and goal with XNA. There are two primary reasons PlayFirst would not use C# and XNA to develop games:

  1. PlayFirst games target the mass-market consumer on the Internet. Games built in C# and XNA require consumers to have the .NET runtime, which most consumers do not yet have. Sure, people could go download and install .NET, but that’s asking a lot of the average consumer-plus, the download of .NET is bigger than the download of our entire game!
  2. PlayFirst targets multiple platforms. To Microsoft, cross-platform means Windows and Xbox [360]. That reminds me of the line from the Blues Brothers movie: “we’ve got both kinds of music: country and western.” To the rest of world, cross-platform means Windows, Macintosh, Xbox, PlayStation, Wii, PSP, DS, and the killer set-top box of tomorrow. C# is simply not available across these platforms. It’s not necessary to debate the merits of C# if it’s not even an option. Our casual game development framework, Playground SDK, on the other hand, was built from the ground up to be cross-platform. Its conservative use of C++, minimal footprint, and carefully designed abstractions make our SDK and games easy to port, putting PlayFirst in the position to succeed with our games wherever the future of digital entertainment takes us.”

Microsoft’s Mitchell even agrees with Edelman, stating, “For XNA Game Studio Express, we specifically chose not to support the same considerations and constraints as the broad casual games market. This offering wasn’t designed for them.”

Fristrom comments further on the casual games issue, saying “I’ve got a few friends in the casual game community and I haven’t heard this criticism, myself. The casual games developers I know aren’t making the jump because they’re almost as entrenched as console developers. They’ve got fewer lines of code to move over but fewer engineers to do it! When you think about it, we were really in the right place at the right time-we happened to be starting a new game with a new engine just as XNA became available.”

Austin is not worried about whether or not the casual game community adopts XNA. “There are always different people with different needs, and rarely is any product going to satisfy everyone’s needs out of the box. I don’t believe XNA’s success rests solely on one type of game developer’s needs. I also don’t think that any one type of game will always be made the same way. Game categories continue to evolve and change. XNA has many possible uses, and it may not be right for some developers, but I think it can be very useful for others.”

Williams reiterates how important it is for Microsoft to bring community tools around XNA games, saying, “If Microsoft figures out how to allow the sharing, rating, recommending, and selling (!) of these games, it will be an even bigger deal. At that point, it won't matter what casual game developers think, though I'm pretty sure by then they will see the value in putting their game in front of millions of console owners.”

What Is the “Ideal” XNA Game?

With XNA being a new game development platform and toolset, it remains to be seen how far developers can go with it. Are there “ideal” game types better suited for XNA? Are there game ideas that you cannot create with XNA? Fristrom remains open-minded. “I don’t think there’s anything XNA can’t do,” he says.

Mitchell is equally optimistic, adding, “I’ve now seen just about every genre and game type created using XNA Game Studio Express and all of them within incredibly short periods of time. At GDC this year, we had four hobbyist teams from around the world design games using XNA Game Studio Express. In just four days, the teams created a 3D action RPG (Figure 3), a 2D siege shooter, a side-scrolling adventure game, and an off-the-wall alien abduction game that incorporated voice commands. It still blows my mind that they were able to create those four amazing games in just four days! I can only imagine what the community will create when given four months as part of the Dream-Build-Play contest later this summer.”

Figure 3: Dungeon Quest is a dungeon crawler game developed with XNA Game Studio Express by Benjamin Nitschke and his team as part of Microsoft’s Four Games by Four Developers in Four Days contest held during GDC 2007 last March in San Francisco.

But for various reasons modern games can be demanding. Some games feature hundreds of animated mobs (for mobile objects, the name given to any in-game character or creature controlled via artificial intelligence scripts), such as Capcom’s Dead Rising or Microsoft’s Ninety-Nine Nights, both on Xbox 360. Fristrom maintains that “[XNA Game Studio Express] can handle hundreds of mobs easily-more than enough for a [Real-Time Strategy Game] or Dead Rising.”

Dave Mitchell: “I’d bet that nearly all games on any last generation console and even a fair number of the games this generation could be created using the XNA Framework.

Austin does not entirely agree that XNA can do everything. “Games that aren’t really pushing the technical boundaries of the platform are more ideally suited to XNA since there IS overhead in managed code. However, given that more and more work can be done on the GPU, even that is changing. I think making the assumption that it is all or nothing probably limits one’s options. A mixed environment C#/C++ project can take advantage of each language’s strengths in the areas where those strengths are most needed.”

Managed MMORPGs

Other games such as massively multiplayer online role-playing games (MMORPGs), like World of Warcraft, EverQuest 2 or Lord of the Rings Online, can be highly demanding in terms of networking needs when hundreds of thousands of players are playing the same game simultaneously. Latency-and server-induced delays (aka lag) can mean the difference between an enjoyable online experience and utter player frustration. But today the XNA Framework does not even feature networking libraries on the Xbox 360. “Network support is on its way,” says Fristrom. “The hard part about the MMO is the server, right? No reason you can’t do your client in XNA. And no reason why you can’t do the server in C#” he says, adding, “they can build game servers in Java and Python, why not C#?”

Mark Terrano: “Game development is about finding the core fun activities in your title and iterating and carefully tuning that experience.

Koster, a top industry expert in the design and development of MMORPGs and virtual worlds who has worked as Lead Designer on Ultima Online and Star Wars Galaxies, is skeptical about using only managed code on the server for such games, saying, “You definitely want your core server to run as lean and fast as possible, for any large-scale world. But as I said, for years now, a large portion of the code of many massively multiplayer games has effectively been managed code written in script.”

Mitchell is absolutely positive that managed code can thrive in gaming on the server-side too, adding, “A little known fact in the game industry is that [Linden Labs’ online virtual world] Second Life is actually using C# for its server-side code. [Halo developer] Bungie’s wildly popular Bungie.NET Web servers hosting historical gameplay data from all Halo 2 games played over Xbox LIVE is also developed using ASP.NET. The number of games using .NET and C# outside of their tools chain will definitely grow.”

C# is also not the first language to dethrone C++ on the server. Case in point, Koster says, “I’ve worked my whole career in online games, where it’s very common to use scripting languages. At this point, I have used Lua, Python, Java, and a couple of custom solutions. Typically, a virtual world will run as a C++ engine with an embedded scripting language that handles most object behaviors. Common behaviors are migrated to C++, but for a variety of reasons it makes sense to have scripting be a rapid development path for behaviors. It lets designers do first pass or sometimes final behavior programming, and makes it easier to easily add one-offs. And since the scripting language can be insulated from the rest of the server codebase, you can protect the game as a whole from runaway scripts.” He adds, “The results have varied dramatically by language. Java proved to be very difficult to integrate with C++, whereas Lua turned out to be a breeze. The best solutions I have ever used have been the custom ones, perhaps because they are designed exactly for the task and do nothing else.”

Pushing the Envelope with Next-Generation Visuals in Games

Observe any gamer shopping for a new title in a store, and the moment they pick-up a game box, they immediately flip it to take a look at the in-game screenshots on the back of the box to assess what kind of graphics the game features. Since the dawn of video game consoles in the 1980’s, game visuals have always been the premier benchmark gamers have relied on to “judge” a game, whether they’re looking at the box art or the game itself on a TV or computer monitor. Graphics are important, it’s undeniable, so can XNA compete? Could you produce a game with Gears of War-quality graphics on XNA?

Dave Mitchell: “For XNA Game Studio Express, we specifically chose not to support the same considerations and constraints as the broad casual games market. This offering wasn’t designed for them.

When I asked Gears of War developer Epic about it during a private press/media session at GDC, their answer was (and I paraphrase) that their Unreal Engine 3 was just too powerful for XNA. Fristrom comments, “We’re just too powerful for you” sounds like something a marketing department might say, but I’d agree that any program that’s CPU bound will run slower in XNA. Is Gears CPU bound? Still, I think you can do photorealistic graphics with XNA-photorealism with its shadow and displacement maps and high vertex densities and whatnot binds you on the GPU, and XNA gives you full access to that through HLSL. (In fact, I believe Tim Sweeney’s been quoted as saying they only use HLSL for their shaders, so at least in that respect you’re on the same playing field as Epic.)” He also adds, “when we’re doing GPU programming in HLSL, that’s no different than what we’d do without XNA, really.”

Austin is more cautious when it comes to touting XNA’s graphics capabilities, saying “Games have always been at the forefront of pushing processors and graphics cards to their limit; C++ is still a good balance between ease of development and writing code where the performance ramifications are completely understood. As long as graphics and advanced physics are a competitive advantage, it’s harder to move to a higher level language.”

But how far can you push the graphics envelope with XNA? Mitchell sees this as an area of the XNA Framework where it shines brightly, commenting, “Game developers will find that they have near direct access to the full power and capability of their GPU on both Windows and Xbox 360. They can take full advantage of programmable pipelines and all the features in Direct3D as of DirectX 9.0c. Our XNA Racing Game Starter kit (Figure 4) released in May is a small example of what is capable. This next generation-looking 3D racing game runs at a fluid 30+ frames per second at 1080p and 2xMSAA enabled. The same game runs at 60+ frames per second at 720p and 4xMSAA.”

Figure 4: Racing Game is a free XNA Game Starter Kit provided by Microsoft and published with full source code on the XNA Creator’s Club online Web site. It was developed by Benjamin Nitschke and his team at exDream Entertainment.

Fristrom, on the other hand, has solid hands-on experience with XNA, thanks to Schizoid, and still has not found its graphics limitations. “We don’t know what the limits are-there’s no such thing as the fastest code-we aren’t exactly trying to push the envelope with high vertex densities and dozens of shader passes. One number I can tell you is we had 180,000 particles rendering at 60 Hz in our particle system-but there’s no reason to believe we can’t do more if we devote more time to it.”

Williams shared his own hands-on experience about running Marble Blast Ultra using XNA and Torque X. “[Marble Blast Ultra] was running on Torque X and XNA with continuous time polysoup collision detection against a level with tens of thousands of polys, full shaders with lighting, specularity, normalmapping, real-time dynamic cubemap reflections, and a whole lot more. We know it’s possible to do complex 2D and 3D games on this stuff.”

Beyond Graphics: Game Play

But creating a successful game does not always involve pushing the envelope in terms of next-generation graphics. While visuals create a strong first impression with players in a game, fun and innovative game play are what turns a game into a commercial hit. Case in point, highly successful franchises like Guitar Hero, Lego Star Wars, and Dance Dance Revolution do not owe their success to advanced graphics, but to their game play elements. Could XNA have been used to create these games, or similar games, without sacrificing quality? Mitchell thinks “all three could likely have been developed using the XNA Framework” Fristrom, Austin, and Williams all agree with this assessment. Koster even adds, “Dance Dance Revolution and Guitar Hero as games are not that complicated, and have been replicated in Flash [on the Web], even. So I have little doubt they could be accomplished [with XNA]. Again, we should not be distracted by the 3D models bouncing around in the background.”

Josh Williams: “If Microsoft figures out how to allow the sharing, rating, recommending, and selling (!) of these games, it will be an even bigger deal.

Nitschke also agrees but explains further, adding, “If we assume XNA would support a sound API more flexible than XACT and networking yet, it would not be a problem to develop any Xbox 360 game. Some low-level hardware features might not be supported 100%, but the most important thing for good graphics today are shader-based anyway, and it won’t matter if you use native or managed code, the shaders are written and executed in the same way.”

Austin wishes they could start focusing more on game play than graphics, saying, “I personally would like to see the game industry stop being a graphics arms race, and instead take the 90% effort which gives the 10% better visuals and put that energy into game play. Nintendo has done a good job of showing how that can work effectively. Game play development is all about rapid prototyping, iterating, and willingness to throw out what doesn’t work; this is exactly what XNA and C# are suited to.”

Indeed, the massive success of the Nintendo Wii so far has taught us that next-generation graphics and pushing the envelope technically are not necessarily the keys to success. After all, both the PlayStation 3 and Xbox 360 proudly support HD with 720p and 1080p resolutions whereas the Nintendo Wii is content with offering players innovative ‘Wiimote-waving’ fun at a mere 480p resolution, which is that of a standard DVD signal.

Players want game play innovations, games for everyone, and games that are just plain fun. Can XNA then help bring back innovation by lowering the entry-level bar thus welcoming new blood and fresh ideas? Mitchell hopes that is the case and is betting on it, adding, “I’ll even go so far as to say that I believe a hit title for the Xbox 360 in 2008 showcasing fresh, new innovation will come directly from the community. XNA Game Studio Express’ design is such that it allows you to focus on elements of your game that make it unique and fun. Leave the core technology problems to us and the XNA Framework.”

Benjamin Nitschke: “I cannot see any reason to start developing games for the Wii or the PS3.

Williams elaborates on Nintendo’s bold new direction, saying, “I’m happy Nintendo is carrying the flag on this. And if you listen to a lot of what Microsoft has been saying as regards XNA (or what we’ve been saying for years at GarageGames)… we’re all talking about the same thing. There’s plenty of room for huge, bleeding-edge, top-tier production titles in the market today, and there always will be an interest in the latest, greatest, and blingiest. That’s great, but there’s a huge array of games that can be done without a $25 million dollar production budget, and as a game player… I really just care about how much fun I’m having when I’m playing. I really don’t give a s*** about how realistic my character’s eyebrows look.”

Knowing how to use a stove does not make one a great chef, and the same goes for game development tools. Nitschke gives us his own take on the Wii and the role of the developer in innovation, adding, “XNA is just a framework; it is still the game developers who make the games. I would agree that the Wii did bring back some innovative game ideas and especially the controllers are fun, but most gamers out there today still want their regular food. Just take a look at the most successful games today like World of Warcraft for PC or like Halo for the Xbox 360, which are not really innovative. Those game ideas have existed for a long time. Those games have just better controls, better balancing, and better game play and have huge worlds.”

XNA in Education

Beyond hobbyists and professionals, Microsoft has also been partnering with dozens of universities and game development institutes to bring XNA to the curriculum of future game developers. Mitchell explains further, “The academic community has always been a primary customer of XNA Game Studio Express in addition to hobbyists and indie game developers. Computer science enrollment in many countries around the world is on the decline and in certain regions, we're seeing reports reaching 60% or more decline year-over-year. While this technology isn't the silver bullet that will help to reverse that trend, it is being used by more than 80 universities globally as part of overhauling dated curriculum and lab environments. Additionally, to help these and other universities successfully adopt and integrate XNA Game Studio Express into their curriculum, we're investing even more resources towards creating an XNA Academic Program that will work with partners in the academic community to develop re-usable curriculum, game samples, lab exercises, textbooks, support resources, and more.”

Jamie Fristrom: “I don’t think there’s anything XNA can’t do.

With support for the Xbox 360 using a simple off-the shelf commercial console, XNA is well positioned to provide a cheap and efficient offering to game development faculties and academies looking to reach beyond PC gaming in preparing students for the gaming industry. Mitchell also adds, “The game industry’s reaction has been overwhelmingly positive. The more people we can get excited about our industry and pursue careers as game developers, content creators, audio engineers, etc., the better.”

Williams can certainly relate with students discovering console development through XNA, sharing some old dreams.

“The first time we had one of our engine demos up and running on an Xbox 360 was very exciting, when we realized how easy it was going to be for anyone to do this on their own. I can only imagine how stoked I would’ve been if somebody had released something like this while I was in high school, programming games in my spare time. To be honest, I’m not sure how often I would’ve been able to pull myself away from making games and playing them on my console with friends at home, and actually head into class.”

Michael Austin: “In a hit-driven industry where a majority of games lose money, mitigating risk becomes very important.

“(Disclaimer! Not that this is bad for education, or anything. ;) Quite the opposite! I think managed code and XNA is a *great* way to learn game development, without all the trials and tribulations you suffer from beginning to learn C++ from the ground up.)”

Won’t New XNA Grads get Pigeon-holed?

XNA still has a long way to go before it gets widely adopted by professionals, if it even does. If the gaming industry does not follow this path and a new horde of XNA-proficient game development grads start looking for jobs, are these developers then at risk of hurting their career before it even starts? Mitchell is not worried. “There are many readily transferable skills that game developers using XNA Game Studio Express can apply at a game studio. XNA Game Studio Express is based on Visual Studio .NET, which is the leading development tool used by more game developers than any other IDE. The concepts applied using the XNA Framework will also transfer over quite well to C++ game projects. The HLSL programming in the XNA Framework is identical to HLSL they’d develop for any other game outside of XNA Game Studio Express. This goes on and on. I think it is rather short-sighted of folks to rule out a person’s experiences and skills purely based on the fact they are based on managed code rather than C++.”

Jamie Fristrom: “The hard part about the MMO is the server, right? No reason you can’t do your client in XNA. And no reason why you can’t do the server in C#.

Williams also sees XNA as a positive force in education, saying, “You want to learn game development *practices* in school. It’s more important that you learn how to program and solve problems in general than it is that you learn how to implement systems that handle memory leaks and dangling pointers in C++. Better that you can dive right in and learn what sorts of issues you face in making a real game-making a design fun and polished-than it is to learn low-level C++ stuff. In the end, any sharp programmer can pick up that low-level stuff over time. The skills you learn and knowledge you gain in a game development course are ideally higher-level. And even more important is that your programming and problem solving skills be *transferable* across technologies. In the course of a career in game development, you’re practically guaranteed to touch all kinds of different technologies-various platforms, tools, frameworks, engines, middleware, and homebrewed systems. You need to be able to use them all to your best advantage, and roll with the needs of a particular project. Using XNA and managed code lets you more rapidly learn the truly important and difficult parts of game development, without throwing in speed bumps dealing with low-level, annoying problems when you’re just starting out. So, "pigeon-holing" isn’t an issue, and as someone who hires game developers, I’d be happy to see candidates coming in with experience on XNA. Ultimately, XNA, managed code, and C# are all just a fraction of the concepts students will be exposed to going through a current computer science or game design program.”

Koster is also happy that new game development students are starting fresh without so much focus on C++, hoping that this will have a lasting impact on the industry itself, elaborating, “In general, the game industry needs to do this. The industry is reliant on C++ right now, but many of the young developers are using other languages including Flash, Java, and so on. Much of the computer programming field is onto things other than C++. Even though it seems like most young programmers are curious about game development, the teaching of C++ seems to be on a bit of a decline. So anything that gives them an onramp is good for the industry.”

Fristrom sees this as a positive move, and also offers advice to future game developers. “I think it’s great-I wish I had that when I was going to school. Game developers are not at risk. Technology changes all the time and part of the challenge of being a game developer is you have to keep up. One thing that does concern me about engineering schools these days is they are getting too far from the metal-programmers, whether they’re in games or not, should understand how pointers work and how to make dynamic data structures out of them, whether or not they actually have to explicitly use pointers in their day-to-day work. So for game engineers working in XNA I’d hope they also take some classes in C!” he says.

Austin believes that university and institutes have to primarily cultivate certain qualities in future game developers, independently of technical skills, and that XNA’s enhanced level of productivity can help reach that goal. “I think that the way to inspire passion and energy in students is to get up and running fast and make it as easy as possible to learn what it takes to have a complete game. That experience transcends platform or programming languages.”

Why Should Professional Game Developers Care About XNA?

Prototyping, fast iteration, higher productivity: Is this still enough to sway the bulk of the gaming industry away from C++ and into the world of managed code? Fristrom explains why his peers should follow his lead in embracing XNA for commercial game development.

Raph Koster: “For years now, a large portion of the code of many massively multiplayer games has effectively been managed code written in script.

“You can get a proof-of-concept up-and-running quickly and cheaply, so you can decide as early as possible whether to devote more resources to it or kill it. You get all the benefits from using the Common Language Runtime: faster build times, garbage collection, array bounds checking, pointers-free-code. Did I mention faster build times? That’s huge. Also, fewer bugs, more productivity. You get all the benefits from using a very parseable language-better refactoring tools and auto-completion. It’s like the editor is writing your code for you. All this stuff makes you happy. Happy programmers are productive programmers.”

Austin offers a practical example. “I recently wanted to test out some procedural geometry ideas for a game I was working on. What usually has been my bottleneck in the past is dealing with the infrastructure to create a windowed graphics application and support classes. With C#, in a day I had a model viewer that read in from an external source, and had sliders to test out various parameters on a fairly complex system. For me, C# is so valuable in prototyping and tools; it’s almost irrelevant whether or not you could write a full, performant next-gen game exclusively in it.”

However, the larger the game studio is, the harder it will be for them to migrate to or even adopt XNA. If you’re sitting on an investment in dozens of man-year (or more) worth of game engine and framework code based on C++, moving to any new technology often means a much lower ROI on your existing code base.

Fristrom knows smaller studios have an advantage here. They can turn around faster, adopt new technologies more easily, and also attract the developers eager to pioneer new techniques and approaches. “Well, the established studios are basically entrenched, right? Their engines are millions of lines of C++ code. Even if a coder in the trenches wanted to switch, getting their whole studio to switch would be nigh-impossible,” says Fristrom. However, he says he’s talked to a few programmers who wanted to join Torpex simply because they are using C# for game development.

But in the end, Fristrom believes professional studios and game developers will have no choice but to evolve beyond C++ and embrace managed languages like C# in XNA, stating, “You know, what the anti-C# reservations really remind me of was back when the industry started switching from assembly to C. You’d hear some macho programmers boast, “I write everything in assembly! C is just too slow!” And then their studio would languish or die. And [ID Software’s] Doom comes along and John Carmack says that there are only two assembly language functions in the whole game. That opened a lot of eyes. Maybe we’re not quite there yet, but at some point, writing in C++ is going to be considered a premature optimization.”

Williams agrees with Fristrom and elaborates further. “It’s a pattern that’s repeated itself a bunch of times. C was lambasted when people first started talking about using it in game development too! Back in the day, it was assembly or death. Even today, you can squeeze out more performance in most routines by writing them in assembly than in C++, if you’re willing to put the time in. But man, who wants to?”

Nitschke agrees with Fristrom and Williams, asking “Do you know anyone still doing pure assembler programming? Probably not and in 10 years you will find it hard to find pure C++ programmers too. If you look at non-game developers you see a strong shift towards .NET [that happened] in recent years. It took a couple of years too, but it is ridiculous how long it takes for game developers.” He adds jokingly, “We are talking about game developers here. You have to fear the managed code; it may eat your family.”

Williams is confident about the viability of new technologies and languages like XNA and C# because in the end, you have to manage your priorities on what is more important, and more costly, saying, “Higher-level languages, and higher-level systems usually win in the end because developer time is more precious in the long-run than processor time.”

Mitchell believes this will change over time, saying the fear of managed languages will disappear “as more professional game developers get hands-on experience with the XNA Framework and find the [performance] limits out for themselves and as more commercial game titles are developed and released using XNA Game Studio Express and its professional counterpart.” They’ll basically have to see it for themselves.

XNA Limitations

When it comes to what XNA can’t do, Mitchell is quick to focus on limitations-by-design rather than technical limitations, saying “XNA Game Studio Express is quite capable of many things as noted but there are definitely areas we weren’t able to address fully to our satisfaction in this initial release. There is no networking support in the XNA Framework on the Xbox 360 yet but it is planned for a future update. There’s also no ability to share broadly outside of the XNA Creators Club but as I mentioned, that is a solution that will come with our third milestone set of deliverables.”

Jamie Fristrom: “When we’re doing GPU programming in HLSL, that’s no different than what we’d do without XNA, really.

Koster also sees the limited feature set as its main limitation. “I want it to be more open,” he says. “The current method of implementing and monetizing it really seems like a bit of a tentative step in some ways. Until it’s just another tool in the arsenal, it will be perceived as “that thing for hobbyists” by the industry as a whole.”

As a manager, Williams has a different perspective on where a new technology like XNA might be a problem at first: human resources. “There isn’t yet a large pool of experienced managed code game developers or XNA experts, which matters when you’re looking at putting game dev teams together,” he says.

Having done a fair bit of development with XNA, from porting Rocket Commander to the XNA Racing Game starter kit and the nine or so full games he wrote for his book, Nitschke also sees many shortcomings in XNA. He basically feels there are too many important features missing. “For a game developer, it is very important to have the ability to use existing libraries and code bases, which will be the main problem for most game developers today. If you develop for Windows it won’t matter because you still can use Visual Studio Professional, the System.Net namespace for networking, other sound libraries and whatever else you need, but you won’t have any Xbox 360 support then. I think the most important missing feature right now is networking and the ability to interact with the Internet, calling Web services and so on. But having low-level access to a sound API would be helpful too, for example, in XNA you can’t play MP3s, from audio CDs or any other music file format except if you convert them to .wav and live with the ridiculously big file sizes.”

Williams agrees with Nitschke, expanding on some of the limitations they encountered when porting Torque to XNA. “On a technical level, managed code isn’t a free ride. Initializing resources is costly, and you need to be smart about managing memory (though in a very different way than you do in C++… it’s more about minimizing the creation of new objects, rather than worrying about how they’re allocated and freed). This limits some games as in many situations you end up wanting to preload all your resources at start-up, which is not ideal given the Xbox 360's limited memory. Managed code definitely executes more slowly than C++, though that’s not a huge barrier for many games. In short, like any technology, there are myriad limitations and drawbacks that need to be balanced against the advantages and benefits in the context of a particular project.”

Fristrom does not see immediate technical limitations, but Torpex has also been working with a pre-release version of XNA Game Studio Professional so he might not have faced many of the limitations Nitschke still has to live with. Fristrom adds, “It’s new. It’s always hard to say what the drawbacks and limitations are of a new system until you’ve put it through its paces. So that can scare people.”

Nitschke continues, sharing some first-hand experiences with XNA. “Performance-wise [developers using] managed languages do not have to fear native [code] games, but you still have to mention the problems XNA currently has on the Xbox 360. XNA is based on the .NET Compact Framework on the Xbox 360, which was developed for mobile devices and might not be enough for some applications. On the PC you can get great performance and I have a lot of unit tests in my projects with great performance results. These unit tests are also ported to the Xbox 360, but sometimes it can be annoying if your tests get slow just because you used a foreach-loop instead of a for-loop just because the .NET Compact Framework does not have a generational garbage collector. You can get around these issues, but it would be much better if there would be better support for the full .NET Framework including network support and the full garbage collector in the future. Since C++ does not even have a foreach-loop and you would use a for-loop anyway, you also can’t say that developing with C# would be harder; you just have to think about the issues a bit.”

Raph Koster: “The first XNA hit, or hit where XNA was clearly a factor in the success, will silence doubters.

Garbage collection can indeed be the bane of the game developer. Non-deterministic finalization, such as it is featured in the CLR’s garbage collector, means that objects are not freed when the developer chooses, but rather when the CLR does. This can cause problems in high-performance real-time games running at 60 frames per second if the garbage collector kicks in and takes a few extra dozen milliseconds between two frames to clean-up some resources, just as the player was poised for that critical headshot in a multiplayer game. Games have to run at a smooth and consistent frame rate with no lag or hiccups. Gamers are known as some of the most vocal software users and they have no shortage of words or venues when it comes to voicing their discontent for a (seemingly) poorly implemented game.

Case in point, Fristrom observed the following while developing Schizoid. “When programming in C# I do like to use delegates a lot-the same way you’d use lambdas in Scheme or Python. My finding there, for your more technical readers, is that you should avoid closures because they can create a lot of garbage on the heap, and that this:

// Don't do it this way
Foo( myFunction );

surprisingly generates garbage whereas this doesn’t:

//Doesn't generate garbage
Foo( delegate(Thingy x) { myFunction(x);} );

Go figure.”

Austin has also seen limitations in XNA, but remains optimistic that the tools will grow to compensate for them. “The only difficult efficiency issue I’ve run into with C# is extremely tight inner loop code because of type and bounds checking. Working around that gets easier as the tools and libraries get better.” After all, XNA and Game Studio Express are still at version 1.0, and it is not common for such a fledgling product to be examined under the microscope to such an extent at such an early stage of its life cycle.

Williams expands further on XNA limitations, alleviating any fears one might have about the potential of XNA today.

“As to theoretical limitations… really, in terms of graphics, XNA plugs you almost directly into Direct X calls, so there’s very little loss of potential graphics performance. On the CPU side, physics, AI, and other processor-intensive subsystems are less performant than in C++, but one shouldn’t be mistaken here. Even most of the top-line games released today aren’t taking full advantage of the multi-core, multi-processor systems available in modern consoles and desktops, so we’ve yet to see the limit of game complexity. Certainly nobody has utilized all this computational power with XNA yet either, so we’ll see more and more impressive stuff coming down the pipe across the board.”

XNA: Building Games for Both Windows and the Xbox 360

XNA allows game developers to build one code base which can then run on both Windows and the Xbox 360. While each platform requires its own project template in Game Studio Express and developers can also add platform-specific code using conditional compilation, XNA code remains fairly multiplatform from a Microsoft gaming platform point of view.

Raph Koster: “Dance Dance Revolution and Guitar Hero as games are not that complicated, and have been replicated in Flash on the Web, even. So I have little doubt they could be accomplished with XNA.

Multiplatform game development requires more than a common code base however. Profiling and tuning of XNA code remains a critical step of the development and refactoring process just as it is for C++ code. Fristrom comments on this matter, saying “On the PC, it’s easy. You can use any off-the-shelf profiler for CPU profiling, and you can use Microsoft’s awesome CLR profiling tools for garbage collection and stuff like that. And you can use PIX. On the Xbox, it’s about the same as writing in C++: no real good CPU profiling-you have to do your own instrumentation; but you can still use PIX.”

While Schizoid has been developed for Xbox 360, Fristrom says Torpex plans on releasing the game for Windows too using XNA, as well as future games too. But what about other platforms? C++ can truly be used as a multiplatform language and, unlike XNA, it does not discriminate between gaming consoles from Microsoft, Nintendo, and Sony, and the same goes for PC gaming on Windows, Macintosh, and Linux. Can XNA be treated as a true step forward when it covers such a narrow field?

Williams is not concerned with this limitation because it still opens up a vast market that was otherwise hard to tap into. “First of all, Microsoft's definition of cross-platform is able to run on multiple Microsoft platforms. We’re well aware that this is not necessarily the rest of the world's definition of cross-platform, nor is it our own [at GarageGames]. Regardless, the reality is that Microsoft’s platforms cover a huge percentage of the game market, and it’s obviously more than enough space to make successful games in.”

Austin explains where XNA fits in his plans, saying, “We’re very fortunate at Hidden Path to work on all of the major gaming platforms for our different projects. That means we’ll typically isolate platform-specific code with a common API that we fill in as appropriate. Each project we work on has different requirements and different objectives from a technology point of view, so when we have tools or underlying code that makes sense in multiple projects we’ll use that. When we need to do something platform specific, we’ll do that too.”

GarageGames also embraces cross-platform in the true sense of the industry, not Microsoft’s definition, but that does not diminish Williams’ opinion of the kind of reach studios and developers can have with XNA. He says, “Now, Torque itself runs on multiple platforms-Windows, OS X, Xbox, and more to come. If you use Torque technologies, you can build games for a great variety of platforms. And Torque X runs anywhere XNA does. I think truly cross-platform development is important to the industry as a whole, and I respect and admire what other game platforms are doing, but being Microsoft cross-platform isn’t a bad thing in and of itself-you’re talking about tens of millions of gamers, and growing rapidly, as your potential audience on those platforms.”

Nitschke sees this more as a Microsoft problem than an XNA problem. “Microsoft wants to push their Windows platform with the .NET Framework and have not thought about cross-platform development before. The XNA team can’t solve this problem. It would be possible to create .NET games on the Macintosh and Linux and probably also on all the consoles (except for handhelds not supporting the Compact Framework) thanks to the Mono project, but it will be hard to convince Microsoft to go into that direction because they want their own platforms to succeed.”

And speaking of Microsoft’s own platforms, I asked Dave Mitchell about Microsoft’s third gaming platform: Windows Mobile. Will we ever see XNA support for .NET Compact Framework applications? His reply leaves us hanging dry. “We don’t have any announcements about Windows Mobile at this time. I can tell you that we are always looking for innovative ways to connect devices and platforms.” Translation: No. In all fairness, 3D graphics in XNA tap directly into the GPU with HLSL, and Windows Mobile devices simply do not feature 3D acceleration hardware, which means that any XNA implementation would be mostly software-based, like the current Direct3D Mobile (D3DM), and therefore very slow and ill-suited for real-time gaming.

No XNA Love for Visual Basic Developers (Yet)

Microsoft’s flagship .NET languages have always been Visual Basic and C# ever since .NET was announced in 2000, yet XNA Game Studio Express only supports C#. Many VB developers felt abandoned as they, too, would like to extend their .NET knowledge to game development. While it is technically possible to use XNA with Visual Basic for Windows game development, it is not officially supported and all the IDE features of XNA game Studio Express, like the Content Processing Pipeline tools for example, would be inaccessible. The question remains, however, as to whether or not it would be wise for Microsoft to add VB support in XNA to attract more developers from outside the gaming industry. On one hand, it would drive a faster XNA adoption, but on the other hand it might make XNA look less serious to professional game developers. After all, they already consider C# inferior to C++, so what will they think about Visual Basic?

Benjamin Nitschke: “Good graphics today are shader-based anyway, and it won’t matter if you use native or managed code-the shaders are written and executed in the same way.

Fristrom indeed does not think it would be a good idea on Microsoft’s part to support VB with XNA, commenting, “I’m going to say no, not because it looks less serious, but because that would split their user base into two camps that would have trouble communicating. Right now they can all share code with each other and they’re doing that and it’s pretty cool. Also, Microsoft would have to write all their samples twice. So the question becomes, `Why didn’t they go with VB.NET in the first place?’ And [in my opinion] C# is just a better language for games development.” Although he admits that he hasn’t used VB in over a decade.

So will we ever see official VB support from Microsoft in XNA Game Studio? Mitchell says, “Absolutely! Support for VB is definitely on the feature list. This is another case of when rather than if.” As for the “when” part, all hints seem to indicate that we will not see VB support until after the Professional Edition of XNA Game Studio ships. And even when that time comes, it will take a massive effort to port all the existing XNA samples and starter kits from C# to VB while still maintaining best practices.”

Third-Party Support for XNA

An early XNA adopter, GarageGames was formed in 1999 by four employees of Dynamix, including Dynamix co-founder Jeff Tunnell. They developed the Torque Game Engine, which was used in the Tribes series of games, and formed GarageGames with the broad and lofty goal of democratizing game development by (essentially) giving away the engine.

GarageGames have already announced and released a beta version of their Torque Game Engine for XNA, called Torque X.

Williams says that, as is the case at many other studios, coming from the AAA games industry and being died-in-the-wool C++ veterans at GarageGames, they were initially quite skeptical about the viability of a managed code game technology platform. “Until we took a serious look at XNA and managed code we had not considered doing a game (or even an engine!) in managed code. Like everyone else in the industry, we were unsure whether managed code could be efficient enough for the games we wanted to make. We approached the project with a good deal of skepticism and did a lot of analysis as to what the shortcomings were and how we would tackle them. However, after we actually did the analysis, we realized managed code and XNA could be a great development platform.”

Dave Mitchell: “Game Studio Express’ design is such that it allows you to focus on elements of your game that make it unique and fun. Leave the core technology problems to us and the XNA Framework.

It seems that no amount of talking, media attention or ink being printed on XNA will easily change things. Studios and developers will have to take a serious look at it and evaluate it hands-on to fully realize XNA’s potential. Williams went through that process and that’s how they were convinced at GarageGames. He explains, “We dug in and looked at the hard technical problems. We realized there were actually a bunch of advantages to using managed code in game development, and got excited, deciding to jump full-in and do a port of Torque to XNA, in parallel to our existing native code C++ Torque engines.”

Like any other software industry, the gaming industry hosts a thriving community of software vendors, ISVs, and service providers. Many of them will typically support the technology base that is high in demand by studios, while others can be trend-setters themselves who take the lead in pioneering new technologies. From game frameworks to game engines, server tools to physics engine and more, XNA will have to crack that ecosystem of gaming ISVs to be truly successful since Microsoft cannot provide the full A-Z spectrum on its own. Will other software vendors follow GarageGames’ lead in supporting XNA?

Mitchell is confident more will follow, saying “GarageGames is a great example of a partner who wanted to jump on board because they saw an opportunity to extend a version of their tools to a whole new and growing user base. GarageGames is a terrific technology partner and we enjoy working closely with them to bring better tools and technologies for game development to the masses. Torque X brings a robust game engine platform to the XNA Framework and, along with Torque Game Builder for Torque X, our mutual customers can build very rich and visually appealing games for Windows and Xbox 360 using drag-n-drop tools. Our partnership still has many more fruit to bear and with the recently announced licensing agreement with GarageGames, all of our XNA Creators Club members will have access to Torque X as well as Torque Game Builder for Torque X for free while their subscriptions are active.”

Koster is not so confident, stating, “Most of the higher-end engines probably will not follow suit unless they see a viable business model for them to do so. GarageGames has an indie bent to start with, and the others don’t so much.”

Mitchell explains how Microsoft has been proactive in securing these partnerships with software vendors, and apparently the best is yet to come.

“While we've been working with GarageGames, we've also been working closely with a number of other partnerships. Autodesk remains a great partner and provides us with our standard file format (FBX) which our XNA Content Pipeline automatically consumes. We're also working with Allegorithmic on versions of their Map Zone texture editing tools which enables the community to build incredibly rich textures to use within their games. Turbo Squid has been providing our community with XNA Game Studio Express-ready 3D content, and we've also got great things in store from our partner Avid, makers of the Softimage line of 3D content creation tools. Beyond those, we're also actively working with other tools and middleware partners who want to provide community game developers with more options for easier game development based on XNA Game Studio Express but cannot share any details just yet. Rest assured, however, there are many more great partnerships in store for our customers. We’ll have more to share later this year.”

To that end, a public Q&A session with XNA Evangelist Dave Weller at the only XNA session presented at the last Microsoft Tech·Ed in Orlando (June 2007) points to Microsoft’s GameFest conference on August 13-14. Whenever he was asked by the audience about this missing format or that missing tool in XNA, Dave clearly hinted that announcements would be made regarding new partnerships and new XNA tools for game developers.

But beyond the initial offering of XNA partnerships, Fristrom is a bit more cautious as to the third-party vendor adoption rate, stating “Most vendors will wait-and-see.”

Commercial XNA Games

Torpex Games and Microsoft announced earlier this year that Schizoid will be the first XNA game to be released commercially for Xbox LIVE Arcade (XBLA) on the Xbox 360. This marks a major milestone in the young lifetime of XNA, especially considering how Microsoft has not even disclosed and let alone shipped its professional edition of XNA Game Studio. But is this a marketing stunt, a fluke where Torpex had a stroke of luck, or are we seeing the beginning of a new trend of commercial games built with managed code? Fristrom sees a new trend where more XNA games will enter the market as full-fledged entrants, competing alongside the big boys like Electronic Arts and Ubisoft.

Josh Williams: “I really just care about how much fun I’m having when I’m playing. I really don’t give a s*** about how realistic my character’s eyebrows look.

Williams agrees, and offers a piece of advice to other prospective developers. “[Schizoid] is certainly not a fluke. Microsoft is putting a lot of effort into this initiative and will no doubt support the development of commercial games using XNA (developers take note!)” he says, and even extends an invitation to the indie game developer community. “Create a quality game and send it in to talk with us about! We love indie games, whether they’re on Torque, Torque X, or some other technology. We will give Torque X and XNA games the same consideration as any other game.”

Mitchell discloses a bit more about how the Schizoid deal came to be, saying, “The portfolio managers in Xbox LIVE Arcade evaluated a prototype of Schizoid and felt it lived up to the platform’s standards. The folks at Torpex decided to make their game using XNA Game Studio Express.”

Mitchell continues, “A key benefit of XNA Game Studio Express is greatly increased productivity. Many of the benefits in our enthusiast offering translate very well to professional scenarios. [CEO] Bill Dugan and his studio, Torpex Games, are great examples of why even accomplished veterans in the video game industry are turning to using XNA Game Studio Express today as the tools and technology to build their next shipping title on. Using XNA Game Studio Express, Bill and his team are able to iterate on design ideas much more rapidly than ever before in the development of their upcoming Xbox LIVE Arcade title: Schizoid. Their first game prototype was up and running in just four days and within a couple months, they sailed through the Xbox LIVE Arcade portfolio team review and received a green light.”

Williams also stated that GarageGames is considering doing some full release games on Torque X and XNA. He adds, “Having been in the trenches with this stuff for over a year now, we believe more game developers will start coming to this realization over time. We will continue to support C++-based game engines and technologies for the foreseeable future, but we see XNA and managed code-based technologies as a bright prospect for more efficient game development across the board.” He also adds, “We are indeed considering this, and like any game project technology decision, we’ll weigh all aspects of a solution in making such decisions. We’ll look at performance issues, art pipeline support, developer talent pool, available tools, and the like. Obviously, we’re very optimistic on XNA prospects for use in full production games!”

However, while XNA Game Studio express may allow you to code and iterate on your game faster, it won’t provide any shortcuts when it comes to the Xbox LIVE Arcade certification process. Mitchell confirmed this saying, “The submission process for Xbox LIVE Arcade games is universal no matter what tools you are using to develop.”

Fristrom can vouch to that, having been through the Xbox LIVE Arcade certification himself. “It is the same as with any XBLA game. We don’t get any special exemptions. Which is a little scary, because we’re waiting on a feature or two from the XNA team to pass the requirements that aren’t even done yet.” Fristrom then added. “The initial idea came from the XBLA guy we first showed Schizoid to. We expected we’d have to rewrite it in C++ to get it on XBLA. He said to talk to the XNA guys and maybe we could work something out.”

Dave Mitchell: “Most of the major studios have all inquired about our XNA roadmap and when the professional technologies will be in place.

But XNA only supports Xbox 360 and Windows as target platforms, making the offering less interesting for developers and studios targeting other consoles like the Sony PlayStation 2 or 3, the Nintendo Wii, or portable gaming handhelds like the PlayStation Portable (PSP) and Nintendo DS. The same goes for games destined to run on other computer operating systems like Linux or Mac OS X.

Some, like Fristrom, still see the upside: “Although currently we’re using C# and XNA for Schizoid, we’ll port it to C++ and different SDKs for other platforms. Eventually it would be nice to have a unified SDK but right now the best thing for us is to target one platform as efficiently as possible.”

Terrano also believes in a new trend of XNA games that will spearhead game development initiatives centered on innovation, saying, “I hope the systems aren’t seen just as venues for casual and retro titles-the area that we think holds most promise is for high quality ‘smaller slices’ of full games. Publishers know that innovation is needed, all gamers (not just casual) want a complete experience that fits in around their lifestyle, and everyone wants to see something that takes full advantage of their system. We call these Premium Casual experiences-Premium refers to the quality of the experience and Casual describes a short time commitment and low investment in learning controls. While the AAA games will put more polish on existing franchises, big movie licenses, and tried-and-true gameplay formulas, the most exciting development space is going to be in downloadable [games]. We’ll have more freedom to innovate, niche audiences can be profitable, and we’ll be able to introduce new aesthetic and game play experiences.”

Fristrom sees potential in the XNA platform and plans to use it for future commercial projects, and so does Austin. As for other developers eager to publish their commercial XNA games for XBLA and the Xbox 360, Fristrom offers this piece of advice: “I see a lot of developers get sidetracked into engine development and speculative generality. They start making a game, and then they think they should make sure the code’s general enough so they can just push a button to make the next game, and before you know it they’ve spent a year developing this uber-technology but they don’t have a game yet.”

XNA Adoption by Professional Game Studios

The question on most people’s minds is whether we’ll see full-blown commercial XNA games sold at retail for the Xbox 360 in the foreseeable future. Can XNA really crack the console nut? Fristrom thinks so, but is not sure when that will happen.

Dave Mitchell: “The more people we can get excited about our industry and pursue careers as game developers, content creators, audio engineers, etc., the better.

When asked if other studios will follow the XNA path, Mitchell says many are already considering it, telling us, “There are quite a few well established studios and even individuals who have left such studios to form their own indie game studio who are strongly considering XNA Game Studio Express and more appropriately, the professional offering for developing their games. Torpex Games is one such studio comprised of former leads in Activision’s Treyarch Studios.” He adds, “Most of the major studios have all inquired about our XNA roadmap and when the professional technologies will be in place for them to further evaluate.”

Nitschke did not name any names in terms of game studios adopting XNA, but he sees a lot of interest himself, saying “I receive many e-mails per week of people asking me about XNA, both beginners and experts, and the answer is always the same: Just try it. You will be amazed.”

Williams knows what awaits professional studios who want to adopt or migrate to XNA, based on his team’s experience with porting Torque to XNA. He warns, “One of the biggest challenges we faced was conforming to standards that .NET developers are used to. We have our own coding practices and standards that are common both within our community and in C++ development in general, and we had to make some changes. Most of the programmers working on Torque X had some experience working with C# and .NET prior to working on the project but not to the extent of creating an entire game engine. So it was a learning process for everyone.” He adds, “Additionally, a lot of work was put into understanding how the XNA Framework's garbage collection would work, and designing optimally performant subsystems to deal with that.”

Microsoft has become well known for eating its own dog food, where employees are required to use Microsoft products to help drive quality and understand the issues users face every day. If Microsoft pushes a new set of tools and technologies for game development, then are Microsoft-owned studios like Bungie Studios (Halo series), Rare Ltd. (Viva Piñata, Perfect Dark Zero, Kameo) or Lionhead Studios (Fable) eating the XNA dog food too? I asked Dave Mitchell what has been their feedback regarding XNA and if they are interested in using XNA for future games. Mitchell did not have any definitive answers, but says the response so far is positive.

“There’s absolutely plenty of interest internally from a number of MGS [Microsoft Game Studios] game teams around the XNA Framework. Much like external 3rd-party studios, several of our MGS teams are playing around with XNA Game Studio Express and assessing its capabilities. Of those who have spent some time with it, we’ve received a good deal of positive feedback and in many cases, they were quite amazed with the ease and speed at which they could get simple game prototypes up and running. For our XNA Game Studio Express launch event in the UK, several members of the Rare Ltd. team created sample games in their spare time over the course of two weeks.”

Koster thinks Microsoft should carefully choose where they push XNA to drive adoption by other major studios. “Well, I guess to some degree I question the premise. If it truly is a better solution, then sell it to the people who understand that it is a better solution. They’ll then prove it. Selling it to folks who don’t want it doesn’t make sense. You have to make people want it, and that only comes with proven success. The first XNA hit, or hit where XNA was clearly a factor in the success, will silence doubters.”

Professional Games and Development Budgets: XNA to the Rescue?

Game development costs keep getting inflated to what some would consider ridiculous proportions. An average AAA game budget runs in the $10-20 million range nowadays, with some games, especially MMORPGs, going even higher. It remains to be seen whether managed code frameworks and technologies like XNA are the key to faster development turnarounds, and therefore, lowering development costs.

Josh Williams: “It’s more important that you learn how to program and solve problems in general than it is that you learn how to implement systems that handle memory leaks and dangling pointers in C++.

Mitchell thinks XNA can help, saying, “There are many efforts currently underway across all of XNA for our native as well as managed code solutions. Managed code frameworks specifically such as our XNA Framework can certainly help to contain the escalating costs for a growing number of commercial game scenarios. XNA Game Studio provides our developers with a new option that is tuned for maximizing productivity over maximum performance. For many games, this is a trade-off many developers are eager to embrace.”

But Austin does not equate high budgets to coding time, but still sees a platform like XNA as having a positive effect overall. “Most of the growing game development costs are in content not code at the moment, which managed code doesn’t particularly help. However, I think that XNA is suited to making preproduction much more efficient, which has a huge impact in avoiding production waste.”

Terrano agrees with his colleague when it comes to properly evaluating XNA’s ROI. “It is easy to lump all game development costs together. While the cost of AAA game development typically shoots up at each generation, there is a corresponding rise in the tools, middleware, and standards to help offset the costs. The difficult time is at the transition (2006-2008) and then things will get easier until we make the next jump. I look at XNA as a cost and risk reduction solution along these lines. As an industry we must make advances on cross-platform standards and middleware tools that just work better together. As we can rely more on the tools and established standards we can focus on making great content.”

Williams also sees problems beyond development costs, explaining, “Big budget games require big budgets for a number of reasons, and dev time is only one. As long as people are buying games, some of those games will be allocated huge teams and huge budgets in an attempt to make the next big thing. Similar to summer blockbusters of the movie industry, or stadium bands of the music world, big budget games aren't going to go away no matter how affordable game development becomes.”

Fristrom agrees with Williams that the budget problem does not lie in the time required to code the game. He even goes as far as blaming the gamers themselves, boldly stating, “What will keep budgets in check is if people stop buying games! There will always be a budget arms race where every publisher wants their game to be the biggest budget game that will still sell enough to be profitable, so everybody looks at what they expect to sell, calculates the money they’ll make off that, knocks off 20% so they get a decent ROI, and boom-there’s your budget. Better tech just means we can use that budget more efficiently.”

Josh Williams: “On a technical level, managed code isn’t a free ride.

However, Austin sees new platforms like XNA as a risky proposition for certain developers, studios, and publishers. “In a hit-driven industry where a majority of games lose money, mitigating risk becomes very important. It often makes more sense to stick with what has worked in the past and is familiar than to add another variable.”

Williams agrees with Austin, adding, “Since the size of a game's budget is typically proportional to how risk averse [game publishers] are likely to be, big budget games are often the least likely to adopt new technology or methodologies.”

Koster also sees benefits but warns, “In general, rapid iteration is the key. Whatever gets you the rapid iteration is what will work. And while managed code has some benefits, there are lots of approaches. I wouldn’t call it a silver bullet.”

Williams says, “What XNA can and will have a great deal of affect on, though, are small- to mid-budget games (and no-budget games!). Independent or smaller commercial studios should certainly look at XNA as a way to reduce development time and cost.”

XNA Game Studio Professional

Microsoft announced that XNA Game Studio Professional will be available later in 2007, but Mitchell remained tight-lipped about the feature set we can expect, only saying “We’ll be sharing details on the professional offerings based on the XNA Framework at our GameFest conference August 13-14. This offering is designed for commercial game development scenarios.”

Michael Austin: “The way to inspire passion and energy in students is to get up and running fast and make it as easy as possible to learn what it takes to have a complete game.

Fristrom has been alpha-testing the professional XNA offering and remains confident in the potential. “Schizoid is being developed on a version of XNA Game Studio Professional that’s still under development, and the sequel to Schizoid will use the same tech.”

As for the professional features developers can expect, Fristrom shares some of these highlights. “Network play is the main exciting thing. And it’s a pretty nice API-it has support for lobbying, host migration, guaranteed and unguaranteed packets, and managing game state. A lot of stuff you’d have to write yourself if you were using a plain vanilla TCP/IP stack. It also gives you everything you need to pass certification on the Xbox 360-achievements, leader boards, and integration with the Xbox dashboard, for example.”

Judging from the Microsoft GameFest 2007 session list advertized online (www.xnagamefest.com), it certainly appears like networking is in fact a new feature being added to the XNA Framework. Session titles also indicate that XNA Game Studio 2.0 is being announced there. It remains to be seen if 2.0 is only for the Professional Edition, or if XNA Game Studio Express will get upgraded to 2.0 as well.

Josh Williams: “Higher-level languages, and higher-level systems usually win in the end because developer time is more precious in the long-run than processor time.

Some of the highly requested features like built-in font support and Windows Vista support have already been shipped by the XNA team as part of the XNA Game Studio Express 1.0 Refresh that Microsoft released in April 2007. But our subject matter experts had a long wish list for the Professional Edition of XNA Game Studio, and the most requested features were:

  • Network play on the Xbox 360 and Xbox LIVE integration accessible to developers
  • Better sound API or access to low-level sound devices, maybe even to the DVD
  • Support for current and future versions of Visual Studio
  • Easier multicore and multithreading support
  • An instrumenting profiler for the Xbox 360
  • More features to the art pipeline tools
  • Fristrom also asks “Can they make a change to the C# spec? I wish members defaulted to ‘public’ -data hiding is for languages that don’t have properties.”

Fristrom even jokes, asking for “support for PS3 and Wii. (Maybe right after Microsoft acquires Sony and Nintendo.)”

Williams hopes Microsoft has been taking notes because he sees a lot riding on XNA Game Studio Professional and the community tools that will follow. “The viability of XNA and managed code in the commercial realm will depend heavily on how they implement XNA Game Studio Professional, the community features, and the marketplace.”

XNA: The Future

XNA Game Studio 2.0 seems to be just around the corner, but for now, Mitchell wants to get as many game developers as possible to try XNA, saying, “If you’re a professional game developer and haven’t downloaded and played with XNA Game Studio Express, I strongly encourage you to do so. We’d love to gather even more feedback as to what you like, don’t like or would like to see changed in the professional offerings we’ll be delivering soon for commercial game development. XNA Game Studio Express is the foundation upon which we’re building those professional components so it’s absolutely a great way to get a preview of the capabilities and performance characteristics of what we’re building.”

Jamie Fristrom: “Happy programmers are productive programmers.

Fristrom is optimistic about XNA’s future and thinks Microsoft is on the right track. “XNA can help Microsoft continue to take over the world. All the programmers I know got their start making games for fun whether they ended up on Wall Street or in the game industry or what. Today’s generation of games-makers is tomorrow’s generation of programmers, and if they’re downloading XNA instead of GCC or PyGame to do their development in, that’s what they’re going to be comfortable with and want to use in the future.”

Nitschke wants Microsoft to stay the course but urges the XNA team to pick up the pace and open more doors. “[If Microsoft allowed] XNA games to be marketed on Xbox LIVE Arcade it would also attract a lot of people to XNA and the Xbox 360 itself, which is a double win for Microsoft. I cannot see any reason to start developing games for the Wii or the PS3 [since] small game companies will have no chance of ever getting a big publisher deal without doing many smaller and mid-sized games first and building their way up. Microsoft is one step ahead!”

Austin is sold on C# and XNA and intends to keep using it at many levels at Hidden Path, saying “I’ve been thoroughly converted to making C# an integral part of our development process. Every non-game tool we use now is based around C#, and it’s been amazing how much it’s streamlined our pipelines. I even like it enough that when I am required to go use C++ in a tool (because of an external API), I find a way to wrap that API in managed code. I haven’t yet explored how well C++ and C# work together for direct console code, but I can envision us moving to a hybrid approach on Xbox 360/Windows exclusive games where we use C++ like we used to use assembler and use C# like we used to use C++.”

Terrano has high hopes. He wants gaming for the masses, for gamers and non-gamers alike, and anything that can help achieve that is a good thing. “Games are my passion. There is no medium in history that has had the potential to change hearts and minds, to teach and influence and connect as games have today. Games can communicate across race, nation, and ideological boundaries-to truly connect people in new ways and deliver new experiences never possible before. We are just touching the surface of where we can go with gaming and delivering that educational or entertainment experience to our audiences. Anything that makes the creation experience easier, more fun, or accessible to more people is a great thing-I’m all for it.”

Benjamin Nitschke: “Do you know anyone still doing pure assembler programming? Probably not and in 10 years you will find it hard to find pure C++ programmers too.

Just like .NET has allowed enterprise developers to spend less time on application “plumbing” and more time coding their business logic, XNA brings that paradigm to game developers. Austin concludes, “XNA does a great job of letting the game developer work on the part of the game that is entertaining. Great tools open up lots of new and exciting options, but it is still up to the creative developer to make something fun.”