Skip to content

kz04px/autaxx

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

About

Autaxx is a C++ engine for the board game Ataxx. It uses traditional alphabeta methods such as null move pruning, killer moves, and a transposition table.


About the game

Ataxx is a two player, turn-based, perfect information board game created in 1988.
Wikipedia article


Build instructions

git clone https://github.com/kz04px/autaxx
mkdir ./autaxx/build
cd ./autaxx/build
cmake ..
cmake --build .

UAI protocol

UAI stands for "Universal Ataxx Interface" and is a slightly modified version of the Universal Chess Interface protocol. The only differences are that instances of 'c' for 'chess' have been replaced by 'a' for 'ataxx', and that the FEN format has been altered to suit the game.


FEN strings

"x" are player one's pieces. "o" are player two's pieces. Numbers represent the number of empty squares. Dashes represent blocked squares. The final character shows the current side to play.
Examples:

x5o/7/7/7/7/7/o5x x 0 1
x5o/7/2-1-2/7/2-1-2/7/o5x x 0 1


Play without a GUI

Autaxx supports the 'manual' mode that should be more suitable for entering commands manually than the UAI protocol. A board will be printed in text and moves can be entered with chess-like algebraic notation e.g. g1g3, b6, etc


Ataxx tools

Some potentially useful python scripts for Ataxx engine development, among other things, can be found here:
Ataxx tools


Example UAI usage

uai
id name Autaxx
id author kz04px
option name hash type spin default 128 min 1 max 2048
option name debug type check default false
option name search type combo default alphabeta options alphabeta minimax mostcaptures random
uaiok
isready
readyok
uainewgame
go depth 5
info depth 1 nodes 15 score cp -135 time 0 pv f1
info depth 2 nodes 45 score cp 261 time 0 pv f1
info depth 3 nodes 565 score cp -147 time 0 pv g2 b1
info depth 4 nodes 1213 score cp 273 time 0 pv g2 b1 f1 a2
info depth 5 nodes 6787 score cp -53 time 1 pv f2 b1 e1 a2 e1c1
bestmove f2
quit


Credits

  • Special thanks to connormcmonigle for the generation of NNUE weight files and giving me the rights to include them here.
  • Catch2 - A modern, C++-native, header-only, test framework for unit-tests, TDD and BDD - using C++11, C++14, C++17 and later (or C++03 on the Catch1.x branch)
  • dblue for tuning weights