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.(Figure 1).”++.”
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. 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!”.”
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.” 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 (). 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.”.”
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.”.
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.” 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!”, MySpace and co..”
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.”.”
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.” 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:
- 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!
- 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.”
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.”
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.”.”
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. ‘smaller.
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.” 3rd.
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.”% 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.” 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 advertized.
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.)”.”
Jamie Fristrom: “Happy programmers are productive programmers..”
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.”