OXM vs. XNA
XNA Game Studio empowers anyone to make their own game for Xbox 360. Does that include stupid people, like game-magazine editors?
XNA Game Studio represents the impossible dream: A way for anyone to create a game for the Xbox 360. In the past, console development has been the realm of a select few, thanks to expensive tools, arcane knowledge, and a business minefield. But XNA nullifies all those woes — the tools are free, the knowledge is there for the taking, and Microsoft is actively interested in selling XNA-developed games and splitting the profits. So what’s to stop you? Better still, what’s to stop us? We decided that OXM should make its own game. We’re going to do it in secret and we’re gonna shock the world.
The first step was choosing what kind of game to make. We kicked around ideas like an OXM RPG starring cartoon versions of the staffers, and someone suggested a 3D first-person shooter. These concepts were ultimately rejected as “too lofty” — we just don’t believe in our skills enough to commit to making something that deep or technologically advanced and still produce the magazine, website, disc, and podcasts at the same time. “Scale it back,” someone said, and expectations lowered accordingly.
How low? We’re going to try to make colors appear on the screen. A friend once jokingly pitched a game called Red/Blue, where all the player had to do was identify which color was on the screen. The boss level, he said, would show yellow, and the player would panic. Good enough for us. (And don’t laugh — that friend now works at BioWare.) And if for some reason the rudiments of Red/Blue come together fast, we’ll advance the project to its second stage, a rip-off re-imagination of the classic Milton-Bradley memory game Simon. The 360 controller features four colored buttons on its face; it’s a natural fit, right? And even to do that simple task, we’ll need to program in player interaction, pacing, screen text…these baby steps could be awfully big.
1,000 Entry Points of Fright
We can’t get started without the right tools. First, we joined the XNA Creators Club via Xbox Live Marketplace or at http://creators.xna.com — $49 for four months or $99/year. Club membership lets you download and rate anyone else’s creation; it’s like a big swap meet for game programmers, full of inspirational ideas and playable samples.
Everything else required to make a game is free for the taking at http://creators.xna.com/en-US/downloads. Visual C# is the programming language upon which all XNA games are built; if you have experience with C++ or Visual Basic, some of the concepts will be the same. We don’t, but luckily, there’s a big “Getting Started” box on the C# menu, with links called “How Do I…” and other non-threateningly titled intros. Inside are tutorials on everything — the Visual C# interface, terminology, a primer on the programming language itself, the works. It’s like they knew we were coming…and that we’d be stupid, too.

We also found a lot of helpful info and warm, fuzzy welcomes at http://forums.xna.com, so we trolled those while downloading the rest of the tools. Sure enough, we spotted a crucial question in the “Help! I’m New!” topic: “I know what XNA is, I have everything installed, but have never programmed before, do I need to know that? How do I get started?” Answer: Learn to program, kid. “Take a couple of weeks to learn C#,” says George Clingerman, webmaster of XNADevelopment.com and a Microsoft MVP in the XNA community. “You don’t need to become an expert, but having a basic grasp of how to use C#, separate from the XNA framework, [will] do wonders for how fast you catch on.”
Gifted Children
Sure enough, the thread (which George started) offered dozens of links to newbie tools. We downloaded Jöran Omark’s videos from XNATutorial.com and poked around XNA101.net — both were built with newbies in mind. We also ordered three books, which totaled about $75 and more than 1,800 pages of dead-tree instruction, but we were still scared. So we snagged the free C# for Sharp Kids e-book from the Kid’s Corner at the Microsoft Developer Network (http://tinyurl.com/csharpkids) just to be safe. Though it wasn’t created as a gaming primer, it was by far the most helpful introduction to Visual C#, simply because it assumes no prior knowledge and defines every term explicitly as it goes, with simple analogies and even a few cartoons. Hey, we’re not trying to impress anybody — we just want to learn how to make games.

After several hours of instructions from as many sources as we could stand, we realized we just wanted to start, you know, doing something. We started a new Xbox 360 game project and found half our work was done for us — the default template comes with several basic elements called out and pre-built, including painting the screen cornflower blue. All we need to do now is figure out how to occasionally change it to red and we’re done, right?
Control Freaks
Next, we dove into a tutorial on the Microsoft Developer Network called “Your First Game: Microsoft XNA Game Studio in 2D” (http://tinyurl.com/firstxnagame). That matches what we want to do; just making 2D images appear on the screen would be a victory. With the magic of cut-and-paste, it took us only about 10 minutes to follow and replicate the tutorial. We took a photo of our office-door nameplate and made it appear on a retail 360, floating around like a screensaver — and you would have thought we’d moved mountains. It felt awesome just to see something we created running on the same machine that we use to play Mass Effect. Very, *very* distant cousins, but undeniably the same family tree!

The problem is that we cut-and-pasted that code — a fine way to get instant results, but little to no comprehension came with it. We have only a vague idea of what lines of code like “spritePosition.X = MaxX” mean, and by skimming and skipping between our various books or tutorials, we haven’t actually acquired enough knowledge to figure out, say, how to bring the controller into this, so that’s our next step.
Luckily, Microsoft expected 360 programmers to want to use things like the gamepad, so support for the controller is already built-in at the start of any new XNA Game Studio project. GamePadTriggers, GamePadThumbSticks, and other logically named parts. We don’t even need joystick input; we just want the X and B buttons to work, to signify blue and red. We want GamePadButtons. But it’s really not that easy; there are terms like TimeSpan, Update, keyState, and other strange stuff to deal with. Even when we look at the controls section of the Spacewar sample game — a complete 360 executable that comes free with the XNA Game Studio 2.0 — it’s not something we can cut-and-paste into our project. We knew what to look for, but we didn’t really know what we were looking at.

It was about then that we realized the one key problem that kept staring us back in the face on this project: We really don’t know what we’re doing, and we’re not going to figure it out fast enough. It was time to admit defeat.
What We Learned
Many game developers hold post-mortems to evaluate their projects after they’re done. So why did we fail? We killed this project ourselves through procrastination, distraction, and not enough human interaction. Everything we needed was there; we just went about it all wrong.
First and foremost, we went in without enough information or time to yield realistic results. If you’re undereducated about C#, slapping together a game — even a simple one — is impossible. Meanwhile, if you know what you’re doing, building something interactive seems very likely in a week, if not a weekend. We should have taken two or three months to prepare and learn C# properly, keeping gameplay ideas in mind as we went, rather than letting potential game features dictate our information gathering. There are tons of tutorials around — but you have to read them, not just skim them, to learn from them. Some guides, particularly the ones at xnadevelopment.com, are incredibly clear and logical…if you’re paying full attention. Trying to untangle all the code from the wrong angle — like focusing on the button commands while ignoring the rest of the commands about the input system — only made our job harder. Imagine performing surgery, but not recognizing any internal organs except the pancreas. No offense to the pancreas, but that’s hardly the most important one to know if you’re exploring the body with a scalpel for the first time.

Also, we procrastinated like crazy and found it hard to force ourselves to study C#. You simply can’t cram for a game-development project like a final exam; as a result, our article deadline was mortifying, not motivating. Our team turned into one person, and that person was distracted. Even two-person teams prove useful for keeping the project on track, not to mention sharing ideas and solving problems. Even if they don’t split the work evenly, friends working together really will make something like this better.
Worst of all, while we never even got as far as the Starter Kits available on the XNA Creators Club site, we totally ignored the best XNA resource of all: the community. “Game development can be tricky and you’re going to have questions,” says Clingerman. “Without knowing where to go for help, you’re going to get frustrated very quickly and give up. Knowing where you can go for help is probably the No. 1 step, and the Microsoft XNA forums are the best place for that.” By trying to do this project in secret, we cut ourselves out of that loop. XNA is brimming with programmers who are only too happy to share what they’ve learned.
Ultimately, we learned that we like playing games more than making them, but we’d still be willing to try again. If you think it’d be fun to make a game, you’re probably right — and if you think it wouldn’t be a miserable experience, you’re probably also right. The game-development process is really going to be whatever you make it; the motivation and preparation you bring to your XNA project will ultimately determine how rewarding you find it — whether you make an awesome game or not.
















