Game Design: Choices

Video games are the first media which interacts with its audience in a significant way.  Do you wish Holden Caulfield would have stopped whining so much?  Did you think that Ophelia should have actually gone to a nunnery instead of going swimming?  Maybe the Mariner should have just let that bird go.  Games give you the ability to change how characters act.  They let the player inject their own personal biases into the story.

A great example of this is Fallout 3.  Very early on in the game, you are presented with a grave choice which will affect the lives of dozens of people.  The choice brings consequences which stay with you the rest of the game.  If you choose evil, you are rewarded with fantastic luxuries – and a haunted past.  Choosing good produces less material benefit but a clear consequence.

Choices

Choices

Sure, too many choices can paralyze the player and be a bad thing.  But a game with no choices isn’t a game at all – it’s a movie.

Tags: , ,

Adrift v0.1 Release!

Adrift is ready for testing!

Adrift v0.1

Adrift v0.1

Adrift is a puzzle game where your goal is to guide a lost ship home by controlling the wind.  Of course, there are numerous obstacles such as pirates blocking your path.  Note that this is a “beta” release and there are probably still bugs left to find.

Download it here.  It should run on any Windows system:  just double click AdriftDriver.exe to start it up.  If you’re interested, the Python source code can be found here.

Tags: ,

Game Design: Defcon

Well, someone finally did it.  They found a way to make nuclear Armageddon fun.

Defcon

Defcon

Defcon is a multiplayer indie strategy game where the goal is to destroy your rivals.  Its technically a real time game, but the pace is so slow and lumbering that it creates a high amount of tension while letting you think hard about your strategic choices.  The graphics are simple:  just geometric figures overlayed on a map of the world.

What I like best about Defcon is the atmosphere:  the weak coughs in the background and sterilized kill counts progressing ever higher really bring out the feel of a war room on the verge of bringing about the apocalypse.  Its also one of the few truly fun indie multiplayer games and is an excellent case study of doing more with less graphically.

Fittingly, no one really wins in Defcon:  the game is set up so that every country will lose most of their population.  It portrays war as brutal but somehow manages to make the experience of playing it entertaining.

Tags: ,

Sound Resources for Indie Game Development

Setting the mood through music opens up what experiences are capable for your user.  But choosing the right sound file for your game can be tough.  Most sound files are copyright protected and unavailable for use if you want to make a profit on your idea.  However, there are a few sites out there which I’ve found to be useful:

freesound - a great resource for sound effects.  It has everything from thunder to restaurant noises.

ccMixter – lots of music files for various genres.

incompetech – great background music.  Some are created especially for game use.

Tags: , , , ,

Game Design: The Trickery of Cat Mario

Everyone loves Mario.  The short Italian guy with blue overalls has helped set up the largest video game empire ever.  The consequences of this are that every developer who tries to make a platformer game will have their game compared, at least subconsciously, to Super Mario Brothers.  But what happens when a developer not only acknowledges that influence, but uses it to trick the player?  Cat Mario (also known as Syobon Action).

Cat Mario

Cat Mario

I don’t want to ruin this game by talking about it much.  A while ago I talked about conceptual models in games.  Cat Mario smashes open your expectations with hilarious results.  This game is frustrating to play, but really funny to watch someone else play.  Download it here.

Tags: , ,

Coming Soon: Adrift

Adrift

Adrift

Adrift, my ocean-bound puzzle game where you control the wind, is almost finished.  I hope to release it in two weeks or so after more testing, finishing up the artwork, and more level design.

Also, I’ll be attending Pycon this weekend.  I’m looking forward to seeing what everyone else is doing with this great language.

Tags: ,

Game Design: Katamari Damacy’s Music

Video game music is often (rightly) associated with electronic music:  with bleeps, sweeps, and creeps.  I don’t always think that’s a bad thing, but it is refreshing to hear someone mix it up.  Today’s example:  Katamari Damacy, a game which brilliantly uses music as part of its overall experience for the player.

While there are a few electronic tracks, the best are in done in a jazzy / lounge singer style which is unexpected and works incredibly well given how wonderfully weird the rest of the game is.  A few tracks for your listening pleasure:

Katamari Damacy remains the only game whose soundtrack I have actually purchased.  I highly recommend you do the same.

Tags: , ,

Game Design: Control Point Maps

Multiplayer adds potentially infinite replayability to a game.  The problem is, once you have all your players connected together, you need to think up something for them to do.  You risk players getting bored if you don’t give them a clear goal.  Generally, there are two things they can be doing:  cooperating or competing.  Today’s post will focus on one specific type of competitive gameplay:  control point maps as made famous in Day of Defeat.

Day of Defeat

Day of Defeat

At first there was deathmatch.  The idea behind it is simple:  lock all the players in a map and give them guns and tell them to go at it.  This is fun at first, but doesn’t involve any kind of group dynamics.  It can quickly grow stale.  So, along came team deathmatch, capture the flag, and finally control point maps.

Control point maps require the two competing teams to occupy various nodes on the game map.  The nodes are arranged in a linear fashion and the proceeding point must be owned to capture the next.  The first team to capture all of the control points on a map wins the round.

Why do I think control point maps are interesting and an example of good game design?  They directly involve the geography of the map.  They allow the map creator to place control points near natural bottlenecks and force players to think strategically.  They also force players to reevaluate their strategies constantly, as when one control point falls or is captured the “front line” with the enemy shifts to a new place on the map.  It creates a very fluid experience which is exciting for the players.

I think we will continue to see this style of gameplay evolve.  Day of Defeat and Team Fortress 2, the two main games that use control point maps, are huge successes.  Other gamemakers would do well to emulate the thought put into their multiplayer modes, as well as think up new ones.

Tags: , , , ,

Algorithm: Lightning

Another simple graphical trick you can play with in games is lightning.  One algorithm for this is to draw a white square over the entire bounds of the screen for a very short time.  The following code can be used to flash every second:

#Lightning.py
#Flash of lightning visual effect.

import pygame

from engine.AtlanSprite import AtlanSprite

class Lightning(AtlanSprite):

“”"
AtlanSprite is one of my game engine classes.
Replace this with your own basic sprite class.
“”"

def __init__(self, m):

“”"
Constructor – set up the counter variable and bounds.
m = whatever container class you are using
“”"
AtlanSprite.__init__(self)
#make the bounds however large your screen size is
self.bounds = pygame.Rect(0, 0, 800, 600)
self.master = m
self.counter = 0
self.flashing = False

def draw(self, surface):

“”"
Called from the main game loop every frame.
Draw a white square when the lightning is flashing.
“”"

if self.flashing:

#see pygame.org’s documentation on the surface.fill() method
surface.fill((255, 255, 255), self.bounds)

def update(self, time):

“”"
Should be called every game frame with the time that has ellapsed.
time = time elapsed in milliseconds

“”"

self.counter = self.counter + time
#flash every second

if self.counter >= 1000:

if not self.flashing:

self.flashing = True

#only flash for 50 milliseconds

if self.counter >= 1050:

self.flashing = False
self.counter = 0

This works best if you have a thunder sound effect to go with it.  The reason it works is that the square is drawn so quickly that the human eye can’t really tell what is going on.  All you see is everything get brighter so it looks like lightning flashed.  Note that you’ll probably want to draw the lightning last in your list of sprites so that it doesn’t get covered up by anything else.

Tags: , , ,