My family and I enjoy playing board games. In the last few years, we’ve been introduced to several new games that have unique game play aspects.

Ricochet Robots

Ricochet Robots has a 16x16 grid of squares with a 2x2 center obstacle. There are walls placed around the grid and 17 “target” grid cells, each with a different symbol. The target cells all have walls on two adjacent sides. There are five robots placed around the board, each one of a different color. The robots can only move in straight lines and can’t stop until they run into a wall or another robot.

Each round, a small disk is turned over. The disk matches one of the target cells. The color of the disk indicates which robot must be moved to the matching target cell. For example, if the yellow circle disk is turned over, then the yellow robot must be moved to that cell.

Each player studies the board and tries to come up with a sequence of moves of any number of robots that results in the “active” robot reaching the correct target cell. It will usually be necessary to move inactive robots to new locations in order ricochet the active robot into the target cell. Each player is doing this in his/her head - no one touches the board. Once a player comes up with a solution, he/she calls out the number of moves in the solution. A sand timer is turned over and the other players have until the timer runs out to come up with an equal or shorter solution. The player with the shortest solution then implements their solution. If the solution works in at most the number of moves called, he/she wins the disk and the next round starts. Once all of the disks have been played, the player with the most disks has won the game.

I find that there are three intriguing aspects to the rules of the game:

  1. There is no limit on the number of players that can play at one time.

  2. If two players find a solution of the same length, the tie goes to the player with the fewest disks won, even if another player called out a solution first. This tie-breaking rule has a strong influence on keeping the game close. Even if one player tends to be fast at finding solutions, a slightly slower player can “steal” the solution when behind.

  3. New players tend to take about half a game to get up to speed. Because everyone gets to see how the winner’s solution works, there is a tremendous social knowledge sharing that happens. That makes everyone better at the game.

  4. I’ve introduced a number of people to this game. I find that programmers tend to love the game, while others don’t enjoy it very much. It certainly seems like the game lends itself to the same kind of thinking that programming requires.

As a programmer, I immediately wanted to write a computerized player for this game. I didn’t have a chance to do so until recently when I was invited to speak on the subject at Mountain West Ruby Conference in early March. I’ll be talking about the design techniques that go into building a solver for this puzzle game.

Thanks to Trevor Lalish-Menagh for introducing me to this game at Ruby DCamp 2013.


Hanabi is a cooperative card game. The deck consists of five different colors of cards numbered from 1 to 5. The cards represent a fireworks show that is under construction. The deck has three 1’s of each color, two 2’s, two 3’s, two 4’s, and one 5. The object of the game is to cooperate with the other players to build up each color of card in sequence from 1 to 5.

The players are not allowed to look at their own cards. Each player holds his/her hand of cards facing away so that only the other players can see them. At each turn, a player can do one of three things: 1) Give another player a hint, which costs time. There are eight time tokens, and one is lost each time a hint is given. Hints can only be of the form, “These cards are all red”, or “These cards are both twos.” 2) Play a card. If the card fits into the sequence being built, then all is fine. If the card does not fit, then the fuse on the fireworks burns down. After three such mis-plays, the fireworks explode and the game is over. 3) Discard a card. Discarding buys back a time token. But if a discard is chosen badly, it might become impossible to complete the fireworks show since there are only limited numbers of each card available.

I find the following aspects interesting about this game:

  1. It is a cooperative game. I haven’t played many of these, so I find this aspect a refreshing change.

  2. You can’t look at your own cards. I’ve never played a game that has this rule, and it’s really hard to get used to it. Every habit from other games makes me want to see my own cards.

  3. Trying to balance between giving your teammates enough information to make good plays while not wasting all of the hints too early.

  4. Giving hints that are helpful and not confusing.

Thanks to Kevin Craine for introducing me to this game at RubyConf 2014.


I find it fascinating that such interesting behavior can emerge from seemingly simple rules. Playing Ricochet Robots without the tie-breaking rule often results in an early blow-out win by one player unless everyone is very evenly matched. With the tie-breaking rule, even new players have a chance to stay close as they learn new and better ways of finding solutions.

Thinking about such emergent behavior reminds me to keep my software systems as simple as possible so that people can use them new and interesting applications I hadn’t thought of. Over-complicating and over-constraining my systems inhibits this kind of creativity.