Category Archives: Game Dev

Game Explorer

In chess, there are huge depositories of games past, which can be explored using powerful tool such as chess.com’s Game Explorer. Using this web program you can play moves and see what the winning percentages are for each move that comes after it. There are over two million games in the database, all from master-level players. Many of the games in this database follow what are known as main lines – over half of those games have e4 as the starting move. For those unfamiliar with chess notation, this is moving the king’s pawn two squares forward.

What use is a chess database? For one, it makes it easy to see what your future chances may be, and how popular each line of reasoning is. Because of this, most chess-playing engines use what’s known as an opening books, a type of chess database, to improve their play during the beginning part of the game. Likewise, people playing correspondence chess often use chess databases to avoid making blunders, and to look ahead to see what their opponent (who also is using a database) might play.

If you follow through a couple of moves it’s easy to find an opening sequence that has rarely been been played before at the master level – these are known as ‘novelties’ or ‘theoretical novelties’ in chess. Many of these novelties are weak moves, but there are countless undiscovered complexities in chess, and some chess players enjoy exploring this new territory. If you play one of these novelties, computer and human player alike will have to throw away their chess database as well – since there is no more data to be drawn upon!

The corresponding idea in game design is to use a sort of novelty, innovation, or new technology to differentiate one game from another. It would be interesting to be able to locate novelties in game design, in a similar way to how they are discovered in chess. Let’s take a look at a hypothetical design database which allows people to explore different types of designs and see what other projects made similar decisions, if anyone had actually made that design decision before.

Instead of chess moves, this design database has a sequence of design decisions, starting with the most important, overarching themes of a project, with following decisions refining and polishing the overall design. A design sequence for chess could be like this, in order of importance to the game:

  1. Abstract Strategy Game
  2. Two Players
  3. Special ‘King’ piece is put in check to win the game
  4. Pieces capture the opponent’s pieces by moving into them
  5. Each piece has a different type of movement (described here)
  6. Some special moves can be made (Pawns moving 2 squares, castling, en passant, pawn promotion)
  7. Board is 8×8
  8. Pieces start out arranged in a particular manner

The order is important, since you can make changes more easily to the later items without greatly affecting how chess feels and plays. An example of this kind of change was a variant developed by Bobby Fischer some time ago in order to combat the rote memorization of opening systems in chess. The variant is known as Chess960, where the arrangement of the back rank of pieces is randomized (with some restrictions) before the game. The result is a game which plays almost exactly like chess, but places more emphasis on creativity and talent, rather than memorization and preparation.

On the other hand, you could hardly alter the earlier elements without changing the feel of the game, though depending on how they are changed it could still be considered a chess variant. Shogi has differences in 4, 5, 6, and 8, though it’s still recognizibly a type of chess – it’s also called Japanese chess.

Let’s take a look at another decision sequence:

  1. First Person Shooter
  2. One player or two players cooperatively
  3. Fighting against aliens
  4. Player has health and shields, the shields recharge
  5. Vehicles are used in combat by one or more players at a time
  6. Players can hold only two sets of weapons at a time
  7. Players can use grenades as long as their weapon only takes up one hand
  8. Special items can be found which are used to enhance the player or detract from enemies

It should be pretty apparant that this game is Halo, though you wouldn’t be able to tell which one unless someone expanded the sequence with more and more finer points. Taking the assumptions that come along with being a FPS game (running, jumping, ducking, aiming, shooting) you can get a pretty good idea what is going on in the game and how the combat plays out. Compare it to Gears of War, which has a similar design, though it is an over-the-shoulder camera, and I would probably replace the vehical combat with an item about the cover system, since that is what’s important about the combat. There are other small changes as well, regarding the weapons held, grenades, and special items – though these are farther down the list, and ultimately less important than the earlier ones.

Another interesting comparison would be the differences between checkers and chess. I’ll leave that as an exercise to the reader (because I am a jerk).

In conclusion, I think it’d be neat to have a database of games listed in this design sequence format, so you can pick one or two early (large) decisions and see what kind of games show up in the filtered list, including stats such as their critical and financial success, detractions, and links to similar games that differ in a bigger decision rather than a smaller one.

TOB – First Prototype

Here’s some stuff I gotta do.

  1. Visual Studio set up
  2. Sprite loading
  3. Sprite animation
  4. Animation description format (txt)
  5. Animation loading
  6. Level displaying (tiles)
  7. Tile description format (txt)
  8. Level description format (txt)
  9. Level loading
  10. Level editor (basic)
  11. Controller movement
  12. Collide with level tiles
  13. Run
  14. Jump

The tile description format will have a list of the tiles and their component .png files, which will then be referenced in the level description format so that it can be enumerated simply.

The format might look like so (tiles with multiple frames are for a fancy-tile format that I made up):

TileName   Frames  “path.png”
BrickTiles   9 “tiles/bricks-9-3-3.png”
SmallPlant  1 “tiles/smallplant.png”

The level might look like this:
Tiles “tiles/tiles.txt”
. Background
b BrickTiles
p SmallPlant
EndTiles
Level 30 20
……………
….p…..p…
…bbbbbbb
EndLevel
etc

The animation format will probably look something like this:

Idle    frames 0    0     loop 0    // Loops infinite times
Walk  frames 10   19   loop 0    // Loops infinite times
Stun  frames 20   24   loop 1    // Runs once then stops
Stand frames 25  29   loop 1    // Runs once then stops

The level editor will also need a sort of collision hull editor and way to edit the non-architecture layers, including gameplay cues and monster drops, and so on.

Delays

I found a copy of Visual Studio 2003 on my desktop, which might help me to actually get some work done. However, I should probably buy the damned program already and install it on my laptop, to facilitate development. Actual motivation is out the window!

At this rate I might have something programmed by 2009.

Design Documents

I spent some time today working on a design document, the fruits of which you can see here: Grocery Panic.doc

Excerpt:

The X
Don’t put the cans on top of the eggs.

Summary
Foodstuffs are falling into a paper bag from an ever-rotating conveyor belt of edible goods. Your job is to pack the bag without destroying anything. Certain items are fragile, and must be placed very carefully. The less empty space left, the better. Each bag will be more difficult to pack than the last!

Conveyor Belt
The conveyor belt carries items before they are dropped into the pit. The conveyor belt starts off the right edge of the screen and ends at the top-center of the playing field.

At regular intervals determined by the conveyor belt speed, new items are added to the conveyor belt from the right side of the screen. They should move along the conveyor belt until they reach the end, where they stack up awaiting use by the player. Stacked items occasionally jiggle, to represent how agitated they are.

Whenever an item is placed, the next one is immediately picked off of the conveyor belt and placed at the very top-center top of the playing field, even if that item was not already at the end of the conveyor belt.

When the conveyor belt is filled with stacked items, they will blink red, and if another item is added, they all fall off into the pit, which will cause many things to be crushed by accidental poor placement. This may cost a player the game.

Grocery Panic Development, Pt. 1

Panic!

Just starting work on a recent idea: Don’t put the cans on top of the bread. That’s the gameplay behind this simple tetris-clone where you pack groceries into a paper bag. Each item has a weight, strength, and shape (flavor? price?). If you put an item on another item, if the weight is greater than the other item’s strength, the weak item is squished.

Examples:

Watermelon – 4 Strength, 4 Weight
Can O’ Soup – 4 Strength, 3 Weight
Cereal – 3 Strength, 2 Weight
Eggs – 2 Strength, 2 Weight
Banana – (Tastes delicious and has an odd shape) 2 Strength, 2 Weight
Bread – 1 Strength, 1 Weight

You can put a can on a cereal box, and a cereal box on a can. You can put a box on some eggs, but not on bread. If you put a watermelon on a loaf of bread you are a fool. The groceries will come down off of a conveyor belt, and you move and rotate them in the style of Tetris. Once the bag is full, you get points for each item in the bag, demerits for holes in the middle, and NO TIPS whatsoever. This is a union store, buddy.

That’s it for now, here are some pieces of art that I didn’t crop: