Designing Kindo: Solving Stalemates without adding new rules

A week after releasing the first beta of Kindo, we were already receiving a massive amount of feedback from our testers. Besides the warm support and the kind words, we mostly heard things we expected. The app had a few UI bugs, and the AI could use some optimization (to avoid getting stuck or losing every time against a specific dominant strategy). Which was great, as it's exactly the sort of things you want to discover in beta, and not after the full release!

But there was one issue that concerned us more. Players found out a way to end up in a stalemate. Well, two different stalemate situations in fact, one offensive and the other defensive.

Reviewing the data

The 3x3 stalemate

The first one, let’s call it the “3x3”, was perfectly illustrated by this tweet from one beta tester:

The "3x3" stalemate situation

So what do we see here?

  • Player 1 (in yellow) can capture a huge chunk of Player 2's territory by going up (green arrow). It will also give them a bonus play for their next turn.
  • Then Player 2 (in red) is forced to do the same, or otherwise the game would be pretty much over for them. So Player 2 captures the exact same territory back (purple arrow), gets a bonus play and we’re back to Player 1’s turn.
  • Obviously, nobody would want to play something different here as it would mean losing the game.

The “stagnant” stalemate

The second issue usually happened with experienced players, or against the hardest AI. The issue here was that the game didn't provide a strong enough incentive to play agressively. When you did, you were at risk of getting your tiles cut off, which means losing territory AND giving away bonus plays to your opponent. That’s definitely not something you’d want to do, right?
So both players would enter a ballet of cautious, defensive plays, none of them being able to take the advantage.


To sum up, we had identified 2 issues:

  • a very specific symmetrical cut-off situation
  • not enough incentives to attack, compared to safer defensive tactics

Designing the solution

Step 1: Reassessing the existing design

A few months earlier, we had implemented a rule stating the following:

You give a bonus play to your opponent if you capture all the tiles they played on the previous turn.

That’s why there’s a square displayed at the center of the tiles your opponent just placed on the board. It created a way to trick your opponent into playing something they didn’t want to, either pushing you back while giving a bonus play away, or playing weaker, less interesting tiles for their own strategy.

But this solution had its own limits. Depending on the situation, you could safely capture some of the marked tiles without being put at risk of giving away a bonus play to your opponent, as long as one of their marked tiles remained untouched this turn.
From there, you can end up with both players pushing each other back while increasing the size of their territory and placing fortifications elsewhere, which several replays sent to us illustrated clearly.

So while it fixed some gameplay issues, it was an "all or nothing" rule you could easily play around. After working on this game for so long, and with the objective of keeping as few rules as possible, we felt like we could do better.

Step 2: Simplifying

We had been through this before with our initial bonus play rule. At first, you won more bonus plays depending on the size of the territory you would cut off. But it was hard to visualize and players weren’t sure why they would get 1 or 2 bonus plays. Then we decided to reward 1 bonus play per cut off.
We saw a reduction in rewarded bonus plays. Players didn’t get as many bonus plays as before and the game stopped steamrolling so fast. But it didn’t remove the possibility altogether. If you manage to cut your opponent’s tiles off at two different locations in the same turn, you still end up getting 2 bonus plays for your next turn. It’s easier to understand and visualize on the game board, and it feels way more special because it happens less often (and you actually know why you got those 2 bonus plays).

After analyzing the 3x3 stalemate issue, I realized that we could solve it the same way, by simplifying our “recently played tiles” rule above. Here’s the new version:

Each marked tile you capture gives a bonus play to your opponent.

If you look at the screenshot again, you’ll realize that Player 1 has to cross a marked tile to cut their opponent’s territory off. Playing this would mean that Player 2, who already has 3 plays for the next turn, would go up to 4!
And 4 plays would allow Player 2 to get around Player 1’s marked tiles and cut even more territory, therefore avoiding the stalemate.

But the reason why this simple modification of an existing rule got us even more excited was that it also solved the second issue. The tiles you play are now very expensive to capture on your opponent’s following turn. Would your opponent capture the tiles you just played if they knew that it got you to 4 plays on your next turn? Not likely.

With that change, you could now deploy tiles right in the heart of your opponent’s territory knowing that this would either give you 1 or 2 bonus plays on your next turn, or force your opponent to defend and play somewhere else on the board. That’s a pretty good incentive to attack, right?

Player 2 (in orange) played 3 tiles at the bottom near Player 1's King, forcing them to play defensively

But that’s not all. Since those tiles are very expensive to cross, they make for a perfect temporary defense as well! Here’s a screenshot where I deployed my tiles in a way that kept an empty position in the heart of my territory. When my opponent got in an advanced attacking position, I played it, ensuring me a bonus play for my next turn if my opponent captured the marked tile to keep their attacking momentum going.

Step 3: Playtest, playtest, playtest

Once we designed and implemented the solution, we needed to play it. A lot. We measured the gameplay tweaks we introduced, and found out that they did not differ much from the previous ruleset in terms of pace, Player ½ balance, or accessiblity. Our AI vs AI simulation gave us roughly 50% win ratio for both players, and it was the same for our small set of games against real players. A few of our most experienced players got access to a new build and helped us figure out the pros and cons of this modification before we decided to release a new beta to a larger group of testers.

Here’s one “issue” we discovered pretty early: When you get close enough to the opponent’s king on one edge of the board, it’s pretty much over. Indeed your opponent would give you a bonus move by pushing you back and you would reach the king even faster. It happens mostly when your opponent already has fortifications on the two tiles surrounding the king, facing the inside of the board. But we found a simple solution that leaned on everything we had built up: we let players redirect their existing fortifications in any direction. It costs one play, just like every other action in the game.
We had thought about doing this for a long time but never really had a situation that justified it. Early fortifications sometimes felt like dead weight later in the game, but it wasn’t bothering us that much, until we were sent replays of this new gameplay issue.

I talked about placing tiles as temporary defensive “blockers” above. Well, combining one with a redirected fortification became a really good defensive move! With these modifications, the possibility space remained manageable enough for focused, experienced players to plan ahead, while being still as much fun as before to play “as it comes” for beginners. Maybe even more, as two players rushing and playing very offensively could quickly get way too many bonus moves for their own sanity.

Paul Vauvrey

Paul Vauvrey