April 28, 2010

Malaria

The first assignment in our Values at Play game design class was to design a card game that would educate about malaria prevention. My game:


Malaria

Malaria is a cooperative game for 5 players, who must use nets, medications, and insecticides to stave off the threat of malaria in their village.


Setup

There are three decks of cards: the Defense deck, the Mosquito deck, and the Identity deck.
  1. Shuffle each deck separately.
  2. Deal one Identity card to each player
  3. Deal three Defense cards to each player

Procedures

Malaria alternates between two phases, Day and Night, until the game is won or lost.

Day:
  1. Each player draws a card from the Defense deck.
  2. Players may exchange cards freely.
  3. Players may play any number of Defense cards to protect themselves from mosquitoes.

Night:
  1. Each player draws a Mosquito card.
  2. If the Mosquito card shows more mosquitoes than the player is protected against, that player must keep the Mosquito card, bringing them closer to death.
  3. All other Mosquito cards and all played one-time-use Defense cards should be placed at the bottom of their respective decks.

Defense Cards

The Defense deck is composed of the following cards:
  • Quinine: Protects against one mosquito. Must be discarded at the end of the Night.
  • Medication: Protects against two mosquitoes. Must be discarded at the end of the Night.
  • Bed Net: Protects against one mosquito. Does not have to be discarded. Only one Bed Net can be used per player in any round. Extra Bed Nets are wasted. Can be upgraded with Insecticide.
  • Insecticide: A player can place an Insecticide card on a Bed Net card to permanently extend the Net's protection to two mosquitoes per round.

Winning and Losing

Collecting 10 Insecticide cards (not including those attached to Bed Nets) means that the village can spray their houses with insecticide and kill the mosquitoes. All players win the game.

If any player collects the number of Mosquito cards indicated on their Identity card, then that player dies, and all players lose.

April 19, 2010

Aurora Update

Menus are working, including cool special effects. Three unique and interesting levels are in place. Basic systems work and are fun.

More importantly, the performance of the game just got better by a factor of LOTS. At first, having hundreds of units floating around freely and constantly checking for collisions was just too much to handle. I was able to make that problem go away most of the time with a more efficient algorithm, but the problem was still very much apparent when large groups got close to each other (i.e. a battle). The game would stutter, go down to a couple frames-per-second, and recover as soon as most of the units disappeared.

I finally pulled out the adult dev tools. I downloaded and used NProf, a .NET profiler. It records how much time is spent in the different functions of the game. I discovered that 80% of my difficulties were coming from a single function. It involved a lot of checking lists for members. I figured out that I could greatly trim the amount of checking performed, did so, and figured out a bunch of other performance hacks along the way. Performance still dips during a battle, but down to a still-playable rate. I doubt anyone will mind, now. Victory!

Still left to complete:
- Endgame conditions and an end-of-game finale effect
- Improve visuals and effects for building / destruction events
- Retool all my sound effects
- Tweak the soundtrack songs to make sure they're perfectly aligned with the game beat
- Polish
- Package
- Ship

The end is in sight. I'm feeling awfully optimistic about this.