XNA: Makes Games Programming Easier, Not Easy.

January 29, 2009

This is in response to the article over at TechRadar.com entitled “How to code games for the PC and Xbox 360” by Paul Hudson (published in PC Format magazine). I’m all for the promotion of the XNA framework but TechRadar’s take on this is completely out of touch with reality. I’m still not convinced it’s not being intentionally sensational (the sub-heading does make a claim of “unlimited riches”) but since the article does seem to go into genuine detail, I’m going to give a genuine response.

To sum it up, the article claims that games programming is suddenly easy thanks to XNA and anybody who tells you otherwise, including those in industry, is a lying idiot. Now maybe you think I’m being sensational here, but in TechRadar’s own words:

We get asked this question a lot: “What’s the best way to start programming?” Some people like to buy books. Some people like to get a computer games programming degree. But they are – and we don’t want to put too fine a point on this – stupid.

The article goes on to say how you can make anything in XNA, mentioning Halo 3 as an example, and have it work on the 360 to boot.

What gets me is the author clearly has done a least a little cursory research in preparing this. He mentions the Xbox 360 having a “curious superset of shader model 3.0”. They don’t print that on the front page of creators.xna.com, so either the author actually does have some experience developing with XNA or else they’ve picked out some choice phrases from someone else who has the experience and is no doubt weeping softly in a corner after reading the resulting article.

Other infuriating excerpts:

[…] we’re not going to explain to you what every line of code does, because, quite frankly, it’s irrelevant. Don’t worry about debugging for now – a wise man once said that debugging is harder than coding, so if you write your code as cleverly as you possibly can, then you are – by definition – not smart enough to debug it.

The rest of the article goes on to explain how the sample “tutorial” project works, though it’s glossed over to the point where it’s not worth reading. There are so many other better resources out there for learning the basics of XNA, including ziggyware.com and the creators.xna.com website itself (and its forums).

So the article isn’t very helpful; what’s the big deal? There are three main problems:

1. It misrepresents games programming

Contrary to the article, games programming isn’t about stealing code from others, ignoring the debugger, and making the next Halo. It really is as hard as people say to make a AAA game, even with massive budgets and large teams. Comparing the ease of drawing a few sprites on screen with developing a modern real-time engine is a disservice to the industry.

2. It fails to promote XNA properly

How you can have an article devoted to XNA development and completely fail to mention the XNA community at creators.xna.com is baffling. I’ve mentioned it three times already. The article doesn’t even provide any sources of follow-up information for budding developers. The days of developing in a vacuum are long gone. If the intention is to “sell” XNA to readers, why not show them where to get more tutorials, projects, documentation, and community help?

3. It misrepresents XNA

XNA’s great. I love it. But it won’t make a game for you, nor should it. You can’t make a decent game without understanding how to code, nor would you be able to get it onto the Marketplace thanks to peer review. XNA is only a framework and as such, it can’t possibly have everything a budding game designer might want. Texture loading? Sure. Skeletal animation? Not so much.

I can look past the half-hearted jabs at the games industry, forgive the useless tutorial and the lack of any pointers to helpful resources. But I can’t look past encouraging enthusiastic newcomers to ignore learning how to code and making wild claims about the capabilities and ease of the XNA framework. That sort of advice is what sends kids (and adults) off to try it out only to get frustrated and give up once they hit their first roadblock. It can turn them off programming, much less game development, for years, if not forever. Teach them how to do things properly and give them access to they help they need (and they will need it).

Sorry lads. Games programming has gotten easier, but it ain’t easy.