Sunday, 26 February 2012

Power Up - The BUSCraft


As I'm now populating the Power-Up game with enemies, I thought I'd start my blog breaking down the enemy I've just put in.

I haven't decided what BUSCraft is short for yet. I called this baddie ship a bus because, well... it looks a bit like one.

Basically, as the player has a bit of an array of upgradeable weapons which fire in different directions, at different rates and at different levels of power, etc, I though it best that the design of the game encourage the player to use them all as evenly as possible for the best results (rather than just to power up the basic front firing lazer and buldose their way through the game with that... which the player could do if they wanted to, but would then find themselves pointlessly overly powerful against a frontal assault while desperately lacking and evasive against attacks from the top, bottom and rear..... you with me?


With that in mind, and having already thrown a few enemies at the front of the player, I decided to throw something at the back. After some thought, I went for three big, relatively heavily armoured tanks which would move in from the left, taking up quite a bit of screen while shooting random multi-directional projectiles and giving the player the time to wear the ships down and get megapoints for each kill..... provided, of course, that the player had suitably powered up their rear firing shot beforehand... See what I did there? ;)

After some 2D hand drawn tests, I realised quite quickly that the best approach was rendered 3d with plenty of 2D influence in the textures and in post production. This way I could get the subtle twists and turns that the vehicles would need to make when moving about, while not wasting precious hours drawing and re-drafing animation frames.

The BUSCraft model. I've kept it simple so as to make the most of the timescale I've given myself for the project. 

I chose to make basic 3D models, designing them as I go.
After the modelling, I found myself doing a quick render of the basic frames I thought I'd need. This would allow me to code a rough draft of the baddie's attack pattern into the game and would tell me how big the ship would need to be and at what angles it was to be seen at. In the case of the BUSCraft, it was to be really just the side view.

Here it is from the back. Notice that even in the spherical shapes, I've capped the detail to make life as easy as possible when texturing, bearing in mind that the whole vehicle won't appear in game at much more than 250x150 pixels in size.

This phase in the baddie's implementation lets me see what's working and what isn't. The main problem with three big ships entering the screen at the same time is making them look independent from one another. If they enter as one big block it's hard for the player to differenciate between them and it just looks, well, wrong. So what can I do about it?...

Well, first off, I can seperate the ships out and put a delay between their entrances. As a new, learning programmer this took some serious brain power on my part as I was no longer working within the constraints of what I had already learned, but soon I had three objects with slightly different timings, moving onto the screen with a delay between them. Here, they would stop for a while, then one by one, they would shift back to the left and out of play.

Rough-coding the BUSCraft into the game. Here I worked out the ship's size on screen, basic movements and any animations & effects needed to make this happen.

So far so good... But it still wasn't right. These are big floaty spaceships hanging in space and as such they needed to appear to float. Having done my fair share of Shockwave games, I'd figured out how to make a character jump, setting a height number then taking 1 off it for every frame of the game and making a character's height appear to arc. All I had to do was translate that process from Director Lingo into Xna/C#, then do a reversed version to make it arc back up, THEN loop the lot and... Voila! floaty big spaceships!

Next was the multi-directional firing. Using a variant of the player's shot effects I'd already done, I was able to make the big sphere in the middle of the bus light up and using a variant of the player's shoot code, I was able to put a projectile on the screen, making the BUSCraft's big central sphere the spawn point. As this was a multi-directional projectile, it would have to have images for every direction. A good time saving alternative to this, and something that's widely recognised in this genre as a baddie projectile is a glowing sphere. I'd kind of decided on this when desinging the BUSCraft.

Having put in the basics, I tried out adding projectiles, effects, and some dynamic movement to the BUSCraft baddies.

When designing my ships, I needed to come up with a means of doing things quickly so that I wasn't getting hung up on any one area of production. Nothing kills an indie game in-development like boredom does. My biggest concern was the texturing process. In my experience, one of the most time intensive art processes is the texturing of a model. By keeping the model simple I am able to do a quick printscreen of each side of the model and paint the texture straight on using gradients, layer effects and hand drawn elements. I can then UVW map/unwrap the texture straight back onto the model with a minimum of fuss.

Texturing the BUSCraft.

Having all of the game's ship models saved into one 3D scene with a camera and lighting rig already set up also helps for consistency when I blast out the renders I need. For Power Up I generally render in 800x600 pngs so there's no background colour to pull out when I put the animations together. As the renders are much bigger than needed, I get plenty of leighway when reducing the sprites to the game's sprite sheets. Having drawn the booster effects on, I then import the sprite steets into the game and give it all a little test.

The fully textured BUSCraft: Notice that there's very little detail on the front and back of the ship. Basic texture planning is useful in helping you to put detail only where it is needed and is a really good time saving device for the overall process.

Now for the final flourishes. With a bit of tweaking, the game segment is complete and I'm almost ready to move on.

Getting the ships' move speeds to slow down into the stop part of its sequence was my first port of call. This just added a little more panache. then I tightened up the ships' floaty wobbles, got the effects for the shooting at just the right animation speed, optimised how much damage the BUSCraft ships could take to make it suitably challenging, shrunk down the multi-directional projectiles and lowered the rate of fire (after all, we're quite early in the game, while I can continue to balance things up later, I don't want it to be too hard just yet).

The fully textured BUSCraft: I've put some lighting on the boosters as a standard. All ships will need lit areas for boosters. Remember, once you have the areas of your model texture-mapped you can always add the detail later if you need to.

Playing it through a few times, I realised that there was something STILL missing here. It looks as though a slow rear attacking baddie does lack something afterall. Don't ask me why, but this section of the game seemed to be missing an attack from the front. Something in me was just expecting it.
Using the modelling processes outlined above, I stuck with the glowball motif used in the multi-directional projectiles and central shooting sphere of the BUSCraft and added some un-shootable mines.

While I was happy with the style and shape of the mines I quickly realised that I had to make them noticeably bigger and different in movement speed physichal characteristic to my circular pickup sprites as my first impulse was to pick it up!! A few extra animated parts were promptly grafted on and the mine was clearly not a pickup.

I've still got a little tweaking to do to this segment of the game before I move onto the next one, but here's what it looks like at the time of writing...

And there it is: Three fully textured BUSCraft floating in space, moving independently from each other, shooting multi-directional projectiles and requiring quite a bashing from your rear lazer to kill while you dodge oncoming animated un-shootable glow-ball mines. Good eh?!

I hope you've enjoyed my little insight into this part of my game development process. If you think I haven't been thorough enough about any of this do let me know in the comments section.

Alternatively, if you particulatrly enjoyed this blog page, please say so. Nothing keeps a lone indie developer going like the knowledge that someone out there gives a damn!

If you'd like to see more of what I'm up to you can subscribe to this blog. You can also follow me on Twitter, Facebook and YouTube...

Friday, 24 February 2012



Welcome to the new blog for my one-man games studio, Psychotic Psoftware.

Basically, I make smallish games for different formats, learning as I go and becoming more proficient with the coding, art and music sides of production, not to mention the design and preproduction side of things and the post production marketing, etc.

I have honed a few of my skills in these areas but a lot of this stuff is still new ground to me.

By following this blog, you'll basically be joing me on my journey. Every now and then I'll document one  of my little production processes, taking screenshots and making a note of what I did. When I feel there's enough, I'll create a new page for the blog and post it here.

As some of you will already know, my first attempt at game production is going to be an indie game for the X-Box Live Arcade. It's a classic styled side scrolling shoot-em-up programmed in XNA with the working title: "Power-Up".

It's still early days yet but I've pretty much got the controls and weapon mechanics in. Now I'm populating the game with enemies, and later, levels. If you subscribe, you'll get to see the processes with varying levels of detail, I'm sure.

So thanks for visiting.Don't forget to subscribe. You can also follow me on any or all of the channels below...