Ataxx information site
This website is all about Ataxx.
Well, mostly Ataxx AI and how to let it battle against other programs.
- So what is this site then?
- Interfacing your Ataxx program to the outside world
- URLs (engines, libraries)
AI is short for artificial intelligence - a computer is then performing a task as if it were performed by a human brain.
Ataxx is a board-game. A rather complete description can be found on wikipedia.
So what is this site then?
This site is about Ataxx-AI: how to write your own Ataxx-AI and how to let it play against other Ataxx games.
A program needs to speak to the outside world. For that it can have a graphical user interface (GUI), a text-interface or socketcommunication.
To be able to talk to other programs, it complicates things if it only has a GUI.
Usually Ataxx programs use the UAI protocol. UAI is a derivative of the UCI protocol (used for chess programs).
The changes are the format of the FEN-string, the format of the move-string, and the notation of the initialize-commands; that's it!
Where a chess program would respond to "uci", an Ataxx program listens for "uai" (it tells the program to use the UAI protocol).
To start a new game, the board sends "uainewgame".
Moves are in the format 'xy' or 'xy-xy'. E.g. "bestmove a2" or "bestmove a1b2". A pass is written as "bestmove 0000".
FEN strings (the textual representation of the board) is like in UCI: board-text turn halfmoves fullmoves. For a description, see this wikipedia-page.
The difference is that we only have two types of pieces - stones -: a red (white/player-1, 'x') and blue (black/player-2, 'o') one.
To get reasonably sure that a change that you made to your Ataxx program increases its strength, you need to let it play a lot of games against other programs (think in the order of 15000 games). Then determine the elo-rating and use that to see if change improved things.
To determine the elo-rating, you can let your program output PGN-files (cuteataxx and acraps can do this for you). Then process the pgn-files using Ordor or Bayesian-Elo.
There are two programs that allow you to automatically perform test-tournaments:
- cuteataxx is a C++ program (like cutechess-cli), configured via a .json-text file
acraps is a Python-script doing the same, configured via switches in the script-file itself
These are two libraries that may help you write an Ataxx program. They take away the hassle of generating move-lists, board representation, and so on.
open source Ataxx "engines"
- TikTaxx was the strongest Ataxx program, written in C++
- GoTaxx an Ataxx program written in Go
- AtaxxZero AlphaZero style engine for Ataxx written in Python
- LuaTaxx an engine written in Lua
Best results sofar are with alpha/beta tree search program. Other techniques are MCTS.
Other algorithms from other board-games that apply to Ataxx are late move reductions, transposition tables (and thus Zobrist hashing) and iterative deepening.
Also see this article at linuxonly.nl.
On this server, a game server runs as well. Address: server.ataxx.org, port 28028. The exchange of commands + replies is regular ascii terminated with cr+lf.
The First and second line the Ataxx engine send are "user ...", "pass ...". After that the regular UAI protocol commences.
The first time you connect with that username, it is registered with the password you've entered, unless the username already existed; then you will be disconnected. You can make as many accounts for as many programs as you like.
All statistics can be seen at: http://server.ataxx.org/.
The source-code of this server AND an example client-wrapper (enabling you to use a regular Ataxx engine without modifications) can be retrieved from GitHub.
An alternative: GGS is "generic game server" which allows you to play games against others. There's an interface for Ataxx (in C++) available.
In the ##chessprogramming IRC-channel on libera.chat, there's a lively discussion about Ataxx.
In www.game-ai-forum.org there's a sub-forum specially for Ataxx.
On thingsesque.com you can play manually the game of Ataxx in a web-interface!
Anything missing? Something needs clarification? Or your cat is sick and want to talk about it? Send an e-mail to: email@example.com