Provides generic classes that generate deterministic 2 player strategy game behaviour.


Interface Summary
Board A game board interface that can form the basis of any deterministic 2 player strategy game middle tier.
Move Describes a move that a player can make on a Game Board.

Class Summary
Game Supplies all business logic required by any deterministic 2 player strategy game that implements Board.
Plan Plan holds information on optimal moves to complete a turn.

Package Description

Provides generic classes that generate deterministic 2 player strategy game behaviour. This Java package was produced by Paul Sullivan based on his earlier work in C++ based on his earlier work in C. Each work is an evolutionary improvement both in design and language technology. Java will always be slower than C++ but it is still the best language for platform independence.

Evolution of the Game For Two package began in 1985 when Paul received as a birthday present, a book called The Joy of Computer Chess by David Levy. In that year, Paul developed a Wari game called Kalah in C utilizing most of the algorithms described in the book. Kalah was displayed on a data voice VT220 terminal connected by twisted pair to the Unix based Nortel Meridian DV1. At this time the game engine was not abstracted for re-use. The Meridian DV1 had a 68000 processor running at around 6MHz.

Then in 1995, Paul refactored the game engine portion of Kalah to be completely reusable by any strategy game. This was achieved using C++ templates to optimize by favoring inline instructions and minimizing vtable indirection. Kalah ran on Windows 95.

In 2000, Paul translated his C++ game engine into the existing Java Game42 implementation. It is easy to reuse the Game42 engine because all of the complex AlphaBeta search optimizations are encapsulated within protected classes Turn and Plan. Turn searches possible moves looking way ahead and recording the best Plans for consecutive turns. Recorded Plans are cached and reused by Game for optimizing future searches.

In 2012, Paul created an HTML5 canvas based UI called Merrelles Mobile, by compiling the original Java down to Javascript using Google Web Toolkit and interestingly Merrelles Mobile is only 5 times slower than the original Java Applet.

At present, 2014, processor speeds are approaching 8GHz, approximately 1000 times faster than in 1985! Classes and Interfaces

N.B. All static members are constant.