Diving into XNA, again

3 minutes read

Okay, I admit it, I'm a WoW junkie. I spend WAY too much time in WoW, and not enough time doing the things that actually matter. Well, until recently (hopefully the trend continues). I started diving back into XNA again. Only this time, I'm diving back into it from a 3d perspective, not the 2d route I have always gone before. But why the sudden change?

Two months ago or so, I sent out an idea to an internal XNA discussion list at Microsoft that a bunch of us "hobbyists" should get together every other week just to geek out and do some game development after work. People loved the idea, so a bunch of us have been getting together after work to write some code and show each other what we are doing. Perhaps the coolest part is that since we are doing it in the same building where the XNA team is based out of, several XNA team members have dropped by just to check out what's going on.

In fact, at the first get together, Mitch Walker and others dropped by. Mitch had an idea about doing a month-long game development contest. So, that game development contest just concluded last Tuesday night. Oh MAN, were there some AWESOME games that people worked on. Me, being a total and utter dork, did not have anything to show. Truth be told, I had been writing next to NO XNA code, so there was literally _nothing_ to show. However, seeing some of these great games that were done, I figured it was about time to get back into it again. With how supportive this "user group" (of sorts) has turned out, I look forward to actually participating for a change.

So I'm back diving into XNA again. Instead of doing the usual 2d programming that I've always done in XNA, I figured it was about time for me to get involved in the 3d world. The game I'm going to do uses all the art assets from Spacewars and is going to be a vertical-scrolling shooter (like Ikaruga). Tonight, I decided it was about time to start prototyping the controls out and to make sure I could figure out how to display a 3d model (and show it from the top down).

Here's what the Shox Tonera prototype looks like after this evening:

I know that's not the best resolution, but you can at least see the ship (sort of). When you go left or right, the ship "rolls" to that side. When you go forward or backward, the ship "pitches" towards the direction. This is actually quite easy because the ship is technically in 3d. While the screenshot looks like a 2d game, it's actual 3d with the camera up in the air pointed straight down.

Also, you can see that the playing field is just the middle. I got bounding working so that the ship cannot leave the playing area. That was actually not too hard to do (easier than I thought it would be). I'm using the View and Project matrices to "project" the ship's position in the World into the actual screen coordinates. Then I can used the projected screen coordinates to ensure that the ship will not leave the area the playing area contains.

For those that are familiar with the Spacewars starter kit, I am just reusing the art assets from that in my own game. I will continue to do this for as long as possible. It definitely saves time.

The next thing I would like to do is to create the firing action of the ship using Point Sprits for the visuals. Hopefully either tomorrow night or this weekend I will get around to that. I would also like to do some refactoring to clean up the code. Tonight, I just threw it all in the game class for now to see if I could get it working (quite the departure from my usual behavior as any of my friends can attest to). I just need to be very careful not to get too wrapped up in refactoring and architecture like I usually do, because then I won't make _any_ progress on the game.

So why "Shox Tonera" for the name? Because I'm an unoriginal bastard, that's why. "Shox Tonera" is simply the letters from "XNA Shooter" scrambled up. I personally felt it sounded kind of cool too, so if you disagree, I don't want to hear about it :P.


Leave a Comment