Pages

Tuesday, August 10, 2010

Falling Blocks: The Initial Design

Over the past few days I've been jotting down design notes and ideas, mocking up graphics, and familiarizing myself with Flixel (tune in for a discussion of some sort about Flixel down the road). But one can only deal in theory and scribbled notes for so long. Ultimately, it just comes down to prototyping and seeing how it works. I am a big proponent of an iterative game development process, at least for small projects like this one.
  1. Prototype
  2. What is it missing?
  3. Add, remove, or fine tune features
  4. Repeat
So for my first stage of prototyping of Falling Blocks (which we'll call the game for now for brevity. I'm terrible at thinking of names), I need a bare-bones design that will still offer some gameplay and a basis for critique for further iterations. Here is what I've come up with over the past few days:

Single Long Level
In the well-worn tradition of Tetris and Bejeweled (in endless mode), the gameplay of Falling Blocks will consists of a single, very long level. The goal for the player is to get as far through this level as he can without dying. Or perhaps, if he's had practice, to get to the end of the level. While this style of "single-level" gameplay isn't quite the way to go if you're looking to make the next Final Fantasy or blockbuster FPS, it fits perfectly with the surreal, casual gameplay that I'm looking to create with this game.

Also like Tetris, there will be "stages" within this single level. Once the player reaches a certain threshold of height on the screen, the viewport will shift up so that the player is once again at the bottom of the screen (though he is still at the same height on the tower. It's only the camera that moved). Each shift signifies a new stage, and each stage is characterized by faster falling blocks. Each of these stages has a name:
  1. Humble Beginning
  2. Seeing it All
  3. In the Clouds
  4. Taller Than Tall
  5. Stratosphere
  6. Mesosphere
  7. One With the Cosmos
  8. Endless Space
Initially, I was thinking of making the game endless, where you just keep climbing trying to beat the previous highscore, where there is no real end. It would just keep going and going. However, I like the idea of making some subtle statement about life, and I would like to do this by ending the game like so: when the player reaches the top of "Endless Space," the final stage, the viewpoint does not shift. Instead, without gravity or air to hold him down, the player simply floats away, lifeless and without want or need, into the endless space that is our universe... I like the idea of a good, subtle ending to a fun, short game.

Grid
The grid is made up of four by four isometric blocks.

Falling Blocks
Blocks fall in random intervals which vary depending on the current stage.

  • Higher stages will tend to drop blocks more rapidly. 
  • The falling speed of blocks is constant throughout the game. 
  • A shadow shown below a falling block will warn of a coming block before it appears on screen. 
  • A block cannot begin falling onto a given square if there is already a block in the process of falling there. 
If a block falls on the square where the player is standing, the player is squished and the game is over. If the player is in transit from that square to another (i.e. in mid-animation) at the moment the block hits, though, he is safe. Whether or not he is squished is determined at the moment the block hits the block below it and stops moving, not sooner. The player will have to exercise a bit of suspension of disbelief in this case because it will be possible for the player to save himself just in time even if it appears that his head or torso have already be crushed by an encroaching block.

A filling algorithm chooses which location to drop new blocks based on a preference to fill in an entire level before adding too much to the next few levels in order to avoid getting the player into impossible-to-avoid situations that will cause frustration and premature quiting of the game.



Controls
The game is played with just the arrow keys. Up=NE, Left=NW, Right=SE, Down=SW. Pressing a key moves the player one step in that direction if a) the target square is on the same level as the player, b) the target square is no more than one level higher than the player, or c) the target square is lower than the player. This means that the player can jump down a virtually unlimited number of levels (though there shouldn't be more than two or three levels to jump down if the filling algorithm works properly).

Menu
The menu will feature three options: Play, Instructions, and Credits. The instructions page should be simple with not much more than, "Avoid falling blocks. Climb higher." Clicking the play button should launch the player right into the game at stage one.

I think that just about sums up everything that's needed for a bare-bones prototype. I get the feeling that I'll definitely be adding some additional features relatively early in the process (like bonus collectibles of some sort to increase the player's score or something like that), but it's important to set an initial goal off of which other features can be built. Without the solid foundation of core gameplay down first, the actual implementation can easily grow quite painful very quickly.

Until next time, in the Land of Dinosaurs,

-Isaac

No comments:

Post a Comment