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 (see 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: This dungeon crawler game was 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
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."
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 (see 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 Starter Game: Microsoft provides this free XNA Game Starter Kit 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 to offer 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 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."