XNA Creators Club Online

community spotlights

Community Spotlight - Torpex Games, creators of Schizoid

This July saw the release of Schizoid, an Xbox LIVE Arcade title with a unique and addictive spin on co-op gameplay that challenges two players to work together – locally or on Xbox LIVE – to tag-team swarms of color-coded enemies in over 100 frantic levels.

But to those in the XNA Creators Club, Schizoid is unique for an entirely different reason – it is the first game created in XNA Game Studio to be made available on Xbox LIVE Arcade! Bill Dugan and Jamie Fristom of Torpex Games (www.torpexgames.com) – the group that made Schizoid, took a few minutes to answer our questions about this amazing feat.

Q: Thanks for joining us! The last time we heard from you was at last year’s Gamefest. Where were you then – what happened on Schizoid this past year?

Jamie Fristom – Programmer: We’ve been going through certification and optimization – getting through the Xbox 360 certification requirements.

Q: Let’s rewind a bit. Jamie – you created the initial prototype? Was it in XNA Game Studio?

Bill Dugan – Producer: He actually had the idea at Gamefest several years ago. He was sitting there, drinking coffee, and it came to him.

Jamie: I got the first prototype working with XNA Game Studio Express 1.0. It only took me a few hours. Within four days, I had something I could show to Bill.

Q: It wasn’t a co-op game yet, right?

Jamie: It was two controllable ships, but with just one controller. I showed it to Bill, and a day later I showed it to Richard Garfield [Designer of Magic: The Gathering]. He thought it’d be a great co-op game.

Bill: I think it took him two minutes of playing Schizoid to figure that out.

Q: Did everyone on the team eventually have a hand in tweaking the game mechanics?

Bill: Everybody did a little bit of everything. It wasn’t that assembly-line mentality like in larger studios where people just crank out textures or code.

Jamie: We definitely believe in rapid iteration.

Bill: A way to make a game good is to make a prototype, and then just start fixing the parts that don't work. Sometimes we needed to get together to talk more in-depth about issues.

Q: What kinds of issues did you need to get together and discuss?

Bill: Larger game structure issues, for instance, the campaign structure. Schizoid has 119 levels including a random level generator at the end. We started with the 119 levels in ten-level chunks. But it was way too hard, so we dropped it to 7. Still too difficult. Then, it was Richard who came up with the idea of being able to skip levels if you got through them once without losing any lives. It took care of so many problems. This took several months of discussion and experimentation and it was the last component of the whole game to get its design finished. We’re pretty proud of the result – it’s due to this campaign structure that the most exhilarating moments in Schizoid are when you get a gold medal on a difficult level.

Q: I've heard it from many teams that the hardest time is going from prototype to a working game engine. Was that true for Schizoid?

Jamie: I wouldn't say so. The hardest thing was getting it done, and optimization. The game itself - the engine that did everything - was pretty much present in our first month. It had multiple levels, different enemies, had the power-ups. It didn't have network play yet, but we knew that’d come later.

Q: How did you know when the right time was to show off the game to a wider audience?

Bill: The troubling thing about that question is that our artist, James Chao, is brilliant, and he came up with something beautiful right away - a very simple two-color motif with giant additive explosions. Four weeks from the first prototype and we knew we were ready to show it off.

Jamie: Well, there were still problems. If you look at Schizoid now, the walls in the game world look really cool; back then, we just had yellow rectangle walls, and we still showed it off. Looking back on it now, those yellow rectangle walls were hideous!

Bill: But we had the lobster enemies and the beautiful explosions. A lot of that stayed in. I think our smoke trails got better with time.

Q: As you worked on the game, you had to keep a high frame rate. What optimization tricks did you use?

Jamie: There is no good way to parallelize rendering - we had lots of sprites on the screen and they all had to go through the same bottleneck: the call to DrawSprite isn’t thread safe so we couldn't call it from multiple threads. So we did all the rendering on a single thread, and decided to use the other cores of the Xbox 360 to handle all the collision and update tasks.

We wrote a thread scheduler that let us take a delegate function: such as a function that'd move a game object around - and instead of running the function in a for loop over all of the game objects, you'd pass it to the thread scheduler and it'd parcel the task out to all the other threads that’d run on different pieces of the entire list. We kept a huge list of game entities, but we made sure not to loop over the whole thing in one thread for expensive operations.

There's a great load-time optimization you can get out of using texture sheets; the way XNA interacts with the Xbox 360, it's best to combine textures into a sheet so they can be sent faster to the Xbox. Definitely a load gain and some CPU gain.

One other thing we found – every time we drew a string to the screen with SpriteFont, it generated a unit of garbage, so that contributed to garbage collection. In the end, we took out a lot of the text. This is fixed in XNA Game Studio 2.0, we’re told.

Q: What about networking the game over Xbox LIVE? Was that originally a part of the plan? Was it difficult to implement?

Jamie: The network play was something we knew we wanted to do, but since people playing our prototype were going to be in the same room, we didn't want to focus on that right away. When it came time to implement, we decided to do the minimum we needed to get Schizoid running - of course, we did put in interpolation to keep movement smooth when there are dropped packets.

Bill: One thing that impressed me about the network play is that we were playing a lot after release with people in Europe – we’re here in Seattle playing with guys in Spain, England, Germany, and it was totally playable and totally fun, unlike what you’d expect with an action game. One trick that Jamie did was that your Xbox only keeps track of the enemies that can kill you, and the other Xbox tracks the enemies that can kill them. It's great, because the problem is in most games, when you lag, you die - but that won't happen with Schizoid because of this design. The worst that happens is that you miss destroying an enemy, but that’s a thousand times less irritating than dying unjustly.

Jamie: Yeah, I'm pretty proud of that!

Q: Now that you're here, with all the work done, what do you think of XNA Game Studio?

Jamie: It's been an adventure! If I had to do it again, I definitely would have started on XNA Game Studio – it gave us a faster head start for sure than we would have had using C++, though there was a cost in optimization time on the 360 toward the end. The generational garbage collection is much better on the PC than on the Xbox 360. There were definitely some hurdles.

Bill: But I think the XNA Game Studio initiative is really valuable. In the old days, with the Apple II’s like I started on, you would turn on the computer and get a BASIC language prompt – it was actually asking you to write code. We’ve needed something like that – something that helps people get interested in coding. We didn’t have anything for a while. Now, it’s better.

Schizoid is now available for download on Xbox LIVE Arcade.

Visit Torpex at http://www.torpexgames.com.

var gDomain='m.webtrends.com'; var gDcsId='dcschd84w10000w4lw9hcqmsz_8n3x'; var gTrackEvents=1; var gFpc='WT_FPC'; /*<\/scr"+"ipt>");} /*]]>*/
DCSIMG