Skip to content

ujh/iomrascalai

Repository files navigation

Build Status Coverage Status

Huboard Gitter chat

Iomrascálaí

Iomrascálaí (Gaelic for wrestler, see here for the pronunciation) is an AI for the game of Go/Weiqi/Baduk written in Rust.

Installation

If you just want to play a game against the engine you can download precompiled executables of the releases for Mac, Linux, and Windows. You will also need a graphical interface for playing games against the AI. We suggest downloading GoGui.

Compilation

Iomrascálaí requires the latest unstable (also called nightly) Rust compiler as well as the latest Cargo. Both are generally installed when you download the installers from the Rust homepage.

Playing games

Once you've installed the nightly Rust compiler, Cargo, and GoGui you can use the following shell scripts to compile the program and play games. All these scripts play a game on a 9x9 board with a time limit of 5 minutes by default. You can also play games on 13x13 and 19x19 by passing 13 or 19 as an argument to the scripts.

  • bin/play will compile the program and start a game in GoGui. By default it will assign black to Iomrascálaí. The defaults can be changed easily by editing some constants in the script.
  • bin/play-gnugo will compile the program and start a game against GnuGo. It will assign black to GnuGo and the game can be observed in GoGui. Again, the defaults can be changed by editing the script.
  • bin/play-self will compile the program and start a game between two copies of Iomrascálaí. Just like with the other scripts the game can be observed in GoGui and the parameters can be adjusted by editing the script.

Program parameters

Many parameters of Iomrascálaí can be changed and those changes directly affect the program strength.

You set the parameters by supplying a TOML formatted configuration file when starting the program with either the -c or --config command line flag. A great way to get started is to capture the output of -d (or --dump) into a file and edit the variables. This is the default configuration and lists all possible variables with their default values. See the api documentation for details on what these variables do. Just use the search on top and enter the name of the configuration variable. It should take you to the page that lists the struct that defines it (e.g. PriorsConfig for a variable in the [priors] block in the config file).

Development

See the issues or HuBoard for planned features and bugs. Join the chat for discussions and help.

Please note that this project is released with a Contributor Code of Conduct. By participating in this project you agree to abide by its terms.

License

Iomrascálaí is licensed under GPLv3. See the LICENSE file for the complete license text. The scripts in bin/ and misc/clop are licensed under the MIT license.