Game Programming Tools
It's no secret that while managed languages such as 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++.
But what is less well known to industry outsiders is that for various reasons, game developers use a lot of different languages in their games. For instance, Raph Koster, President of Areae, tells us, "We're very much into rapid prototyping at Areae. Because of this we use a wide variety of languages—whatever gets the job done the fastest. Currently, we are using C++, Flash and Flex, PHP, Python, Lua, and even BlitzMax, which is a game development language aimed at indies and hobbyists. Basically, we use whatever gets us to working code the fastest so that we can try out concepts and iterate. Then we will replace that code with a more final solution chosen for speed or flexibility."
|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."|
Managed languages have, in fact, not been used much for any commercial console or computer games to date. There are a few exceptions says Dave Mitchell, Director of XNA Game Platform Marketing in the Game Developer Group at Microsoft. "There are actually quite a few examples of games developed using managed code for commercial purposes, but most of them tend to be for the casual games market. Managed code tends to be popular for developing games on popular gaming portals or mobile phones. Beyond those, [online virtual world] Second Life
is probably the best known commercial game that uses managed code (C#). What isn't well known, however, is that many commercial game studios use C# and .NET for their production pipeline and tools."
I encounter the same story everywhere. C++ is the common denominator, and is accompanied by several other scripting or custom languages. Flexibility is the key. Jamie Fristrom, Technical Director of Torpex Games, says, "We're fairly agnostic [at Torpex]—we'll use whatever the project demands. Usually that'll be C++—with Visual Studio for a Windows or Xbox game or SN Systems for a PlayStation game. But right now it's C# and XNA Game Studio for [our upcoming Xbox LIVE Arcade game] Schizoid (see Figure 1
|Figure 1. Schizoid: This release by Torpex Games will be the very first commercial XNA game title to be released for the Xbox 360 on Xbox LIVE Arcade.|
While Fristrom's studio Torpex Games recently started to adopt managed code for game development, it was just not an option they could consider until now. He says, "Getting away from C++ has, up until now, simply not been an option when doing console development, unless you want to write your own compiler—like the Naughty Dog guys did with their LISP compiler. Me, I'd rather write in C++ than write my own compiler. But I'd rather write in C# than C++."
Michael Austin, Chief Technology Officer of Hidden Path Entertainment, echoes Fristrom's comments. Most C++ developers are simply not interested in looking at managed languages, but it seems that trying C# is loving it. Austin explains, "We used C++ on most of our development projects in the past. We used C# to develop the Culture
technical demo (see Figure 2
) for Microsoft at last year's Game Developer Conference. Culture
is, on one hand, a casual game with flowers, butterflies, and easy controls, and on the other hand a high performance next-generation Xbox 360 title. Once I used C# to develop a procedural flower modeling tool, I was hooked—now we use C# for almost all of our tools and prototype games."
|Figure 2. Culture Demo: The Culture technical demo was developed by Hidden Path Entertainment for Microsoft and GDC 2006 using an early release of XNA.|
But when it comes to learning new languages, Austin does not think it's entirely tied to the language itself. "In the game industry there's barely time to slow down and take a week to go to GDC, or read the latest Game Developer
magazine, much less learn a new language or development paradigm." Mitchell agrees with Austin.
Benjamin Nitschke, Founder of exDream Entertainment, has however observed some irregular patterns that indicate that some changes are more welcome than others among game developers, commenting "We are talking about game developers here, it just takes a while. Give them a new graphic card and they will get crazy and develop the most creative new graphic shaders for them. But give them a new language and they will not adopt it that fast."
Game Development Methodologies
New programming languages are not the only thing that game developers are slow to adopt. The same goes for approaches that other software industries have embraced for years, such as agile methodologies or test-driven development. And judging from the number of talks on agile development at this year's GDC, agile methodologies has been gaining in popularity in recent years in the gaming industry. However, why this popularity increased is also an indicator as to what can be expected with the transition from native to managed code for game development: seeing is believing.
Josh Williams, CEO of GarageGames, says, "Many studios are waking up. In our development process [at GarageGames], for example, with [our new XNA game engine] Torque X, we utilized an agile methodology and were very test-driven. Part of the problem in many cases is that game development is often influenced either by an outside publisher who wants to see pretty art on the screen early on, big up-front designs (e.g., the massive design documents that are still commonplace in the industry), and often induce a more traditional waterfall-based development model. But that's fine; studios who use more efficient practices will start eating the other guys' lunch!"
|Dave Mitchell: "XNA Game Studio Express and the XNA Framework were started at the beginning of 2006 and officially released within a single calendar year."|
Koster also sees this change, but attributes the slowness in adopting new paradigms to other factors. He says, "I think this has changed already—agile development is pretty common these days in game shops. But there's little doubt that it took a while to sink in. I think some of the cause is cultural, of course; when I joined the industry 12 years ago, it wasn't unusual to hire whiz kid programmers straight out of high school. So there wasn't much of an engineering sort of approach."
Fristrom's past experiences taught him to be more cautious when new radical ideas show up at his doorstep. He explains, "Perhaps it's the sober wisdom of the game development industry that allows us to overlook fads? Agile
is a loaded term. I'm always in the market for silver bullets and better approaches, so I look into all these things and try them out, but I make sure to keep before-and-after metrics of things like bugs found and velocity attained—and am usually disappointed. Approaches we've kept, that are clear wins, include: staying away from design documents and waterfall; avoiding speculative generality; tracking our speed; and continuous integration with end-to-end builds. Approaches we've experimented with and abandoned because the benefits were not clearly obvious include mandatory code reviews and mandatory pair programming. And the court's still out for us on test-driven development: we've been using it for the duration of Schizoid
, and although it's clear that it slows us down in the short run it's not clear yet that we'll make it back in the long run."
|Michael Austin: "Once I used C# to develop a procedural flower modeling tool, I was hooked."|
But Mitchell thinks it simply took longer for the gaming industry to catch up in terms of maturity. He comments, "Until recently, team sizes were still relatively small and while agile or test-driven development would have benefited, it wasn't necessary. That landscape has been changing, however, with team sizes today surpassing 300 on specific game titles and budgets growing to movie production levels. The increased challenges and complexities this brings, not to mention significantly increased risk, means that game development teams will have to turn to more robust and predictable development methodologies."