Monday, March 25, 2013

Edward's Game Plan

union-jackHello from England! Can't believe that the GameJam is upon me already - what happened to all those weeks I had safely in hand for prep...? Ooops


Idea fresh from the Half-Bakery

Cannonade - You control a fixed gun emplacement defending against old-school waves of unreasonable aliens. The crucial game mechanic is that the gun is like a mortar - slow firing with an indirect, arcing, trajectory to hit your target. Mortar rounds also explode on a fixed timer and bounce around the scenery. Judging each shot is crucial, but essentially a first-person arcade shooter.

  • Scoring: Destroy as many aliens as possible
  • Game-over: when too many aliens make it through to your position.

Hollywood Producer Pitch

Think: Quake's Grenade Launcher meets Atari's Battlezone meets Sinclair Spectrum's 3D Tanx (yes, I am that old!)

BattleZone 1 3D Tanx ZX Spectrum First two tanks completely destroyed

OK so I'm chasing 3 potential GameJam ‘achievements’:

Achievement 1 - "It wasn't a total embarrassment..."

Basically I need something for everyone to look at in the post-jam wash-up!

  • Successfully wired up Bullet SDK to my game lib and G3D with some ‘glue’ classes
  • Animate G3D rendered primitives synchronised with Bullet-based physics entities
  • Demonstrate realistic physical collisions between dynamic cylinder objects & scenery
  • If nothing else, the basis of a wiki page for G3D ;)

Achievement 2 - "Well if it walks like a game and quacks like a game..."

I really need to nail these to have any claim that I have won the GameJam:

  • Pitch and yaw 'cannon' with Xbox controller or keyboard
  • Yaw camera with cannon.
  • Simple rendered physical ground plane & skybox
  • Minimal game-on and game-over game states
  • Firing projectiles under physics control, which bounce and 'explode' on a timer
  • Multiple, moving enemies - from edge of scene to centre (player is at 0,0,0).
  • Implement scoring with rendered score text
  • Implement damage and detect level-up (next wave) & game-over conditions
  • Render damage as text
  • Render cannon pitch position as text
  • Enemy speed & score value increasing with each 'Wave'
  • Game-mechanic collision detection hooked from Bullet - destroy enemies and receive damage

Achievement 3 - "Nobody likes a smart-arse..."

If I get on to these things I will be flippin' delighted!

  • Proper game-state & game-screen management - intro screen, game screen, game-over
  • Create some half-decent textured game models & art work
  • Add new particle system sub-classes for grenade smoke-trail & explosions
  • Add more additional scenery with dynamic physical obstacles
  • Create a 2D version of my existing 'radar' component
  • Create a graphical 2D elevation indicator
  • Render damage graphically as a status bar
  • Control launch velocity as well as initial trajectory of projectiles
  • Multiple enemy types with varied AI - needed for obstacle avoidance

Preparatory work.

I have been working on an Elite-like game, which I have written so that many elements are in an independent game library. *If* I’ve written it right, I *should* be able to re-use lots of bits from this.
I compiled and linked the Bullet libs and SDK some weeks ago and... er... that's it I'm afraid :(


G3D, Bullet physics, local SVN, VS2010.


Blimey, where do I start - let's just say that I am totally relying on getting Bullet up-and-running to do the heavy lifting here, if that doesn't work I will need to change my name and move to Siberia...


  1. Looks like we're both going to be leveraging G3D+Bullet (and without getting them to play nicely ahead of time). Good luck! I know I'll need it. :P

    1. Hi Michael, thanks - good luck to you too, your game already looks wicked mind you!
      I had definitely intended to do a lot of the Bullet integration work and a basic proof of concept ahead of time, but my work has intervened pretty comprehensively for the last few weeks. The best laid plans of mice and men...
      I'm relieved to have someone else to bounce ideas off though, we have interesting times ahead :)