Home
GGJ Archives 2009-2012

Sunday 6am-1:30pm

Maginomicon

Global major game theme: Deception
Global minor game themes: a MAN, a PLAN, and a CANAL

Everyone was supposed to show up at 6am. The programmer that was tasked with implementing the 3D cube effect didn't show until 10am, and we didn't have his contact info. So, at 8:45, we decided to toss out the "3d-rolling-block" effect and change the blocks to be 2D "crate" objects that only have one real face. Always get everyone's MOST RELIABLE contact info at the very beginning of a project.

Since time was restricted, there was almost no time to include comments describing what was going on in the code. Likewise, there was no way to tell whose code was whose. When the only on-time programmer reverted the code to before the 3D rolling cube work began, a bunch of bugs started to show up in the code. By the looks of it, they were all caused by changing the movement of the blocks to have free-movement rather than the tile-based discrete-movement system we had used at the very beginning. The decision to switch to a free-movement system for the blocks was done by the programmers early Saturday without the consent of the group. The lesson here? Know your limits, and always get consent so you the programmer don't implement something fancy that may needlessly make your code (and your life) more complicated. Also, never make a complex game-changing feature the sole responsibility of anyone other than your lead programmer. That's their job. If the lead programmer accepts the need for the feature AND agrees on its importance (didn't happen here) but doesn't want to do that task, re-evaluate the need for either the feature (preferred) or that lead programmer.

Because of all these bugs, at 12:00 we decided to abandon adding anything but the most essential features. Note that I said "essential", not "critical". "Essential" features are the features that make the game a GAME, nothing more. Score, win/lose conditions, asset inclusion, that's it. Next to those in importance are system screens, such as a title screen, options screen, credits screen, and how to play screen.

For perspective, here's what our programmer TODO checklist looked like yesterday morning:

  • UNIMPORTANT: move platforms back to 1 away from edge
    • (so that block-relevant water forms a square rather than a plus)
  • UNIMPORTANT: blocks appear over death water and THEN die
  • UNIMPORTANT: change controls so that they only use the keyboard
  • IMPORTANT: implement gameover condition
  • IMPORTANT: implement lives
    • (and respawn, possibly after a time)
  • IMPORTANT: implement scoring
  • add arrows to block tiles
    • (arrow is its own image)
  • make bullet react to arrowed tiles
    • redirect/rebound
    • passthrough
  • implement tile crush effect
    • (use destroy block animation)
  • IMPORTANT: implement SFX to this point
  • make tiles cubes acccording to specs
  • make cubes roll down water until collision
  • make cubes roll on bullet hit
  • make powerup cube face
    • on block creation, switched with the arrow on a random face
    • this 1st powerup attempt merely destroys the block
      • (use destroy block animation)
  • make more powerup effects
  • IMPORTANT: implement SFX to this point

...You know, looking back on this list, I don't think the programmers ever followed it in order line-by-line. What the heck? Implementation of the 3D cubes shouldn't of even been attempted AT ALL since we never got all the stuff that was listed before it! *groan*

...Always make sure your programmers are implementing stuff in the order it really needs to be implemented.


Follow

All rights reserved 2012-2013, Global Game Jam