Resolving Combat in Bear Trap’s Solitaire System

When I began developing Bear Trap, it was already a tight and competitive two-player game, much like its spiritual ancestor Sekigahara. However, the designer P.R. Daniels had ambitions to go beyond this and include a solitaire mode that would allow a single player to enjoy the game by themself. Bear Trap is a block game with a lot of hidden information, which makes designing a solitaire mode quite challenging, but Paul has come up with some clever systems to facilitate this. In this article, I want to look closely at just one aspect of Bear Trap’s solitaire mode: how combat is resolved, which highlights several of the core design principles that underlie it. For an introduction to the combat system in Bear Trap, you can read Paul’s earlier InsideGMT article here.

Combat in Bear Trap involves playing cards to reveal and commit previously hidden blocks, two things that are very hard to simulate for solitaire play. Paul’s solution to this is simple: first, the solo opponent doesn’t have a regular hand of cards; and second, it treats all of its own hidden blocks as ‘potential’ units whose type is undetermined until they are committed to combat. This is managed in the following way: its current hand size is tracked numerically, and when it needs to commit a block in combat, it draws a card from a special ‘bot’ deck to see what kind of block it is, with its status determined by how the block is currently positioned. This deck uses block symbols in roughly the same proportion to those found in the blocks themselves, ensuring that the solo opponent will not be able to use an unrealistic number of any type of block. The solo opponent cannot ‘play’ any more cards than its tracked hand-size allows, and it can of course only commit blocks that are eligible to be committed, as normal. Along with a flowchart that determines what choices the solo opponent will take during combat (inspired by the similar chart used for Labyrinth’s solo opponent), it is possible to completely automate the solo opponent’s combat decisions in a way that maintains the satisfying tensions of the multiplayer game (please note that all images used in this article are playtest graphics and not representative of the final design).

Two prototype cards from the Soviet ‘bot’ deck

Let’s consider an example: the Soviet solitaire opponent has activated three blocks and moved them together to try and clear my single Insurgent block on the road to Kandahar (a key requirement for the Soviet victory condition), triggering combat. They also have a fourth block in Farah to the west of the combat area, while I have two additional blocks in adjacent areas. My single block in the combat area is a Fortified Mujahideen, while my two adjacent blocks are both Lashkar in the Ambush posture, meaning that they may be able to contribute to the combat. The three moving Soviet blocks are stood upright as normal, indicating that they are Mobilized, while the adjacent Soviet block in Farah is facedown, which indicates that it is either Fortified or in the Fire Support posture—its exact status will depend on what is required of it in combat. Furthermore, it is yet to be determined what kind of unit each Soviet block is, which will be decided by drawing cards from the bot deck as each block is committed. Finally, the solitaire opponent’s current hand-size, as tracked on a special solitaire aid mat, is currently 5 (the solitaire opponent does not hold a physical hand of cards like the player does, but we still keep track of how many cards it is considered to be holding, which will restrict what actions it can take and when it will initiative a Resupply turn).

The start of our example combat—imagine that all three green Insurgent blocks and the three red Soviet blocks in the combat area are all stood upright, while the fourth Soviet block in Farah is facedown.

As the attacker, the solitaire opponent has Initiative and must commit a block to the combat—they will continue committing blocks until they either lose the Initiative, run out of ‘cards’ (as tracked by their hand-size marker), or run out of blocks to commit. Consulting the combat flowchart for the solitaire opponent, they will first commit a Mobilized block in the combat area, and we draw a card from the bot deck to see what kind of unit it is, revealing a card with a Soviet Infantry icon at the top right. It doesn’t matter what kind of Soviet blocks are actually in the combat area; we simply place one on the drawn bot card to note what kind of unit it represents for this combat and increase the Soviet Impact counter to ‘2’—the strength of a Mobilized Soviet Infantry. We also reduce their hand-size marker to ‘4’ to indicate that they have played a card. At this point, I could play a Defectors card but choose not to, and Initiative then passes to me as the Soviet solitaire opponent is winning the combat.

I choose to commit my Fortified Mujahideen in the combat area, playing a Sunni Mujahideen card from my hand to do so. At this point, we check to see if the solitaire opponent can play the KhAD card in response by revealing another card from the bot deck—if it has ‘KhAD’ marked at the top, which the card we reveal does, then the bot is assumed to have played the KhAD card to initiate a Loyalty Challenge against me. Let’s assume for this example that the flipped card does in fact have the KhAD. We reduce their hand-size marker to ‘3,’ flip the KhAD marker on the solitaire aid mat to ‘played’ (to indicate that they cannot use KhAD again until they reshuffle), then resolve the Loyalty Challenge. Luckily, I am holding a second Sunni Mujahideen card, which I ‘reveal’ to my solitaire opponent to block the Loyalty Challenge, before placing my block face-up and increasing the Insurgent Impact marker to ‘4’ (the strength of a Fortified Mujahideen). I am now winning the combat, so Initiative returns to the Soviet solitaire opponent.

With one block committed on each side, I am winning the combat with 4 Impact to the Soviets’ 2. The Mobilized Soviet Infantry would be represented in practice by any red block placed on a Soviet Infantry bot card.

Consulting the combat flowchart again, we see that the Soviet solitaire opponent will now commit their adjacent Fire Support block in Farah. Because they are attacking, they don’t need to play a card to do this, so we just draw from the bot deck to determine what kind of block it is, redrawing until we find a card with the Infantry or Armor icon (the two Soviet blocks capable of Fire Support). We draw a card with the Armor icon and place the block in Farah on top of it to indicate that it is assumed to be an Armor unit for this combat. I cannot play a Defectors card against Armor, so we simply increase the Soviet Impact marker to ‘5,’ and Initiative returns to me. 

I am now losing the combat again, and I am forced to commit both of my adjacent Ambushing Lashkar to turn the tide. I only have two Lashkar cards in hand, which could make me vulnerable to a Loyalty Challenge, but I know that the solitaire opponent has already played their only KhAD card, so there is no risk of this. I play both Lashkar cards, reveal the two blocks, and increase the Insurgent Impact marker to ‘7’ (Ambushing Lashkar are effectively each worth 1.5 Impact, totaling 3 Impact as I have two of them). I am winning the combat again, and Initiative returns to the solitaire opponent.

All of my Insurgent blocks are committed, and I am winning the combat, but the Soviet solitaire opponent still has two blocks to commit and three cards in ‘hand’.

The combat flowchart indicates that they will commit another Mobilized block in the combat area, and the card I draw from the bot deck indicates that it is a DRAF unit. I place a Soviet block on this card, increase the Soviet Impact marker to ‘7,’ and reduce the hand-size marker to ‘2.’ As Soviet Impact is now equal to Insurgent Impact and I have no further blocks to commit, the combat ends in a Soviet victory. I don’t lose any blocks, but my Mujahideen is forced to retreat, and all of my committed blocks become Disordered. The Soviet blocks are all placed back upright, indicating that they are Mobilized, and the drawn bot cards are all returned to the bot deck—the identity of these blocks is now unknown again and will be determined the same way the next time they are committed to combat. I draw one card to replace the card I played, and the solitaire opponent ‘draws’ three cards by increasing its hand-size marker back to ‘5’ (we also reduce its deck-size marker by three to indicate that it is getting closer to triggering a reshuffle).

The outcome of the combat: my Insurgent forces are defeated and vulnerable to future attacks.

From this quick example, you can see how Bear Trap’s solitaire mode is able to preserve the tension and uncertainty of the multiplayer game while keeping combat quick and straightforward to resolve. The identity of the solitaire opponent’s blocks will always be hidden from the player until they are committed and becomes hidden again after combat, meaning you will never know exactly what you are up against. The combat flowchart and bot deck also determine when a Loyalty Challenge will be triggered and which Strategy Cards might be played, maintaining all of the key aspects and decision points of the multiplayer. In future articles we will cover other aspects of Bear Trap’s solitaire mode, such as how its strategic posture is determined and how it chooses to activate and move blocks during its turn.


Previous Bear Trap articles

Joe Dewhurst
Author: Joe Dewhurst

Please note: I reserve the right to delete comments that are offensive or off-topic.

We'd love to hear from you! Please take a minute to share your comments.