Archive for April, 2011
Raven Checkers 0.4 released
I recently released a new 0.4 version of Raven Checkers. Windows download here.

Raven is a checkers game program, for one or two players. While there are examples of excellent & free checkers programs out on the net (such as Martin Fierz’s Checkerboard), Raven has a few differences.
- Open-source code. Raven uses existing open source code as a basis (Martin Fierz’s Simple Checkers evaluation function and Peter Norvig’s search code from the AIMA project) for its AI engine.
- Cross-platform. Raven is written using Python 2.7 using its standard libraries and works on both Windows and Linux with its Tkinter GUI.
- Great for checkers study. Raven allows you to quickly set up board configurations using standard checkerboard notation. You can also describe your moves in the annotation window, and you can save and load games for later study. This is great for working through checkers books and learning techniques and tactics. I’ve included several training files in this version to show how well Raven works for studying endgame strategy.
I’m looking for volunteers to help with Raven! Take a look at future plans below and see if you’d be willing to join the project:
Most checkers or chess programs go the route of deep search combined with perfect opening and endgame databases. These techniques are well-explored and not really all that interesting to me. I plan on making a big change in future versions of Raven by relying more on planning than brute-force search.
Here’s what I’m thinking:
- Implement a behavior tree AI (perhaps using Owyl) that will devise opening themes and endgame strategies. These plans will be based on tactics and endings from Richard Pask’s books Starting Out in Checkers and Play Better Checkers & Draughts, which I use in my own checkers study.
- Add a transposition table and some move ordering to help with alpha-beta search depth. (I will probably make use of the transposition table code in PyChess or Chesstools.) Despite my preference for using a behavior tree for high-level plans, I would like to be able to fall back on good search for the early- and late-midgame when play becomes a bit more muddled.
- Release a Linux distribution. (I’d love to use PyInstaller or cx_freeze for this, but I have little experience. I could definitely use some help with this … my appeals for help to the StackOverflow community have gone largely unnoticed.)
- Switch the search/game tree algorithms to use generators instead of lists to improve speed & memory usage.
- Make the undo and redo work completely correct with the background AI processing.
- Improve the annotation feature (currently using a simple Creole text format) to be more WYSIWYG.
If you’re interested, browse the code or clone it, see what appeals to you in the list above, and let me know you want to jump in by posting on the newsgroup.
2 comments