A quick run down of Gunnihilation

Saturday May 31 2014 - projects

Background on my current main project. Flash based box2d powered platform shooter Gunnihilation is like Smash TV and Contra had a baby. A very violent baby.

The idea for something like Gunnihilation has been knocking around in my head since I left university, based on a desire to create a single player form out of 2D deathmatch games like Soldat and Teewars.

After the learning experience (both in design and programming) gleaned from Spike, I wanted to move on. I decided I would try creating something using a physics engine, specifically, Box2D which had a rather impressive looking Flash demo (here for those curious: Box2DFlash). I chose to use a physics engine for several reasons:

1 - Collision detection is really, really hard to do well. Having researched the topic (and gained experience in the matter via Spike), examining different forms of broadphase optimisation as well as the nitty gritty of the direct narrow phase detection and solving I reached a conclusion: While I could create something reasonable for an arcade game (most likely using a combination of Grid based broadphase and SAT based narrow phase like N Way of the Ninja) it wouldn't give me the flexibility and would take far too long.

2 - Apart from using Flash's inbuilt API, I hadn't tried to make extensive use of an external library. I wanted to find out what it was like doing a large amount whilst working around someone else's code.

3 - Physics engines are neat, and very heavily used. So it's a good idea to know how they work.

I didn't want to make a puzzle game however. I don't hate puzzle games, but I don't play them. I play shooters (primarily old ones) and the odd game of Civilisation when I want my brain to leak out of my eyes. It's not a genre I have experience with, and I certainly didn't feel like I could suggest anything interesting in the realms of 'physics puzzle'. So instead I set about the creation of a platform shooter based around a few ideas, chief amoung them being speed, manoeuvrability, high monster count and ragdolls.

Lots of ragdolls

Early prototypes experimenting with box2D progressed fairly rapidly as I got to grips with Presolving, querying and collision grouping. Porting over and updating my blitting engine from Spike provided nice and fast graphics. Despite this, early on the game's resolution was lowered from 640x480 to 320x240, giving it a much more pixelated look, and speeding up drawing by a large amount. Speed in gameplay was critical to the crazy feel I was going for, and you can't have fast gameplay without fast graphics. Another element that needed work was the smooth movement of the player through platforms as tight control over their position vertically is key. Death can come from any angle, but the player shoot at any angle too. Vertical movement being highly reliant on platforms allows the level design to play with the combat and the player's ability to avoid damage.

One of my other graphical ideas involved coming to terms with my lack of any art chops. I'm a designer and a programmer, but in no way an artist. So my plan was to have very fast drawing which I could use to put a huge number of objects on the screen. I planned to substitute quality for quantity. Maybe my explosions looked rubbish, but at least there would be a huge number of the on screen, hidden behind particle effects.

However late in 2013 I encountered some old university friends and their start up, RoboPixelGames. They agreed to help out as they could with the graphics in lulls between their own projects, allowing me to put terrible programmer art behind me (for the most part). This leaves the game in it's current state, one of bug fixing and polishing for some kind of more public release. We took the game to a local game industry event called Game Bridge and a couple of Robo Pixel members braved the trip to Newcastle for Game Horizon. Despite a rather ropey implementation of Adobe Air's new Gamepad API (not to mention the performance issues with the system on their end, please fix that Adobe) we got some good feedback and I hear a fun time was had by all... Although I've no idea really, they could have just been drinking and made it up, but it sounded convincing.

Here's a few screenshots to show the game in motion.

Blame Zqf only for this website