Skip to content

Gomoku (Five in a Row) game manager with a powerful built-in AI, written in Java with a clean, minimal interface.

License

Notifications You must be signed in to change notification settings

haslam22/blackstone

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

blackstone Build

A Gomoku (Five in a Row) game manager featuring a powerful AI written in Java. Download the latest release here (runnable jar). Requires Java 11 +.

There are two main components in this project:

Features

  • Loading of external AI's supporting the Piskvork protocol (Download page)
  • Freestyle Gomoku games against the built-in Negamax AI
  • Beautiful, fully resizable and flexible Gomoku board, supporting high DPI displays
  • Configurable game settings including time per move, time per game and board size
  • Easy saving and loading of positions with move order maintained

Requirements

  • Java 11 +

Install

Regular use

  1. Download and install a Java 11 distribution, e.g. Eclipse Temurin 11
  2. Download the latest Blackstone release from the releases page
  3. Run java -jar blackstone-<version>.jar to start the GUI

Development setup

Requires Java 11 and Maven 3.8+

  1. Clone the project and open in any IDE that supports Maven projects (IntelliJ recommended)
  2. Run the Maven install goal to build the project and run the tests
  3. Run the main method in Launcher.java to start the GUI

Known limitations of AI performance

  • Position evaluation is slow. The evaluation is computed in real time, when it could be computed using a lookup table. This lookup table also has the potential to be very small (around 256x256 entries). Similarly, threat calculation can be achieved via the lookup table. This would decrease the amount of computation performed per position - leading to a much higher number of positions evaluated per second. There's a branch in progress for improving both position evaluation and threat calculation here.
  • No detection of double threats. Double threats are basically a win, and this would reduce the prevalence of a Horizon effect where we can't see a win/loss just over our depth limit.
  • No transposition table. This could be used to cut off large subtrees in the alpha-beta search.
  • No VCT (Victory by Continuous Threats) search. See academic paper here describing this search algorithm that works in the space of threats. Can be very powerful in determining a win/loss in a given scenario.

About

Gomoku (Five in a Row) game manager with a powerful built-in AI, written in Java with a clean, minimal interface.

Topics

Resources

License

Stars

Watchers

Forks