Last month I wrote a post describing a few uses for spreadsheets in game design. Based on the feedback, I decided to write a quick follow up on how I’ve been using spreadsheets in my own game design.

I’ll be using Monster Zoo to illustrate my examples. Here’s a link to the public spreadsheet of cards @ Google docs.

Identifying Possible Balance Issues

Monster Zoo is a deck building game consisting of over 180 cards, with more than 40 unique cards. Keeping all those cards in balance is really important, because if one card is extremely overpowered or underpowered, game play fun is effected.

So how do you understand whether or not your game is balanced? My approach has been to create a cost curve for all cards (refer back to this post for more on cost curves). This allows me to easily see whether or not in general Monster Zoo is balanced.

You can see that most of the costs and benefit numbers are packed closely together. Cards that cost 3 points have a benefit of around 2-4. Cards that cost 4 points have a benefit of around 3-6. Etc. This looks decently balanced to me.

But what about individual cards? While the game overall may look balanced, there still could be specific cards that are broken.

To take a look at individual card balance, you can chart out costs and benefits by each card.

Now I can easily see that “Fifi Oogly” might be out of balance with the rest of the cards. That’s a card I need to keep an eye on in playtesting. One thing to keep in mind is that everything does not need to be perfectly balanced. It all depends on what type of game you are designing. Some games need to be much more balanced, while other games might purposefully be designed to have a swing mechanic or some unbalancing feature.

Faction / Group Design

In Monster Zoo, there are three types of Monsters: Boogly, Oogly, and Zoogly.

Each of these Monster types represent a different feel and mechanic in the game. Boogly monsters help players draw faster and perform more actions. Oogly monsters help players acquire more resources and builds up in power over time. Zoogly monsters help players move monsters around and are otherwise utility type cards.

Along with different mechanics, I wanted to give each of the Monster types it’s own unique cost “feel”. Since Boogly monsters were all about being faster and drawing more cards, I thought it would make sense for Boogly cards to cost less in general. This would help players get a sense of speed and action.

For Oogly cards, I took the opposite approach and created more higher cost Oogly monsters. So this gives the Oogly monsters a slower feel, but more impact.

Zoogly monsters are more about utility, so the cost is more evenly spread.

Here’s how it looks in the current version of Monster Zoo:

Charting out the number of cards, the card cost, and the card type gives me a quick look at how well I’ve differentiated the Monster types. You can see that there are more cards with lower costs for Booglies and more cards in the higher ranger for Ooglies. Zoogly monsters are relatively mixed.

So even though the costs for each Monster type are very different, we know that each card is still balanced (from our cost vs benefit chart above.)

Modeling Gameplay

What if you want to get an idea of how the game plays over time? You can model out basic turns by calculating values for typical actions: catching monsters, food in hand, deck value, etc.

This shows me that Monster Zoo game play is linear, throughout the game you gain Monsters at the same rate (obviously this depends on which Monsters you are catching). So decisions you make in the early game and the late game are generally just as impactful.

But what if I wanted to make the late game more swingish, with larger points and bigger rounds?

I could change a few values and end up with something like this:

This type of gameplay has more cards at play in the later game and rounds in the late game are more important. More monsters are caught and each hand has a higher food value.

Take a look at the public spreadsheet if you want to play around with the values and see how the chart changes.