Shmup Development (using XNA and C#)

Sunday, October 29, 2006

Waiting for the content pipeline

There is a very important component missing in the current beta of XNA, the content pipeline. This is the one that loads 3D models and I really need this to further develop my game. Lucky for me the beta 2 of XNA should be released "in a couple of weeks" (they say). It includes the content pipeline and I hope they have fixed the most important bugs.

It will be lots of fun to try it out, I need to know how many enemies/bullets can be onscreen at once. After the beta 2 has been released I will create a small playable demo which will show various bullet patterns and enemy pathways. Then I will be able to see what my little shmup engine is capable of. I don't think there will be any serious graphics at that point, I guess I'll have to borrow some 3D models that others have created.

Just waiting right now...

Wednesday, October 25, 2006

Configuration editor

I have been working on the configuration editor for a few days. It's a simple little tool for creating levels/formations/enemies/bullet patterns/etc... With it I can quickly test various configurations for my game. For example I can write a bullet pattern and then see it running live with just a button push. I can also write a whole level, and then drag the timeline back and forth (while the game is running) to jump directly to a certain frame.

For now I don't want to create a too advanced editor. This is a simple one, but very usable. No more in and out from Visual Studio when I want to test some patterns or enemy paths. I'll give this one more work, but right now it serves it's purpose: to speed up level creation for the game.

Tuesday, October 17, 2006

Rewritten and redesigned

The last weeks I have rewritten the whole thing, well not the WHOLE thing, but a lot. Of course I have copied much of the old design and code. I'm much more happy with the code now, It's a lot cleaner and the whole idea is based around "Behaviors".

A "Behavior" is a baseclass that all other behaviors inherit from. A behavior can describe how your ship is controlled, how the enemies fly and attack, how an powerup works and so on. I really like this system because it introduce so much freedom with the design. For example I could write a behavior that describes how a enemy should explode (sprites, particles, shockwaves...). If I'm happy with this explosion I could then apply it to my player ship as well very easy. All entities inherit from "Entity" which has a "Behaviors" property, this is a list so I can add how many behaviors I want. It's like baking a cake and have the flexibility to add any ingredients you want...

I have also created a configuration system which is very flexible. It simply is an xml file which can include a whole level (with enemy paths, graphics, behaviors...). If I decide to create a new behavior (let's say a new enemy bullet pattern) I can add this in the xml file and then tell the system how this behavior should be created from the xml node.

I think I have come up with a system that is flexible, and I kind of like that. I think the most used word in this post is "flexible"!