Raven Checkers released
Some interesting items about Raven from a development standpoint:
- One or two player mode, plus an "autoplay" feature that pits the AI engine against itself.
- Cross-platform Tkinter GUI with model-view-controller (MVC) architecture.
- Undo and redo move feature.
- AI opponent uses a standard alpha-beta search algorithm which runs in a background process (using the 2.6 multiprocessing library) with a customizable "think time".
- Board Setup allows you to configure the pieces on the checkerboard, set the number of players, and select which player goes next.
- Flip Board allows you to rotate the board 180 degrees to view pieces from either Black or White's perspective.
My future plans for Raven involve taking it in a different direction than a typical game engine. 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. Since Python is not a high performance language, it's encouragement to make Raven work smarter, not harder.
- Implement a hierarchical task network (HTN) planner 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. The architecture of the planner will be very similar to the one used for Bridge Baron, featured in Chapter 23 of the book Automated Planning.
- 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 the planner, 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.
- Add a save/load game feature, along with some way of annotating different moves in the game. (My thoughts on the "annotation" feature are a little fuzzy, but it's something I want for checkers study.)
- Make the undo and redo work correctly with the background AI processing. Right now, Raven doesn't stop its search if an undo/redo is executed, and it should.
- Create some official distributions so a user doesn't have to checkout the code themselves or require Python to be installed on their system. (Although listed last, this is really something I will likely tackle first, so more folks can enjoy Raven.)