So, a few weeks back, I played some of the beta of Gwent, an online two-player deck-building card game. This post analyzes a very simple version of the game -- one where the cards have value but no text, and both players always draw the exact same cards -- and shows that in this simple version, perfect play results in a tie.

## Basic Rules

Let's start with the rules.

Gwent is a two-player card-based point-accumulating game played over three rounds. Players begin the game by drawing 10 cards, of which they may redraw three. During each round, players take turns playing cards. Each card changes the players' points totals. If a player doesn't want to play any more cards during the round they can "pass". The round is over when both players pass.

The player with the higher point total at the end of the round is the winner. In the case of ties, both players are considered to have won. If either player has reached two wins, that player wins the game. If both players win simultaneously, the game is considered a draw. If neither player has reached two wins yet, another round is played.

Points totals are reset at the end of each round. Players replenish their hands by drawing two cards after the first round and one card after the second round.

The first player for the first round is determined randomly; for subsequent rounds, it is the player that won the previous round.
I forget what happens in the case of ties, but it's not crucial for the analysis below. (I *think* that the lead switches.)

Before the game begins, each player constructs a deck of 25 (or more) cards. These decks are where each player draws their cards from. The contents of this deck is limited in various ways that I won't discuss, since part of the conceit of this post is that we're going to ignore the existence of decks and assume each player draws the same cards.

This treatment of the rules also neglects discussions of Factions, Leaders, and Card Text. Briefly, each player must choose a Faction when building their deck. This Faction limits which cards may be used in the deck, and may provide a global ability [e.g. "redraw an extra card at the start of each round"]. Each player must also choose a Leader. A Leader is essentially an extra card that is always drawn at the start of the game. Finally, each card may have complicated Card Text which specifies how it interacts with the point totals and other game state. For the discussion that follows, none of these things will be considered.

## Simple Gwent: Provably Boring

In "Simple Gwent", which I will talk about for the rest of the post, all cards have a positive point value, each player starts with the same hand, and both players will draw the same cards between rounds.

It turns out that Simple Gwent *always* ends in a draw if played competently.
Specifically, I will demonstrate that each player can force a draw, regardless of what the other player does.
I break this strategy into four cases, depending on the state of the game.
In each case, the players are labelled **F** and **S**, "first to act" and "second to act".
Note that labels may change between rounds.

### Case Zero-S: Score 0-0, Same Cards; **S** to draw/win

In the first round, the second player can guarantee a draw by playing a simple strategy:

- Play whatever
**F**just played.

This always results in a draw with identical cards remaining, at which point player **S** uses strategy One-F or One-S to force a draw/win (I don't recall if lead switches on a draw).

### Case Zero-F: Score 0-0, Same Cards; **F** to draw/win

In the first round, the first player can guarantee a draw by playing a very basic strategy:

- Pass.

This results in one of two outcomes:

- Player
**S**plays at least one card and wins; in which case Player**F**uses strategy Behind-S next round. - Player
**S**passes, which results in a draw, in which case Player**F**uses strategy One-F or One-S (depending on if the lead switches in a draw) next round.

### Case Behind-S: 1-0 (**F** winning), **S** Has Card Advantage; **S** to draw/win

In the second round, when **S** has a strict superset of **F**'s cards (that is, **S** has all the cards **F** has, and at least one additional card), **S** can force a win/draw by playing as follows:

- If
**F**plays, play the same card. - Once
**F**passes, play the cards in your hand that**F**does not have in their hand, then pass.

This guarantees a win for **S**, bringing the score to a 1-1 tie, and making both player's hands the same.
At this point, **S** uses strategy One-F to guarantee a win/tie.

### Case One-F: Score 1-1, Same Cards; **F** to draw/win

In a round where both players have already won and have the same cards, the first player can guarantee at least a draw by following this strategy:

- Play all cards.

This results in one of two outcomes, depending on what player **S** does:

- If player
**S**plays all their cards, resulting in a tied match and game. - If player
**S**does not play all their cards, and player**F**wins the match and game.

### Case One-S: Score 1-1, Same Cards; **S** to draw/win

In a round where both players have already won and have the same cards, the second player can guarantee at least a draw by using this strategy:

- Play all cards.

This results in one of two outcomes, depending on what player **F** does:

- If player
**F**plays all their cards, resulting in a tied match and game. - If player
**F**does not play all their cards, and player**F**wins the match and game.

## Conclusions and Notes

The above demonstrates that Simple Gwent is **boring** whenever both players draw the same hand and know it.
In other words, [full] Gwent is very much a *deck-building* game -- your basic goal as a player is to make sure that you end up with a better draw than your opponent.
Of course, this also suggests that it would be interesting to figure out just what a good draw looks like (obviously, it should be high-scoring; but perhaps it is more important that it have two [three?] high-scoring subsets).

Also,
the "Pass First" strategy seems really weird in this context -- shouldn't **F** take the opportunity to get an early win?
Not always!
Consider a simplified scenario where players start with one card of value **a**, draw one card of value **b** < **a** after the first round, and a card of value **c** after the second.

- Round 1: First player has {
**a**}, second player has {**a**}: First player plays**a**, second player passes. First player wins. - (players draw
**b**) - Round 2: First player has {
**b**}, second player has {**a**,**b**}. Then, either:- If first player passes, second player plays
**b**(winning), then wins the last round because**a**+**c**>**b**+**c**. - If first player plays
**b**, then second player plays**a**(winning), then wins the last round because**c**+**b**>**c**

- If first player passes, second player plays

In other words, playing first in simple Gwent can lose you the game. Maybe there's a take-away there for real Gwent (though I think some of the card text is written to explicitly mitigate this problem).

Finally, I should note that in the process of coming up with this reasonably simple proof, I also wrote some reasonably less simple code to explore Simple Gwent game trees and visualize game states. It's not particularly complete, since I ended up not using it for the final post. But if you're interested, you can check it out; it prints some things to the console and also shows a reasonably-nicely styled game state, but mostly it's some half-baked hacks.

## No comments:

## Post a Comment