aboutsummaryrefslogtreecommitdiff
path: root/README.md
blob: 3daa53963c081ad5842b0736790aa4c80892bb89 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
# ctak, ctaklm, and ct1986

## Overview

1. ctak is a C library for the game of Tak
2. ctaklm is a line-mode interface to ctak and a computer opponent (for 5x5)
3. ct1986 is a similar interface, but designed for a Raspberry Pi Zero running buildroot and displaying output on a character LCD.
4. cttei is a TEI-speaking game engine for use wherever TEI is accepted.
5. geminict is a special adaptation of ctak for use in a gemini CGI web-server.

## Building for the native platform

    make native

## Building for the Raspberry Pi Zero

Download and extract a recent version of buildroot into the working directory. Edit `BUILDROOT_DIR=buildroot-2020.11.1` in `Makefile` to point to the extracted directory.

    make pi

## The computer opponent

Standard adversarial tree search (α-β negamax) with iterative deepening, using a neural network evaluation function for leaves and also a transposition table keyed on the Zobrist hash.

The architecture of the neural network is a standard, two-layer dense network which is trained exclusively through self-play using td-leaf (see `src/nn_train.py`). As input the network is fed the top layer of the board only as well as `flats used/flats remaining` fractions for both players and a single float indicating the parity of the board.

## License

GPLv3+