Completed Novascape, My GBDK Gameboy Game for Ludum Dare 34

So, last weekend Ludum Dare 34 happened and I really love the Ludum Dare game jam events, my first attempt was way back in Ludum Dare 24 and since then I’ve entered almost every one.

This time around, I set myself the additional challenge of making a Gameboy game and whilst my Flash Cart had just given up the ghost, I persisted with the plan.

For the first time ever, two themes were tied for first place, so I could choose which one to go for. Either “Growth” or Two Button Controls”.

I opted for the latter and within an hour I’d roughly planned out in my mind what I was going to make, essentially a game where you have to escape from a pit, as a spaceman, before the rising lava plume consumes you.

GAMEBOY & GAME ASSETS… OH BOY!

Now, asset creation for the Gameboy isn’t a trivial thing sadly. You’re limited to 4 colours which simplifies things a lot but, GBDK only contains some basic tile editing programs, which I love by the way, thank you very much to the developer of these, they mean I can actually get my hea around things!

So, I’m limited to 8×8 groups of pixels, which is okay for smaller sprites and looping backgrounds, but not so much for creating detailed backgrounds, that becomes a lot more time consuming and error-prone when transposing from Photoshop into each 8×8 tile.

When it comes to sound, it only gets tougher, you don’t just load up a wav file and set it to play, you’re manipulating the sound channels directly and the Gameboy is armed with:

2 pulse / square wave channels
1 noise channel
1 custom channel, so, you could in theory import wav files somehow but, it’s not recommended, we have minimal RAM and ROM to play with here!

Coding in plain C isn’t too bad though, as long as you keep everything small in terms of code size and try not to use comparison operators (e.g. less than, greater than, etc) or multiplication, division, sine, etc. (At least not without look-up tables). then you’ll be okay.

No floating point variables either, those would really bog the 4Mhz Z80 down, ideally keep everything to an unsigned 8-bit integer (0-255) which again, is tough initially but a couple of 16-bit integers are allowable.

Having mentioned all of this, the game managed to get to a fairly playable state within the first day, although at this point there were a lot of gameplay issues that still needed to be fixed, for example, you could simply hold A and not much would get in your way, sometimes not at all!

Also, there was no horizontal movement, only vertical, which felt a bit boring, so the following day, whilst refining the newly added enemies and trying to generate their placements in more annoying ways I stumbled across an idea.

A FUEL METER!

Quick, get that Fuel Can!
Quick, get that Fuel Can!

Of course, why didn’t I think of this before. If the jet pack runs out of fuel, then that’s it, you’re toast. But, it needs balancing out somehow, so in went the flashing fuel cans and gun recoil, allowing for some control over horizontal movement with the B button whilst vertical motion is all handled with the main (A) button.

But how to handle giving the player fuel? It should be based on performing a task and also, as horizontal movement is slow, lava is rising up quickly under you, it could be too tough to reach!

There was only 1 solution in my mind that would bring another layer into the game at this point, shooting enemies could release homing fuel cells which the player could collect with relative ease.

This meant that not only were enemies deadly, but you had a damned good reason to hang around and aim for them, your jetpack quickly runs out of fuel on the hard mode in the game, so enemy destruction is a must!

The game was looking pretty close to it’s final form by around 4-6pm on Day 2 and with around 7 hours left it was mostly debugging, polish and ensuring all the standard trimmings such as endings, title screens, differentiating easy mode from hard mode more and, in general making sure it all run without too many bugs.

Because, there are bugs, just a couple, but I couldn’t find how they were occurring. In the scope of things though, they’re fairly minor and, in some circumstances, give a player an advantage whilst playing, sooo, yeah. I guess I’m okay with that.

All in all, I thoroughly enjoyed Ludum Dare this time around, it wasn’t as stressful as previous ones, how much of that is down to experience and how much of it is down to going for the Gameboy, I don’t know. However, you can play NOVASCAPE for your Handheld Nintendo Gameboy System here and I recommend that you do, it’s fun, you just need to learn the controls 🙂

List of Finished, Released Games for Mobile, Console, Gameboy and PC

Super Grid Run was a notable release as it was not only my first ‘proper’ game release but has also been by far my most successful game to date, receiving awards for top review scores in 2013 on android phones, narrowly beating Plants Vz Zombies 2, Being shown at Many conventions by the lovely folk at Gamestick as well as being a featured released game for the lil Android Console. To date, this rather minimalistic, challenging Runner game has notched up over 1,250 paid downloads across platforms and well over 50k free downloads.

I’m hoping that my current game in development, for Mobile, Android Console & Gameboy Classic Series They Are Everywhere, will reach the same heights, or greater!

Finished & Released Games in Order of Date of Completion
Title Platforms Year Link
Gravity Force 3 Android 2012 Gravity Force 3
Super Grid Run iOS, Android, OUYA, Gamestick 2013 http://www.supergridrun.com/
Holey Moley iOS, Android, OUYA 2014 http://www.holey-moley.co.uk/
Invasion VS OUYA 2014 Invasion VS
Flappy New Year Android 2014 Flappy New Year

I have, like many indie & hobby developers a rather large list of unfinished games that may one day get finished off, these will be listed here in the coming days.

I can safely say that there are a LOT of these and even more Game Jam Games!

Game Jam Games List

Dec 2015 – NovaScape

Dec 2015 – Space Invasion Zero

Aug 2015 – The Catcher Van

May 2015 – Daily Dungeon

Apr 2015 – Zoo Racing

Dec 2014 – The Biggest Snowman

Aug 2013 – Penguin Racer Go Go!

Apr 2013 – Holey Moley – 4 Hour Edition

Dec 2012 – The Most EVIL Breakfast

Aug 2012 – DashDashDASH

Apr 2012 – Gravity Force 3

Ready to Gameboy Jam through Ludum Dare 34

 

Well, with Ludum Dare #34 Just around the corner, under 12 hours away as I type this out, I’ve been preparing myself to put together a Gameboy Game in Under 48 Hours, based around a theme. Which I’ll discover at 2am.

So, what am I doing to prepare for this then, huh, huh?

  1. Clear some space around me in my lil home office so I’m not being distracted by clutter.
  2. Made sure I have made a gameboy game recently,in a small amount of time, so I’m not going in to this completely blind. You can play it on your Gameboy here, it’s a tough space invader clone and didn’t take too long to make, just a bit of time to debug. GBDK is funny with variables sometimes!
  3. I Managed to write myself a handy tool to make sprite creation easier, meaning I can now use photoshop, export to PNG, run it through my tool and out pops the relevant data for both GBDK and it’s Tile editor program, I can see that saving me a bunch of time and allowing me to make more complex sprites a bit easier! I’ll pop this online at some point, just not right now though, time is pressing!
  4. Probably grab a bunch of snacks later on tonight for easy eating. Not too junky though!
  5. Most shocking of all, I’ll be getting myself a decent nights rest, so I can make sure I’m not going to burn myself out over the 2 days, I love game jams and everything that goes with them, but yeah, sleep, that’s important!

Why in the hell am I making a Gameboy Game? Why Not Use Unity. Unreal / Something else?

Haha, yeah, I’d normally be a Unity bod for any Gamejam, but, what with my recent endeavours with GBDK  and Gameboy Development I wanted to see what I can make, from scratch, in 2 days. I’m not expecting my entry to fare particularly well in comparison to other games out there, but, this is just for the joy of game jams!