Design Document: Flame Fighter

Made for Pirate Software's Game Jam 14 (link)


Premise

A deadly fire is spreading. Limit the devastation by taking control of a fire fighting robot that can be used to extinguish the flames.


Gameplay

Overview

Each level is a grid of tiles. Some of the tiles are burning.

The player has a deck of cards that correspond to actions that can be taken by a robot that is also present in the grid.

Using their deck, the player must extinguish the flame before the fire spreads to every tile.

Mechanics

Level

Each level is a 2D grid of tiles.

The level is complete when all burning tiles are extinguished.

The level is failed if all of the non-robot tiles are burning.

Turn

Each turn the player draws cards from their deck until their hand is full or there are no cards remaining.

The player may play as many cards as they are able each turn. Any unplayed cards remain in their hand.

At the end of the turn, each burning tile increases in intensity or spreads to nearby tiles (if it is at maximum intensity)

Cards

The player's cards are drawn from a deck that is defined at the start of the level (what is in the deck depends on the game mode)

Cards can be played if the resources are available and, in the case of movement, the tile is not blocked.

When played, a card's actions are applied, the player's resources are consumed, and it is recycled by default.

Recylced cards go back into the deck once it is empty. The deck is shuffled when this happens.

Cards may also be discarded. Discarded cards are removed from the deck for the remainder of the level.

Tiles

Resources

Items

Currently, there are 3 types of items.

Items are obtained by moving onto their tile during a level.

Items that are on a burning tile are destoryed.

Modes

There are two main modes:

Puzzle mode is mainly meant to be used as a tutorial and expose the player to the different mechanics

Rogue mode offers replayability and deckbuilding elements


Deverlopment Info

Tools

Code

Flame Fighter is written in Rust

It is currently distributed as a wasm binary + html wrapper

Source code is available at github