Hi, I'm Richard. This is my box.

richard@schneiderbox.net || GitHub || LinkedIn


Game-playing AI engines

As a computer science undergrad, I was the AI developer for our senior capstone competition project. This involved building a game-playing AI for a specified (often little-known) abstract strategy game. Student projects compete against each other, and in a final round play a team of human testers who have spent much time learning the game.

After I graduated, I was recruited to be one of the testers, and have been a tester every year since 2013. Many years I have built engines for the testing team to practice against. I particularly like the Monte Carlo tree search algorithm, because it can often play strongly with little or no domain knowledge. This makes it useful when learning a game from scratch; the newly-built AI will often teach us a lot as it continually beats us!

Here are the engines I have built. Unfortunately, at the moment they require an external UI (developed by a fellow tester) for a good playing experience. I'm hoping to change that.

2021 Kelvandor, for the game Node

2019 Theseus, for the game Quoridor

2018 Picket, for the game Breakthrough

2016 Indy, for the game Quadtria

2013 Pilgrim, for the game Creeper

2012 Plato, for the game Gyges


Over the years I've devleoped a number of small games, mostly for game jams. I did a year-and-a-half of One Game A Month (which is sadly inactive now), and have also participated in a few Ludum Dares and one Global Game Jam.

Here are some of the games:


Turtle Troubles

Cartographer's Keep


Nova Runner



Forlorn Four


Wormhole Snake

I also maintain a port of the classic Mac OS game, Maelstrom.


I wrote a simplistic Markov chain to generate lines for characters from Jurassic Park. The results aren't impressive, but they are occasionally amusing.