Wednesday, 5 September 2012

Power Up - Halfway There!

I was playing about with possible subject matter for this next blog installment, when it occurred to me that I'd better stick everything else on hold and take a moment to appreciate the fact that somewhere in the last few weeks, I probably hit the half-way point in my Power Up project.

I've decided to take this opprtunity to have a look around and consider what I've done, what I've got to do, what I probably should have done and what I'll take with me for whatever I work on next. That's the plan anyway, so here goes...


Looking back: (Waaaay Back)

Let's go back to last November (it's 2012, at the time of writing). There I was, sat at this very computer, feeling more than a little dejected considering I'd wasted quite a lot of time having made a series of Shockwave games which were now sat on various websites, waiting for people to play them... and waiting, and waiting.

My abillity to get the word out about these games seemed to be sub-optimal at best and any advertising income I'd made from the games was constantly below the line of what I needed to make to actually claim the cash (somewhere around $5, US). Ultimately, I was looking at a collection of games that constisuted a good 5 years of my spare time and had gained me precisely zero returns. "If I ever get stuck without a day-job and need to support myself, this games thing is probably not the best way to make a living" I thought.

Yeah, so some of the games could do with an audio/visual overhaul here and there, but generally they were pretty good work... So what was I doing wrong? Time for a head-scratch and a spot of re-evaluation...

Some of the Psychotic games the world never saw. Still, these were a great source of experience and inspiration to draw from.

As I've mentioned before, my coder-friend's words were ringing in my ears "These are good games. you should re-make them for xbox live. It's not as hard as you think it is." (Yeah, so I paraphrased that, but you get the idea, right?). As those of you who've been keeping up with my recent interviews with various websites will know, since 1999, I was using Director to create Shockwave games. As the format died out, interest dwindled and eventually I found myself at the point where people were simply unwilling to download the Shockwave player to even look at my games. Reason enough to move on, I supposed. Xbox games don't have any such problems. There's also  generally only one outlet for them so it should be much harder to get swallowed up in an infinite mass of other games online. I tentatively got the Visual Studio software I needed, ordered the usb pad, hunted down some promising looking tutorials, and had a crack at it. And do you know what?... It wasn't as hard as I thought it was!

It turns out, those wasted years of Shockwave coding weren't so wasted once I altered my perspective a little. Yes, the developing environment of C# and XNA was much less visual. Gone were the timelines and cast libraries, and the code was much less intuitive. The little nuances were much trickier to commit to memory and though I'm ashamed to admit it, there were points at which I found myself sitting, forhead on the desk, seconds away from giving in. But I didn't! And that's all that matters really. Once I got the momentum going, it was much the same process that I knew and loved in Director, except that now my art, sound and music were a little better and I was coding in a big boy (and girl) language!

But this we know. (Those last couple of paragraphs were for the benefit of those who missed the interviews). Let's have a closer look at Power Up's development process and progress between January - when I committed to the project, and today.

Developing Power Up was an organic, shifting process and was always intended as such. I had no intention of inflicting it on any other artists, musicians, developers or designers. Only I was to be held accountable for the state of it. If it went off the rails into chaos half way through, it was my problem and I could start again.

As it happens, I seem to be holding the project together adequately enough so here's a little brainstorm of where I started and where it's got me so far...


Looking Back: (Not so way back)

*So first up, I had this tutorial thing. I followed it to the letter and had reproduced a simple game in which you can use the left xbox thumbstick to move a spaceship, which auto-fires while baddies fly from right to left and run an animation against a paralaxing background. That was litterally it, but it contained the core of what I wanted to do. The rest was up to me.

*Once I'd figured out how to attach shooting to a pad-button, a change of graphics was next up. I simply couldn't get the darned player ship to do animations so after a week fighting with that, I gave in and moved on. It just doesnt do to dwell on one thing too long. I decided I'd figure it out before the project was done and left the ship with it's first frame of 2D animation, "fly straight".

* Next, I altered the tutorial's baddies. As they were moving in a straight line from right to left, then removing themselves from existence upon leaving the screen to save memory, I decided that these would constitute the basic non-inteligent hazzard type enemies. Soon, I had 5 kinds of these, drawing them as rotating pieces of space debris which moved at different speeds toward the player and required different ammounts of shots to destroy.

the basic ship and bits of rotating debris... it all starts here!

* It was at this point that my thoughts went toward quantizing these things. This came in the form of giving the enemies/hazzards an ammount of energy while the player's laser/bullet had an ammount of damage that it does. For example, if the hazzard's energy is, say "8" and the player's bullet is "5", then two shots would kill the hazzard. I figured that this would support the whole power up system in my game, and as I was basically re-making my little demo game from years back (see earlier blog post), there WOULD be power ups! I would just have to figure that out. As for the player, it was to be a one-hit-death and that was final! Sometimes, you just have to make a decision and call it time saved. Adding player energy brought too many unknown factors to the upcoming game-balance phases and besides, one-hit-death is a simple rule, easy to grasp and adds to the impact of the enemy attacks.

*But first, I wanted to play with the bits of space debris I'd made and start to give the game a little exposition... The beginnings of a backstory crept in.

Adding some story through text and character pictures. Most important here was to make it all clearly skippable!

Winging it, my thought process went something like this: "So, you start in debris because it's easy to dodge, doesn't shoot and is a good way of warming the player up for the game to come... not to mention warming my programming up. Ok, how about this: Your mother ship has just been destroyed and you're the last survivor. Obviously, you're in the ultimate space fighter. You've just got to power it up to see what it can do...".
The destruction of the mother ship was the catalyst. I realised I'd need a sequence that comes before the debris and decided that a little opening segment with dialogue and character faces would do the trick, you know. RPG style.

As I didn't have a voice actor budget and this sort of stuff was a bit beyond my remit, I made do with text boxes... skippable text boxes..... VERY skippable text boxes... VERY skippable everything that wasn't fun shoot-em-up action, actually. With every itteration, the opening sequence became more elaborate, but also more skippable. "Y" would skip a character's line of dialogue while "Start" would skip straight to the action. These kinds of decisions can only be properly made by playing and replaying bits of your game until you'tre sick of the sight of them. It's the closest you as the developer can get to putting yourself in the place of the player is to remove the affection you have through the weeks of work you put in and replace that with an urge to just get on with it.

Working backward from the scrap of game I'd made: Here's a moment from the haunting intro story text.

*Soon, I'd inadvertently made a system for moving from one section of my game to another by just numbering them, a bit like chapters. I know there's a name for this but I don't seem to have retained it yet. Oh well. I'm sure I will and there's plenty of time for that later. As long as the concept's there, then I'm satisfied. The intro sequence spread to a big scrolly text opening, a bit like Star Wars, but in the form of the last message SOS from the mothership. Working back further still, I created the basics of the front end, complete with buttons, (though to this day only the start game button actually works. The rest is TO-DO garnish).

Getting stuck into the front end, I got the title screen to look something like this.It still needs polish but it's a start.

Then I got my head around the coding technicalities of adding music tracks and video sequences for my Psychotic Psoftware company logo. So far, so good... But hang on. I'd gotten so wrapped up in this front end lark that I'd been completely neglecting the game.

* To familiarise myself with the game once more, I drew out a load of bullet types, from straight shot lasers of varying sizes to one very strange and ambitious bullet which was to circle the player like a shield, moving outward until it faded. (This was replaced quickly with the much more realistic short-range, weak, but fast repeating plasma cannon).

Sketching out the bullet ideas. Some of these were more feasible than others... 

Using those health and damage values, I spent weeks drawing, redrawing, tweaking and retweaking the player bullets until I had 5 different types of gun, each with 10 different levels of power. 50 power-ups in total. Seemed pretty reasonable for a first go at a power-up based game. I also realised that once I'd mastered these guns and tightened up the buttons for shooting and swapping between them, I'd have the whole basic mechanics of the player in place early on.

Developing some of the player weapon types. The side shot, pictured, is particularly effective for clearing attackers from above and below.

* Next was the power ups. These were basically variants of the baddies. They moved from right to left, though seemed a little static, moving in a straight  line as they did. I couldn't get my rubbish code to make them float. Again, I promised myself I'd figure this out later and made them wobble in animation. The downside to this was that the collision box wouldn't move with them as all the frames were the same size... However, the upside here was that this was a pick up. As such, it needed to be very pickup-able. I left that bounding box nice and big and it didn't seem to matter that the game was being a little generous with the beneficial stuff. Nice trick! Then again, I wouldn't want that to happen with floaty baddies later on. I made a mental note to suss this in code and moved on.

*So, power ups - check! bullets and speed ups - check! Time for some more baddies. It was about here that I realised I was losing unnecessarry days to attempting to draw these spaceships at various angles of rotation in 2D. This really was sub-optimal... and besides, I'd recently learned a fairly compitent level of 3D and was pretty sure I could make these ships as models. If I was working in 4 hour evening stints, roughtly 2-a-week with the odd hour thrown in here and there when I could get them, I decided that 8 hours per new baddie ship-type should be ok. that includes design (both visual and functional), modelling, texturing, rendering, post production and basic coding. I'd generally allow a bit more time for tweaking later, but even so, this gave me very little time for messing about. I didn't do much maths on this but estimated that I'd realistically be able to add 3 to 4 new types of enemy space ship per level in a game of 5 levels. This way, I might see a release of the game this side of my retirement!!

One of the baddies mid process: This is the textured model of the MISCraft. From here it goes on to be rendered in situ, having dirt and detail added by hand before going into the game.

* So far, it seemed a winning plan. For every baddie type I created, I decided I would later add a Red version of it further into the game. The Red version would simply be a retweak of the original baddie with some extra danger. Some would move faster, some would shoot at a higher rate, some might fly at the player, sneak up from behind, shoot homing missiles, you get the idea. In a nutshell, the Red baddie was to be an evolution of the original baddie and should be achieveable in a 4 hour stint rather than 8-12 hours. Suddenly productivity increased and I was able to add new scenarios with varying combinations of baddies which demanded the use of different player weapons! Mint! ...I even sussed that baddie wobble thing and got my head around the update method that was stopping my player ship from animating.

*I was testing as I went, populating the game with enemies, balancing the power of the players weapons with the types of atack waves which the player would encounter. Obviously, I wanted to encourege a balanced power-up of all weapons, but I was determined to leave that choice to the player. (Risky I know, but there it is. Future balance passes will have to make this work properly).

The MISCraft, as seen in game. All nice and post-produced.

*As I reached the end of the first level, I laft a gap in the code for a level boss and had the game skip it for now, knowing that I'd come back later and fill it in with "The Cleaner", a ship I designed on paper and in theory. The intention was to come back around to bosses when I've learned more about enemy AI from coding in all the grunts, intermediate enemies, and finally the elite guard toward the end of the game. This way, I could take some of the finer features, attack patterns, bullet types, etc that I'd learned along the way and make something special of the bosses in a second pass.

* Was also designing level environments as I went. Basically, I'd started with a list of 10 levels, which I whittled down to 5 as I began to realise the enormity of what I'd bitten off. I decided that these 5 locations would tell the story adequately while giving the game the right variations in colour and setting. As well as making sure that my paralax layers and affects all worked well enough within my time constraints, I soon learned that the most important thing in a shooter of this genre was to be explicit with the visibility of bullets against these background colours. Adding flashes and getting the speed and size of the bullets was essential here, as was making their collision suitably small to ensure fair deaths on contact. While other coders had made some brilliant alternative collision suggestions, I realised that my basic box collision would work with a little latteral thinking atound the size of the boxes. The real enemy was time. Square collision it would have to be!

Testing the Alien city - a predominantly green level, for its compatibility with the player's green lasers.

*Back to the bosses, while I wasn't adding yet, I knew I'd have to be conceptualising early on. I wanted to introduce something different with each boss. The Cleaner is basically a massive garbage craft designed for chewing up enemy debris after the extermination operation. It also comes equipped with some of the weapons you've encountered on Level 1, just bigger and tougher.

Level 2 would pit you against Orbital Defence-01, a great big flying mech which defends the enemy planet. (basically, yeah, as you've probably gathered by this point, the story of the game is a revenge mission. Those pesky lizards destroyed mother earth and all her escape vessels so you, the last human are taking a can of whoop-ass back to them).

Level 3 progresses into the desert world of the enemy planet, at the end of which you take on The Worm, a giant mechanised, subterranian, flying er, worm.... but a welcome shift in visual motif from the previous levels.

Level 4 throws you into battle with The Walker, a great big pod on legs that chases you through the alien metropolis while unleashing hell from behind!

As for the final level, well........ That would be telling. If you get good enough, you'll find out.

You can see all of the boss sketches on my twitter feed if you look through my images there. No doubt they'll also turn up in other places on the internet as time passes. Seek them out. They're quite fun and give you a good idea of what I have in mind. I'll let you be the judge of how well I pulled them off a bit further down the line.

My sketch for The Walker. As you can see, there's a little information on how I realistically intend to break this up and make it work. Hopefully, my coding skills at this stage are up to it.

*I'm adding the sound in batches as I go, making lists and leaving plenty of gaps for later passes.
Usually the sound effects start with orchestral instruments, which I then distort to within an inch of their lives. I bought a pack a while back and they've proved surprisingly versatile, especially percussion. A pitch-shifted triangle with reverse echo makes for a great laser sound while cymbal combinations with chorus make the basis for great explosions.

*With the music... Well, when I come up with a suitable melody for that, I hum it into my iPhone audio recorder for later reference in production. The lack of in game music is my main reason for ot releasing anything that moves as of yet. (I also might have to price up some decent video capture software).

Music is a major sub-project in itself but at this point I have put some basic musical undercurrents into the game here and there just to make sure I can. I will, in fact, be making a start on the music proper soon, so stay tuned and you might soon be reading a blog on it, not to mention hearing some!

Which pretty much leads us to where we are now...


Looking Forward:

I'm still hellbent on getting Power Up submitted in the new year and hopeful that it'll get through the process by spring. If it doesn't, I can only appologise and keep pushing forward but lets wait and see eh. I know you guys will stick by me regardless and I appreciate that a great deal so I'll be giving it my best shot. To keep you in the loop, here's a bit of what I'll be getting myself into between now and then, in no particular order...

*Music! A big part of the plan. Each level is to have it's own track and at present there'll be a boss theme and a final boss theme. The front end will also have something all moody and haunting, but in keeping. A while ago, I did a game soundtrack with techno and orchestral score, topped off with a spot of theramine. I'm thinking something similar, but this time I'm tempted to crack out my guitar and my big Marshall amp to throw in a little industrial edge. Like I said, melodies are taking form, though like Mozart, at present they're mostly in my noodle... Did I just compare myself to Mozart??... well, the 1980's movie Mozart, at least. There'll also be a few musical stabs and bridges between events to work out. Half of the game's charm is in how I cut things together. I think I can do a bit better than start level, play music. We'll have to just wait and see. Either way, I'm giving it a lot of care and thought and hoping to put in a couple of additional week ends here and get through the full, consistent soundtrack in a couple of weeks.

*Complete the first pass! This basically means get all the baddies into the game from level 1 to 5, making sure that the difficulty roughly ramps up as I go, as do the player's opportunitites to power-up their weapons. This is really the biggest individual job of all as it consists of coding in the real meat of the game, it's enemies AI and how the player and our many bullets interract with them. I'm midway through level 4 of 5 at the moment and will only be pausing for the music task... well, you do want some video footage, right?

*Second pass.This will partly be to balance the baddies and weapons again, but will aslo be for adding cutscenes, dialogue, and pretty much anything else I've got in mind. I'll generally be re-using game art here but might be adding some end of level warp effects, etc. Again, we'll see. Also, I'll be adding in the dialogue pictures for all required baddies and a maybe a couple of goodies too. This is 2D art and each character will probably take a 4 hour evening or-so to get right. I'll find a few more hours here if I have to.
This pass might finally include the addition of a few simple baddie craft that I have in mind, here and there to help solidify the action a bit. I hope to finetune the balance of furious action with moments that allow the player to breathe and compose themselves too. Relentlessness does not a good game make.

*Boss pass. This is pretty much where I take all those boss ideas, tidy up around them and make them actually happen. I'm hoping for about a week-per boss, with a week or so to clean them all up, making for something like a 6-week boss process in total.

*Additionally, there's a load of small but important jobs to fit in. Drawing up the last level, the ending sequence/s, running through a Game Over sequence to the front end, getting all those Front end buttons working, not to mention the vast ammounts of sparkles, flashbangs, background animation and general garnish I'm planning on adding into the game. There may well be the mandatory screen-clearing Special weapon for arkward tight spots too. I've coded in the pick up. A couple of nights' work and I'm sure I can have a screen-clearing explosion working!

* Then there's marketing materials, high res images, videos, logos, even icons if I follow through and actually make a Windows version. I know some of you would like to see that and I think I'm just a bit of research away from making it a reality. Other post production stuff includes the actual, infamous xbox submission process. This is something I'm going into blind. If I get incredibly lucky, people will jump in, test it, come back with a few quck fix bugs and BOOM! Game's out!... Meanwhile, back in the real world, even three months for this might be optimistic. I mean, how the heck do I even do a demo mode?? Complications are going to become prominent around this phase. Once again, we wait and see... and most importantly, LEARN from it all so that the next game will be slicker and better.


To Conclude: (Quite quickly, cause let's face it, I've gone on a bit).

I realise I haven't covered all of the stuff I wanted to.

With regards to things I should/shouldn't have done or did stupidly wrong overall, well that might have to be a blog post all of its own and one for another day.

With regards to the subject of where my experience with Power Up will take me in my future games, that's definitely a post for another day but there's no shortage of ideas there.

This rundown of things I've done and things to do seems to have been written as more of a stream of consciousness rather than an ordered, organised plan. I'd like to think that it has some value though as an insight into the constant chattering and buzzing of my developer's mind on the subject of my first little xblig project... Don't worry though, As the jobs become more immediate they tend to become clearer and the immediate schedule becomes quite ordered.

In short, I remain confident. Nieve, but confident.