Shmup Development (using XNA and C#)

Thursday, September 28, 2006

Stolen graphics and bullet patterns

I found some better graphics on the web which I temporary use in my game now, it's quite a difference when it actually looks like a game. I also added a gunshot sound when firing, it made it feel a lot cooler when shooting down those enemies.

Right now I'm working on a bullet pattern system which I think would be of good use in the development. I have looked at BulletML (Bullet Markup Language) which a guy called Kenta Cho have created. Only implementations in Java, C++ and D languages has been created, I'm using C# so I'm trying to create my own implementation of BulletML. It won't be exactly as BulletML, but pretty close (or better). It looks like it could work, it's very easy to create advanced bullet patterns with it.


Saturday, September 23, 2006

Absolutely core

I have created what I think is the absolutely core functionality for a shmup game.

I got objects that can be recycled, and in this type of game this is very important. Lots of different enemies spawn and then dissapear again (they exit view or die) after a few seconds. Also lots and lots of bullets will spawn and then dissapear again (when they hit something or can't be seen). Everytime a new enemy or bullet spawn I don't want to create a new instance, so I have created this "Factory" class to deal with this problem. I must say that it works pretty good.

Waypoint functionality have also been created. Every enemy can have a set of waypoints added, and then fly through all the points in order, smoothly and with curves. I used something called "CatmullRom" which operates on vectors. I just give this function four vectors and a "time" value between 0 and 1 and it calculates the new position for the enemy. Effective, and it is very easy to create new paths for enemies.

I have also created a very basic "Player" class that can be controlled with the keyboard. The player can also aim with the mouse and shoot in all directions. Very basic collision detection has also been implemented, so you can actually shoot the enemies that come flying and they will explode and die if they are hit!

I work with my project everytime I can and it's slowly progressing. The graphics are so lousy that you want to cry but I have created something that could very well look like a game. Of course not any game rules have been applied yet and there is no meny system or anything, but still... I got something to work with!

Wednesday, September 13, 2006

Shmup engine

Right now I'm building my Shmup engine, and it's a lot to think about. In the first couple of weeks of development I will definitely focus on the core functions. It's pretty important that it has good design from the beginning. I don't want myself in a position where I forgot a feature I wanted in the final game, and then realize it's impossible with the current design. Here are some core functionality I'm currently working on:

  • Enemy movement with smooth paths, waypoints and formations
  • Player movement, this game will feature 360 degree movement (only in 2D)
  • Adding/removing entities in the game world and collision detection
  • Flight path and movement for a stage
  • Triggers/actions/behaviors, when will enemies attack in formations?
  • How will the Shmup designer work, what will you be able to modify?
  • Configuration in XML (stages, paths, waypoints, formations, triggers, behaviors, enemies, weapons)
  • How will upgrades/powerups of weapons and player work?
This surely isn't all, but I must have something to work with.

Development has begun

A few weeks ago I started a project I have wanted to do for a long time. It's a shoot-em-up game (where you blow up everything that moves on the screen, lots of enemies, bullets everywhere and lots and lots of explosions and other cool effects). The game will feature 3D graphics but with 2D gameplay. I will use Microsoft newly (beta) released XNA Game Studio Express (with the C# programming language and XNA Framework).

I have tried some other projects before but failed most due to lost of interest and I can't promise I'll complete this one (it's a lot of work to really finish a game). But this time I have chosen a game type I really enjoy. Who knows, maybe this blog will help me in the progress. Good luck to me!