Closed kyleaforrester closed 3 years ago
indeed, there is no support for tournament. this tool is mainly intended for engine developpers, and as one of them, I am not convinced about the need for such features. if you really need to run tournaments, it's easy to do so with an external script (eg. bash, perl, python, ruby; whatever works for you).
It's doable, but introduces some parsing problems. I would have to add a separate command option telling the program how many engines to expect, and that command would have to come first. and there's the problem of SPRT...
@lucasart
I did agree with what you said in your first answer (about the need of a tournament feature). But since you decided to make it, congratulations. :)
What is the syntax to select the tournament type? It seems that the -tournament type
syntax is not accepted.
I tried this (without specifying anything):
./c-chess-cli \
-log \
-each tc=4 option.Threads=1 \
-engine cmd=../sapeli/sapeli_170 \
-engine cmd=../octochess/octochess \
-engine cmd=../galjoen/0401/bin/galjoen_linux \
-games 2 -concurrency 1 -openings test/chess960.epd -random -repeat \
-pgnout out.pgn
Here is what I get:
[roland@localhost c-chess-cli (master)]$ sh test.sh
[1] Started game 1 of 4 (Sapeli 1.70 vs Octochess)
[1] Finished game 1 (Sapeli 1.70 vs Octochess): checkmate
Score of Sapeli 1.70 vs Octochess: 0 - 1 - 0 [0.000] 1
[1] Started game 2 of 4 (Sapeli 1.70 vs Octochess)
[1] Finished game 2 (Sapeli 1.70 vs Octochess): checkmate
Score of Sapeli 1.70 vs Octochess: 0 - 2 - 0 [0.000] 2
[1] Started game 3 of 4 (Sapeli 1.70 vs Galjoen 0.40.1)
[1] Finished game 3 (Sapeli 1.70 vs Galjoen 0.40.1): checkmate
Score of Sapeli 1.70 vs Galjoen 0.40.1: 0 - 3 - 0 [0.000] 3
[1] Started game 4 of 4 (Sapeli 1.70 vs Galjoen 0.40.1)
[1] Finished game 4 (Sapeli 1.70 vs Galjoen 0.40.1): checkmate
Score of Sapeli 1.70 vs Galjoen 0.40.1: 1 - 3 - 0 [0.250] 4
Two observations. 1° Why does Sapeli always play white? 2° When a game is finished, it is not clear which engine checkmated the other.
Regards.
Roland
What is the syntax to select the tournament type? It seems that the
-tournament type
syntax is not accepted.
There is no syntax, because there is no feature to select the tournament type. Only gauntlet. For example, if you do 2 rounds of 4 games with (e1, e2, e3), you get:
Round 1:
Round 2:
Demonstration with the test/engine (which you can compile with ./make.py -p test
):
$ ./c-chess-cli -each cmd=./test/engine depth=1 -engine name=e1 -engine name=e2 -engine name=e3 -rounds 2 -games 4
[1] Started game 1 of 16 (e1 vs e2)
[1] Finished game 1 (e1 vs e2): 1/2-1/2 {3-fold repetition}
Score of e1 vs e2: 0 - 0 - 1 [0.500] 1
[1] Started game 2 of 16 (e1 vs e2)
[1] Finished game 2 (e1 vs e2): 1/2-1/2 {insufficient material}
Score of e1 vs e2: 0 - 0 - 2 [0.500] 2
[1] Started game 3 of 16 (e1 vs e2)
[1] Finished game 3 (e1 vs e2): 1-0 {checkmate}
Score of e1 vs e2: 1 - 0 - 2 [0.667] 3
[1] Started game 4 of 16 (e1 vs e2)
[1] Finished game 4 (e1 vs e2): 1/2-1/2 {stalemate}
Score of e1 vs e2: 1 - 0 - 3 [0.625] 4
[1] Started game 5 of 16 (e1 vs e3)
[1] Finished game 5 (e1 vs e3): 1/2-1/2 {50 moves rule}
Score of e1 vs e3: 1 - 0 - 4 [0.600] 5
[1] Started game 6 of 16 (e1 vs e3)
[1] Finished game 6 (e1 vs e3): 1/2-1/2 {insufficient material}
Score of e1 vs e3: 1 - 0 - 5 [0.583] 6
[1] Started game 7 of 16 (e1 vs e3)
[1] Finished game 7 (e1 vs e3): 1/2-1/2 {insufficient material}
Score of e1 vs e3: 1 - 0 - 6 [0.571] 7
[1] Started game 8 of 16 (e1 vs e3)
[1] Finished game 8 (e1 vs e3): 1/2-1/2 {insufficient material}
Score of e1 vs e3: 1 - 0 - 7 [0.562] 8
[1] Started game 9 of 16 (e1 vs e2)
[1] Finished game 9 (e1 vs e2): 1/2-1/2 {50 moves rule}
Score of e1 vs e2: 1 - 0 - 8 [0.556] 9
[1] Started game 10 of 16 (e1 vs e2)
[1] Finished game 10 (e1 vs e2): 1/2-1/2 {insufficient material}
Score of e1 vs e2: 1 - 0 - 9 [0.550] 10
[1] Started game 11 of 16 (e1 vs e2)
[1] Finished game 11 (e1 vs e2): 1/2-1/2 {50 moves rule}
Score of e1 vs e2: 1 - 0 - 10 [0.545] 11
[1] Started game 12 of 16 (e1 vs e2)
[1] Finished game 12 (e1 vs e2): 1/2-1/2 {insufficient material}
Score of e1 vs e2: 1 - 0 - 11 [0.542] 12
[1] Started game 13 of 16 (e1 vs e3)
[1] Finished game 13 (e1 vs e3): 1/2-1/2 {insufficient material}
Score of e1 vs e3: 1 - 0 - 12 [0.538] 13
[1] Started game 14 of 16 (e1 vs e3)
[1] Finished game 14 (e1 vs e3): 1/2-1/2 {50 moves rule}
Score of e1 vs e3: 1 - 0 - 13 [0.536] 14
[1] Started game 15 of 16 (e1 vs e3)
[1] Finished game 15 (e1 vs e3): 1/2-1/2 {stalemate}
Score of e1 vs e3: 1 - 0 - 14 [0.533] 15
[1] Started game 16 of 16 (e1 vs e3)
[1] Finished game 16 (e1 vs e3): 1/2-1/2 {insufficient material}
Score of e1 vs e3: 1 - 0 - 15 [0.531] 16
Two observations. 1° Why does Sapeli always play white?
it's just a display issue. the colors are correctly alternated, as you can see in the PGN. will fix that.
2° When a game is finished, it is not clear which engine checkmated the other.
fixed
Informative answer. Thank you. I will test the new version.
Two observations. 1° Why does Sapeli always play white?
it's just a display issue. the colors are correctly alternated, as you can see in the PGN. will fix that.
fixed
Done. Round-robin was the last item here.
Is c-chess-cli only used for 1v1 engine matches? It seems that a tournament format is not supported. I couldn't find any tournament documentation and my following attempt only played the first 2 engines against each other:
c-chess-cli \ -games 2 -concurrency 4 -openings 4movesnoob.epd -repeat -tc 2+0.05 \ -draw 8,10 -pgnout $(date +%d%h%Y%H%M%S).pgn \ -cmd Ethereal:stockfish_7:stockfish_8:stockfish_9:stockfish_10:stockfish_11:stockfish_classical:stockfish_12:stockfish:stockfish:stockfish:stockfish:stockfish:stockfish:stockfish \ -options :::::::::EvalFile=nn-97f742aaefcd.nnue:EvalFile=nn-cad20e613db1.nnue:EvalFile=nn-25f202fd6eaa.nnue:EvalFile=toga3-0.4.bin:EvalFile=frosty-0.2.bin:EvalFile=ninu-0.2.bin
Is there any planned support for running an engine tournament?