Wednesday, June 5, 2013

Whispering Winds.

Whispering Winds is the first game project I worked on. The first few months of the webelevate course I am on was teaching the fundamentals of programming to newbies like me but at Christmas we were given the task of making a game using a WYSIWYG (what you see is what you get). 

A WYSIWYG is a program that lets you create games using a graphical user interface and doesn't require coding. One of the more popular ones is Game Maker. For this project we had to make the game in Stencyl:

By the end of the project I wasn't very fond of Stencyl and thought it was a bad choice for a first assignment. The user interface is terribly confusing and while it says you don't need to know code it's a massive advantage to know at least the fundamentals before using it. By the end of the project I was also having performance issues despite the game not really being all that technically challenging. I really felt sorry for the games content guys on the course since they had no programming classes. When you do get used to Stencyl it does give you a lot of options and the coding system is handled in the same way Scratch handles coding if you've ever used it.

Pretty much most of the whole of January was dedicated to making this game. I was having a lot of fun, so much so I found I had to drag myself away from the PC late at night! It was a real learning experience. I had to write full game design documentation for the project. I also learnt a lot about how to approach making a game. Getting your mechanics, interactions with the environment and enemies, controls and animations should really be completed first before you even start thinking about making any levels.  Being a complete videogame nerd also came in handy since I knew a little about level design and about setting the size of hit boxes to make the game more playable. To think for the whole of my life I was told I'd never learn anything from playing games. The only requirement we had for the game was to make it for a casual market.

The game was coded almost entirely from scratch. Stencyl has its own asset store, a bit like Unity's asset store, with premade code you can download. I got the 8-way character movement code from this store for free but it didn't really suit the game I was trying to make so it ended up having to rewirte about 90% of the code. It used a physics based movement system while I was going for a slower pace with a defined movement speed that the character didn't accelerate to. I did find the way it controlled animations and how the character interacts with the level tiles to be an inspiration for the rest of the main characters control code.

Anyway enough with the technical details, let's look at the game.

As you can probably tell I was going for a 'Green Hill Zone' type vibe for the opening level. Very original I'm sure you will agree. My main character swings a big mallet at enemies which stuns them. She can then pick them up and throw them as a projectile. I was going for a kind of Kirby risk reward mechanic where you are more vulnerable attacking with the mallet but end up in a powered up state when you touch a downed enemy. However I'm pretty sure some other game had the same mechanics I just can't think of one right now. I did all the sprite art myself. It's not the best but I'm amazed it didn't turn out disgusting since I've not done any art since secondary school. That enemy, the 'rover', just walks around the ground, nothing special there.

The second enemy I made was the rabbit in this screenshot. He's a bit trickier since he jumps at intervals but still nothing you can't deal with easily. 

Here's the level checkpoint. We are about to move into the cave area. I decided to change up the scenery to make the game more interesting. You can see the heart power up on the ground and the 1up power up. The 1up is sitting on breakable blocks. I was hoping players that got to this point while holding an enemy could throw it at the block to knock down the 1up. 

Here we are inside the cave. This is the third enemy, the 'thrower'. He chucks bouncing bombs that can be a pain in to avoid unless you take it slowly. Also I had to do a lot of work on him because if I kept him persistent through the level he would keep throwing bombs when not on screen and make annoying sound effectwhile slowing the game down. His sprite art isn't the best since I kind of rushed him but it's not the worst. You can also see the main character winding up a mallet attack. I called her 'Sprite' because she is a fairy sprite and the first sprite I ever made!

The end of the cave section, you have to dig your way out.

A few more platforming and enemy hazards and we are at the end of the stage. We were tasked with creating just one stage for the assignment. I was having too much fun so went a few steps further.

Here we are in the second stage inside the tree. I changed the scrolling to vertical for this stage for variety. I added holes in the tree and you can see the background through them which scrolls at a slower rate to give depth to the level. I'm quite proud of the wooden logs used in this stage and I ended up reusing them in a later project. Time to climb!

Since you are climbing upwards it makes tackling some of the enemies difficult. I kept this stage short with no checkpoint since there wasn't a lot I could do to vary the location and I was running short on time before the assignment was due.

I had about a day left before the assignment was due when I finished the second stage so wanted to add my own little flourish. I grew up loving games like Contra, Rocket Knight Adventures, Gunstar Heroes and Turrican, mostly because they featured amazing boss fights. I just love a good boss fight and feel it's a bit of a lost art. I decided to add my own end of level boss.

And here's my boss. Can you spot the Kirby influence? He's quite simple. He spits bouncing acorns at you then acorns that fly straight across the screen. His third attack wave I used a Stencyl effect to shake the screen and acorns rained down on the player from  random positions. It worked really well. At the end of that attack phase a stunned enemy falls from the tree tops and you can throw him at the boss. Whether it hits or misses the boss attack pattern repeats. Three hits and the boss is toast. I was a bit sneaky and changed the screen shaking attack pattern when the boss is on his final life point. I had the acorns rain down from on top of the player so you had to keep moving to avoid them.

The boss is just the eyes, nose and mouth placed over the same tiles that were used to the exit to the first stage. A frame of his animation is below:

 If you are good enough you'll have finished my short game project!

I have to say I'm quite proud of what I achieved in such a short space of time. Since I had a lot more time with this project and wasn't writing the code myself and instead using a WYSIWYG I had a lot more to polish the game and so far it's the most playable game I've made. Not bad for a first effort. If I was going to use a WYSIWYG again I'd use GameMaker which is easier to learn but also has an accessible scripting language for when you want to take your game development further.

My new development blog!

Some people might not know but I've started a course in game development, well actually started is a lie I've been doing it since September and have finished up lectures already. I've been learning programming and making a few games as well and will be using this blog to show some of the stuff I've been working on. I'll start with some of the projects I've completed and hopefully I'll have more stuff coming later.

Anyway, on with the blogging!