Category Archives: My XNA Game

Game Design Document

So far my design document consists of two pages. Writing this made me realize that it’s pretty difficult to convey a game concept with just words. I wrote down the game concept, the art style I’d like to achieve, the game modes and my influences for the design. For this puzzle game I would say my biggest influences are Picross, Tetris and Quarth. You get as much out of the design document as you put in and so far I think what I’ve got is enough to get me started.

Another approach I’m going to be trying is to draw out the game components onto flash cards. I’d like to see if I can get a mock-up of the game going on paper for someone to actually play out/solve. On the implementation side I’ve set up a Subversion source control repository and installed the new XNA 3.1 which was just released.


Particle System Implemented

I finally finished implementing a particle engine that moves, adds, and removes particles to create explosions. I used an HLSL effect file to set the size and colours of the vertices.

The spaceships now have procedurally generated rainbow explosions!

High Level Shader Language

I’ve barely scratched the surface of HLSL. It’s pretty confusing stuff to dive into. I did manage to pick up on some of the syntax, semantics and functions to program my first vertex and pixel shaders. Vertex shaders are executed once per visible vertex in the scene. Similarly, pixel shaders are executed once for each pixel drawn.

I never really knew what shader programming was until now. I think I now understand why companies might have a person dedicated to programming shaders on the team. HLSL is a very powerful language for making full use of a wide range of capabilities for the latest graphics cards. In short, learning HLSL is a bag of hurt, but it makes things pretty.

XNA Resources

If you’re a univerisity student at Simon Fraser, there’s a ton of XNA material available to you for free in the library. Just searching XNA in the online catalogue yeilds these results. Notice that the first 3 books “Zune Game Development using XNA 3.0”, “Learning XNA 3.0” and “Microsoft XNA Game Studio 3.o Unleashed” are available for online access. Another good source for learning XNA are the XNA Community forums. It was really helpful for when I was dealing with issues I had with exporting Blender models to XNA.

Still Learning…

I’ve been following some of the tutorials in Learning XNA 3.0 by Arron Reed. The book has been really great for getting me up to speed and learning 3D game development on XNA. I was able to create this demo using my own models created from Blender:

The video is recorded using a trial version for Fraps. Besides being able to record video from a videogame souce, it can also be used for benchmarking purposes with the statistics saved to file. I’ll likely purchase the software unless someone recommends something better to use. In the demo I slightly modified my previous spaceship model to look a bit better and loaded several of them to fly through space. I also created a first person camera to shoot spheres and implemented some basic collision detection using bounding spheres to determine whether or not objects have collided.

Currently there’s no texturing, I should probably look into that later on. Right now I want to try learning more about the HLSL (High Level Shader Language) used in XNA and implementing a particle system. After that I think I’m ready to actually begin work on my intended XNA game.

The world and all objects move and rotate around Chuck Norris…

I just finished implementing a 3D flying camera that moves forward, backward, side to side and rotates in yaw, pitch and roll. I did a similar thing on my Wii Will ROAM project (except without the ability to roll the camera). It’s great for debugging purposes even if I don’t end up using all of the movements of the camera in my eventual game. It’s also very likely that I’ll be re-using this component for other projects and games so I’m glad I spent the time making the system robust.

So far my demo consists of moving my camera around the spaceship model I loaded:

XNA 3D Model

I’m currently exploring 3D collision detection and making my loaded spaceship model shoot stuff. I’ll upload a video once I have something cool going on.

Blendering Blunders

I’ve been spending a lot of time trying to export models from Blender into .X files. I thought it would be trivial, but there’s actually a lot of complications that aren’t obvious. For one, Blender has the up-axis as the Z-axis instead of it being the Y-axis (like in OpenGL and XNA). This will lead to problems when exporting your models, and will cause further complications when you do transformations in XNA. To alleviate this just re-orient your model so that the Y-axis is your up-axis.

When exporting to .X, make sure you apply all modifications and export in the right-handed coordinate system which is what XNA uses. If you don’t, Blender will silently fail when exporting to .X so you won’t know the file is incorrect until you try loading the file and to compound that problem XNA won’t tell you why it failed to load the file. Anyways I’m pretty happy I got that all sorted out.

Now back to programming…

Will it Blender?

Using Blender is pretty difficult! I feel like I have to rewire my brain to properly use it. I should probably avoid game designs that would require a lot of 3D modeling.

I’m currently attempting to make a spaceship in Blender to load up into my XNA demo. This is my first model created.

First Blender Model
I tried to make it resemble the Swordfish II from the anime Cowboy Bebop. You’ll see that beyond the shape outline, I wasn’t very close. I’ll add in some subsurfacing which will smooth out the model and hopefully make it a little nicer. I just need to export it to a .FBX file and it should be flying in my XNA demo in no time!

Game Plan

I decided to delve straight into 3D game development on the XNA. So far I really like what I see. XNA uses High Level Shader Language (HLSL) to draw all the 3D effects. As long as you have a good background of 3D programming you should be able to pick it up quickly. XNA also comes with Vector and Matrix classes which is nice.

My current plan is to spend the next few working days playing around with 3D game development on the XNA. It’ll be fun and a good way to test the waters. I’ll then start work on a game design document and go from there. I’ve already been kicking around some ideas, but have yet to formalize any of them into a document.

So far I’ve done some really basic stuff, draw a triangle, perform translations and rotations, apply a texture to a quad and create a camera game component. XNA can load 3D models such as .X and .FBX files. The great thing about this is that I’m taking an animation course this semester that will require the use Blender (of which I currently have no experience with). Thus learning Blender will be twofold, to do well in my course and to create models for use in XNA games. Sweeet.

Day 1

I’ve officially started work on my XNA game today. I’m still not sure how much work I plan on doing each day, but I’d like to to consider this a part-time job and treat it as such. I’ll be working on it Monday-Tuesday and Thursday-Friday (trying for 9am-5pm). Wednesday’s I have class at Simon Fraser University and will be at school for most of the day.

Work Environment

This is my work environment. It’s a small desk, but I have a pretty decent sized monitor (24 inches). I’m using Windows 7 RC, Visual Studio 2008 and of course XNA Game Studio 3.0. Everything is running on my laptop which is a Dell XPS 1210. I think the most important part of my work environment is having a good chair. It has tons of adjustment options and great back support. You’ll definitely need one, or likely suffer back problems later on. Mine was bought used at an office furniture store for $120. It sort of looks like Ergonomic Task Chair 5101 from Yaletown Office Furniture, but my arm handles have more adjustment features.

My bed is to the left, so I’ll have to fight the urge to go back to sleep every morning if I want to get stuff done.