An Implementation of an "AI" Player for Knockabout

This java project is an implementation of an "AI" player for the game Knockabout. The core of this artificial player is an expected alpha-beta search algorithm with a 4-parameters, hand-tuned heuristic, although other search/heuristic methods have been tested. Please consult the search section for more information. Significant improvements of the underlying data structure are also documented in the gamemodel package.

Important Notice

If TIMEOUT issues arise, please decrease the initial value of the field knockabout.search.AlphaBetaSearchAlgorithm.timeLimitMillis.

Usage

Usage: java knockabout.GameClient <server> <port>

Sources:

Java 1.4.1 API reference and "The Java Tutorial" (both at http://java.sun.com)

Stuart Russell and Peter Novig: Artificial Intelligence A Modern Approach (2003) p.170, 177

Doina Precup's lecture notes (http://www.cs.mcgill.ca/~dprecup/)

Description of package knockabout

The package knockabout contains classes that handle the communication of the player with the server. Most of the code is similar to the code provided on the course web page.

Note: in this text, expectiminimax (expected alpha-beta) is sometimes referred as minimax (respectively alpha-beta) for brevity.