yishn / KataJigo

Play against a KataGo that strives for a Jigo instead of opponent destruction.
MIT License
16 stars 2 forks source link
ai baduk board-game engine go katago weiqi

KataJigo

Play against a KataGo that strives for a Jigo instead of opponent destruction.

Playing against KataGo can be particularly frustrating. Even before midgame starts, KataGo may have accumulated an overwhelming lead in points in the best case, or the game could have turned into a merciless, bloody slaughter of your groups in the worst case, leading to your inevitable demise, leaving you sad and empty inside.

KataJigo is an experiment. It will let KataGo always aim for a half point win, or a draw if playing with an integer komi, slipping into the role of a capable teacher who's looking down from far above, playing a teaching game (in theory, at least).

<img src="./jigo.png" alt="Jigo game of GnuGo (B) against KataJigo (W) with 7 point komi" width="500" />

Jigo game of GnuGo (B) against KataJigo (W) with 7 point komi

Installation

  1. Download both KataGo and KataJigo.
  2. Install and set up KataGo according to the instructions.
  3. In the same folder as KataGo, drop in the executable of KataJigo.
  4. Now, you can use katajigo as a drop-in replacement of katago.

If you already set up KataGo in Sabaki, all you need to do is replace the path to KataGo with the path to KataJigo in the same directory.

How does this work?

Using the analysis feature of KataGo, we'll consider all the moves with non-negative scoreLead and a winrate that is better than 50%. Out of those moves we'll pick the move with the lowest scoreLead and the highest winrate.

Building

Make sure you have Node.js installed. First, clone the repository and install all dependencies with npm:

$ git clone https://github.com/yishn/KataJigo
$ cd KataJigo
$ npm install

Run the following command to create an executable in the ./bin directory:

$ npm run build