A game tree search engine.
To build, simply run:
$ make # TODO: Explain linking.
$ ./bin/tgb [options]
Running the test cases
$ make test
Given an engine to a game played with two players on a 2 dimensional board, we will use MPI and some sort of tree search/ optimization algorithm (most likely negamax with alpha beta pruning). To recursively search the game space, and return optimal moves, given a game state.
For more information go, have a look at
Thus, TGB Will link the engine at compile time, and the result is a binary which will find optimal moves for that given game using the above described methods.
Below are the current implemented engines that can be used with TGB.
Note, argument params and types are subject to change. This is simply a rough roadmap.
The game engine must provide the following functions. What follows is a rough specification of what this engine must provide.
The most up to date interface can be found in
int islegal(int *board, int *move)
int *move(int *board, int *move)
int eval(int *board, int player)
struct state *gamestate(int *board)
statewill have the following fields.
Certain games can have a move that results in a certain amount of steps that happen (e.g promoting a piece in chess), too handle this, the library should implement an event handler(s) which are simple function pointers which exec the given event.
This abstract bot will essentially be a more advanced version of what I implemented in my third year concurrency course, excepte it has the advantage of working given an engine for any game (that implemented the above interface correctly).
Given the above interface, the engine will allow us to implement a driver that will allow users to play the game, which by extension will allow us to implement a bot that plays the game against itself.