The goal of this project is to
provide to programmers and game enthusiasts a system in which all aspects
of perfect knowledge games can be examined in endless detail. This not
only includes:
a basic minimax or alpha-beta
search engine,
opening and endgame databases,
but it also includes:
a generic user interface,
and
a generic programming interface
to any perfect knowledge board game .
My goals in providing this framework
and the above features are to:
reduce programmer effort
by eliminating the need to code up:
the standard minimax with
alpha-beta pruning algorithm,
a basic user interface,
opening game and end game
lookup algorithms,
game load/save logic,
and
game clock management.
increase programmer game
enthusiast enjoyment by allowing the programmer to focus on only necessary
tasks of providing logic to:
control making moves and
reversing moves,
score the game from a
given player's perspective,
list legal moves at a
given point in the game, and
serialize the game state
(for transmission to disk or network).
The list of unnecessary tasks
can of course always be overridden by the programmer when time allows. However,
if the foremost desire of the developer or enthusiast is one of:
determining whether a game
concept works,
having the joy of playing
an arbitrary game against a computer in the shortest possible time,
avoiding debugging your own
messy tree search algorithm, or
looking at the details of
how a computer plays a perfect knowledge game,