Morat is a game playing framework, along with implementations of several games. It includes some general purpose libraries (alarm, time, thread, random), and some game specific libraries (compacting tree, gtp, time controls).
It specializes in 2-player, perfect information, zero sum, deterministic games, especially placement games (where RAVE works).
So far it supports 6 games:
- Gomoku
- Havannah
- Hex
- Rex - Reverse Hex (ie try to force the opponent to connect their edges).
- Y
- Pentago
Potential games:
- Generalize Gomoku into M,n,k
- Star or *Star
- Domineering or Cram
- Dots and Boxes
- Connect Four, or maybe a more general Connect m,n,k.
- Go
Potential variants:
- Gomoku on a hex board
- non-regular or non-symmetric boards
- Misere any game (ie make rex a variant of hex instead of its own game)
- 1,2,2 (first turn place 1 piece, then each player alternates placing 2 pieces)
- Various swap rules
So far it supports 3 algorithms:
Potential algorithms:
- Probability Search
- Conspiracy Number Search
The goal is to make the algorithms game independent, and make it easier to implement new games with strong players. There is quite a bit of work left to make this a reality, so the current work is just to make the game code more similar and then move the code into common libraries.
The primary interface is GTP (Go Text Protocol), which can be used from:
- the command line
- a UI like HavannahGui
- a webserver and interface
- Linux (probably works on any unix)
- C++ tool chain (g++ or clang)
- Check out the code from github
- Run
make
to compile the code - Run:
./morat-gomoku
for Gomoku./morat-havannah
for Havannah./morat-hex
for Hex./morat-rex
for Reverse Hex./morat-y
for Y./morat-pentago
for pentago
Run make test
to run the test suite. Current test coverage is pretty bad.
If you make any changes to the code and want to update the dependencies, just make clean
, or rm .Makefile
.
This projected is licensed under the terms of the MIT license.