Simulating a tabletop game can be done for several reasons: to play the game digitally, to create computer opponent(s), or to prove someone wrong. In [Everett]’s case, he used Python to prove which adult was right about basic strategy in a children’s game.
[Everett]’s 5-year-old loves a simple game called Hoot Owl Hoot! in which players cooperatively work to move owls along a track to the safety of a nest. Player pieces move on spaces according to the matching colors drawn from a deck of cards. If a space is already occupied, a piece may jump ahead to the next available spot. The game has a bit more to it than that, but those are the important parts. After a few games, the adults in the room found themselves disagreeing about which strategy was optimal in this simple game.
It seemed to [Everett] that it was best to move pieces in the rear, keeping player pieces grouped together and maximizing the chance of free moves gained by jumping over occupied spaces. [Everett]’s wife countered that a “longest move” strategy was best, and one should always select whichever piece would benefit the most (i.e. move the furthest distance) from any given move. Which approach wins games in the fewest moves? This small Python script simulates the game enough to iteratively determine that the two strategies are quite close in results, but the “longest move” strategy does ultimately come out on top.
As far as simulations go, it’s no Tamagotchi Singularity and [Everett] admits that the simulation isn’t a completely accurate one. But since its only purpose is to compare whether “no stragglers” or “longest move” wins in fewer moves, shortcuts like using random color generation in place of drawing the colors from a deck shouldn’t make a big difference. Or would it? Regardless, we can agree that board games can be fitting metaphors for the human condition.
17 thoughts on “Python Settles Bet About Best Strategy In Children’s Board Game”
This reminds me of many rogue lite video games (road redemption at the moment). You get some points that can be used to make permanent upgrades, but unused points get wasted. The best strategy is upgrading using as many of the available points as possible with as little waste as possible because experience points are won using time and effort. Wasted points=wasted time and effort (minus the fun of playing the game). You may end up with less effective skills in your very next run through the game, but overall you unlock permanent skills faster.
Similarly, wasting fewer space moves overall should get you to the end faster. Depending on random chance and drawing the right card to get a few free short jumps sounds less efficient than choosing a card then deciding which piece will most efficiently make use of that card. You should always reduce the amount of luck you depend on in games of chance.
I enjoyed this story. And if you follow the link to where the programmer documented his work, a commenter on that site improved the code to include a more accurate representation of the cards in the deck. Spoiler alert, LONG strategy still wins but the statistics are a bit different.
Also, as another commenter points out, both of these simulations is missing the Sun Cards, which is the mechanic that makes the players ‘lose’. Also, it is assuming 4 owls, but you can play the game officially with 3 (beginner), 4 (intermediate), or 6 (challenge). I’m going to modify the script to A. use a fixed distribution deck B. add sun cards and C. run the simulation for each number of owls allowed.
The interesting part is that we have so much computing power that it’s easier to make a run a simulation thousands of times than it is to merely write out the problem as a mathematical equation and solve it.
Where have you been. Have you heard about AI, sometimes figuring out an appropriate algorithm is impossible, inconvenient or just too expensive. Throw enough cpu cycles at the problem and you get a solution.
AI? The mid-80s called, and want to talk to you about their Monte Carlo integration methods.
Well that’s pretty much why digital computers were invented. If you knew the equation, you built it in analog, flipped the on switch and read your answer off the dial. Then if you get a problem that you can’t arrive at the equations for you go “What if I could guess the settings of the enemy’s code machines thousands of times a second…” you get https://en.wikipedia.org/wiki/Colossus_computer
This is pretty cool! I play this game with my 4 year old. We played yesterday actually. This question certainly came to my mind early on but it seemed to me that moving further finished the round faster. Maybe the board isn’t long enough for the “stay together’ strategy to be worthwhile, or maybe it’s because there are too few colour choices. Add a few more colours and things might be different.
In the end, I think both strategies miss the mark. I’m having trouble getting my son to understand that if we work together and coordinate our use of cards, we can maximize the effect of each card to jump over several owls at a time to reach the nest faster. So, I think it’s not as simple as “move further or move last”. The fact that we both have 3 cards drawn allows for some degree of strategizing, more like planning moves in chess.
Does the best strategy depend on what your opponent is playing?
The wife is always right….I know because I have a simulation running on this topic since 16 years.
A simulation!? :)
Ramdon colors vs drawing from a deck can certainly make a difference!
I don’t think the colors matter so much, as the number of moves necessary has a maximum value less than the number of color cards. The problem is the sun cards not having the probability modified according to how many have been drawn vs cards remaining.
However, I think there might be an optimal strategy that combines longest move and “no owl left behind” in that, getting the owls more than 5 spaces apart, minimises the opportunity of using longer moves. Although using the longest move strategy does seem like it would mostly do that.
Clearly maximizing move length will win, but the question I would ask is “how do we move so that we maximize move lengths”. Taking the current maximal move length at any turn may not actually maximize the next move’s length. I think we’re in agreeement.
This is a charming game, and I’ll admit to having played it with no adults, only children: it’s a rare children’s board game with that kind of interest. (We have entirely too many “impossible to lose” games…) There are so many cases like this, where my brain is asking what the best strategy is and trying to figure out how I’d design an algorithm to play it… Fun to see someone take it to completion.
So he made a program to tell him his wife was right? No need to simulate that. Its a universal truth
I can see some potential in this project and it could be fun for someone to implement other rules or create a minimax engine, it’s a lot easier for this game than for chess. Both the mentioned strategies are deterministic and I believe strategies should change according to the current board setup.
I wish there where more cooperative games like this. In a winner takes all game you’ll always leave multiple people unsatisfied. Imagine a monopoly but against a simple deterministic program, one that is 100% predictable and easy to understand.
Please be kind and respectful to help make the comments section excellent. (Comment Policy)