Game Development - Spar Redux

The development of Spar has been really good for me in different aspects. It's allowed me to practice coding something with a rudimentary AI and it's ultimately allowed me to test my game over and over again to find flaws in the design.

Spar is a head-to-head card game inspired by the fast countering-your-counter fighting sequences in martial arts films. I wanted a game that would take less than five minutes to play.

Version 1.0
The most basic break down of the game is players play cards from their hands that are equal to or greater than the current card in play. There's a little bit of nuance in that the lowest valued card (1) is the only card that can defeat the highest valued card (5).

Players are also allowed to play pairs only if it is the same value as the current card in play. Then players would be forced to play pairs equal to or greater than the current pair in play.

If you couldn't play a valid card, you'd take damage equal to the card in play. Damage was randomly discarding cards from your hand. The opponent would then score a point. If there were no longer any cards to draw from the deck, the game would be over. The player with the highest number of points wins.

Things I Learned
After 100 games or so, many of which were played while doing bug hunting and implementing features, I learned a few things about the design of the game. Some were good. Some were not so good.

- The game really was under five minutes. That was good.
- The game ended a little too quickly. With a hand size of 5 and only 5 of each card, the draw deck sat at 15 cards. You'd burn through that very quickly.
- There was no better strategy than just playing the highest card all the time or pairs when you could. This bothered me.

Version 2.0
Because of I have the code in place, I'm able to make tweaks to the game rules and test them almost immediately. This is such a wonderful feeling. It doesn't validate the "fun" of my game, but it certainly allows me fast ways to iterate on the design to try new things to make it more fun.

Some things I'm trying in new versions of the game:

- Adding a higher limit to the cards in the deck (seven instead of five)
- Players only discard a single card when a valid card can't be played (or two if against a pair)
- Edit the distribution of cards (4 of everything, 5 of everything, fewer of the high cards, etc.) I'm still running into the issue where simply playing the highest valued card is the best strategy. I need to consider a way to address this where the value of the cards themselves don't hold the power, but rather the context from which you play the cards (like in En Garde -- a 5 isn't necessarily better than a 3, it depends where the players are on the board).

What I Learned from Version 2.0
It plays better having more cards in value range, but it still suffers from "let me just play the highest card all the time". With an equal distribution of 4 cards each, the 7 only has 6 and 7 cards that can beat it out of the 28 in the deck. You're really just better off playing those all the time.

Variety issue felt fixed somewhat, but the high card issue not.

Version 3.0
Taking a cue from En Garde, I thought it would be good to add another environmental element that doesn't necessarily remove the "value" of a card like in En Garde, but plays against another constraint that needs to be considered. I wanted to curb the strategy of always playing the highest card.

The "Chi Limit" is the amount of energy that be played in sum before the players are naturally repelled from each other and the hand is reset. So if the Chi Limit is 21, then every card played goes toward this limit. Once it reaches 21 or over, the hand is reset. So simply playing high cards all the time will have you reach the limit sooner and reset the opportunity to actually score a point.

But also playing smart, such as playing a 6 to reach 20, will force the player to either take the hit or force them to burn through a 7 for no reason.