What free programs do exist to comment chess games? For Windows, Linux, and Mac.
I know that ChessBase and ChessOK Aquarium can do it. However, it is my understanding that they are not free.
Chess Stack Exchange is a question and answer site for serious players and enthusiasts of chess. It only takes a minute to sign up.
Sign up to join this communityWhat free programs do exist to comment chess games? For Windows, Linux, and Mac.
I know that ChessBase and ChessOK Aquarium can do it. However, it is my understanding that they are not free.
I have a program called Chess Artist. It is written in python, open source and there is windows executable in case you don't like the python script.
You can access the help by sending the command help
from command prompt.
PS F:\Github\chess-artist> ./chess_artist.exe --help
In that example, the chess_artist.exe is located in F:\Github\chess-artist
, it is up to you where you put the exe file after you download it.
Output
Read pgn and analyze games in it or analyze epd file or test engines with epd test suites
optional arguments:
-h, --help show this help message and exit
-i INFILE, --infile INFILE
input pgn or EPD filename
-o OUTFILE, --outfile OUTFILE
output filename
-e ENGINEFILE, --enginefile ENGINEFILE
input engine filename
--enginename ENGINENAME
input uci engine id name, if not specified engine id name will be used.
-n ENGINEOPTIONS, --engineoptions ENGINEOPTIONS
input engine options, like threads, hash and others example: --engineoptions "Hash value 128,
Threads value 1"
--bookfile BOOKFILE input book filename
--eval {static,search}
eval can be static or search. static uses static evaluation of Stockfish
--movetime MOVETIME input analysis time per position in ms, (default=1000)
--depth DEPTH input analysis depth, (default=0)
--movestart MOVESTART
input move number to start the analysis, this is used when analyzing games, (default=8)
--moveend MOVEEND input move number to end the analysis, this is used when analyzing games, (default=1000)
--puzzle-score-margin PUZZLE_SCORE_MARGIN
if deep score less shallow score is this margin or more then save the position as puzzle,
(default=15 centipawn). If this is low more positions will be saved.
--log Save log to chess_artist_log.txt
--job {analyze,test,createpuzzle}
type of jobs to execute, can be analyze or test or createpuzzle. To create puzzle: --infile
games.pgn --job createpuzzle, To analyze pgn: --infile games.pgn --job analyze, To annotate
epd: --infile positions.epd --job analyze, To test engine with epd: --infile test.epd --job
test
--wordycomment There are more words in the move comments such as better is, planning, excellent is, Cool is
and others.
--color COLOR enter color of player to analyze, (default=None) can be white or black
--player PLAYER enter player name to analyze, (default=None). Player opponent moves are not analyzed. If you
use --player do not use --player-and-opp.
--player-and-opp PLAYER_AND_OPP
enter player name to analyze. Player opponent moves are also analyzed, (default=None). If you
use --player-and-opp do not use --player.
--loss This is used to analyze games where a player lost his/her game. Example to analyze lost games
by Mangnus, use: chess_artist.exe --player "Carlsen, Magnus" --loss ... other options. To
analyze all games with non-draw results: chess_artist.exe --loss ... other options
--draw This is used to analyze games where a player has drawn his/her game. Example to analyze drawn
games by Mangnus, use: chess_artist.exe --player "Carlsen, Magnus" --draw ... other options.
To analyze all games with draw results: chess_artist.exe --draw ... other options
--min-score-stop-analysis MIN_SCORE_STOP_ANALYSIS
enter a value in pawn unit to stop the engine analysis, (default=-3.0). If the score of the
game move is -3.0 or less chess_artist would no longer analyze the position to look for
alternative move.
--max-score-stop-analysis MAX_SCORE_STOP_ANALYSIS
enter a value in pawn unit to stop the engine analysis, (default=3.0). If the score of the
game move is 3 or more chess_artist would no longer analyze the position to look for
alternative move.
--game960 A flag to enable chess960 of a variant game which will be used for python-chess.
Example
Let's analyze all the games of caruana where he lost from the current olympiad held in India.
https://theweekinchess.com/assets/files/pgn/olym22.pgn
In --movetime 3000
, the 3000 is in milliseconds in other words, the 3000 is just 3 seconds
.
PS F:\Github\chess-artist> ./chess_artist.exe -i "olym22.pgn" -o "analysis_olym22.pgn" -e "stockfish_15_modern.exe" -n "Hash value 128" --eval search --movetime 3000 --movestart 12 --moveend 80 --job analyze --wordycomment --player "Caruana, Fabiano" --loss --min-score-stop-analysis -5 --max-score-stop-analysis 5
Example output
[Event "44th Olympiad 2022"]
[Site "Chennai IND"]
[Date "2022.08.06"]
[Round "8.2"]
[White "Caruana, Fabiano"]
[Black "Gukesh, D"]
[Result "0-1"]
[BlackElo "2684"]
[BlackFideId "46616543"]
[BlackTeam "India 2"]
[BlackTitle "GM"]
[Board "1"]
[ECO "B31"]
[EventDate "2022.07.29"]
[Opening "Sicilian"]
[Variation "Nimzovich-Rossolimo attack (with ...g6, without ...d6)"]
[WhiteElo "2783"]
[WhiteFideId "2020009"]
[WhiteTeam "United States of America"]
[WhiteTitle "GM"]
[Annotator "engine: Stockfish 15, program: Chess Artist v3.2.0"]
{Hash 128mb, Threads 1, analysis 3.0s per position, move score is in pawn unit,
positive is good for white and negative is good for black}
1. e4 c5 2. Nf3 Nc6
3. Bb5 g6 4. O-O Bg7
5. Bxc6 bxc6 6. Re1 Qc7
7. h3 d6 8. e5 dxe5
9. d3 c4 10. Nc3 cxd3
11. cxd3 Nh6 12. Nxe5 {+0.54} Nf5
13. Bf4 {+0.65} Qb7 14. Na4 {+0.67} (14. d4 O-O 15. g4 g5 16. gxf5 {+0.77}) f6
15. Nf3 $5 {+1.01} O-O 16. d4 $2 {+0.70} ({Better is} 16. Nc5 Qxb2 17. Qa4 Qb5 18. Qa3 {+1.36}) g5
17. Bh2 $2 {+0.39} ({Superior is} 17. Nc5 {+1.06}) h5 18. Re4 $2 {+0.38} ({Preferable is} 18. Nc5 {+0.94}) Qd7
19. Qc2 {+0.49} ({More useful is} 19. Qd3 Rf7 20. Rd1 Bf8 21. Qe2 {+0.75}) Rf7 20. Rae1 {+0.51} (20. Rd1 Bf8 21. Qe2 Rg7 22. Nd2 {+0.53}) Bf8
21. Qe2 $1 {+0.39} (21. Rd1 Rg7 22. Nd2 g4 23. hxg4 {+0.37}) Qd5 22. Nc3 {+0.48, with a better king safety} Qd7
23. Qc4 $2 {+0.00} ({Superior is} 23. Rd1 a5 24. Na4 Qa7 25. Nc5 {+0.54}) Qb7 24. b4 $6 {-0.16} ({Worthier is} 24. Na4 Qb5 25. Qc2 Ng7 26. g4 {+0.47}) e6
25. Rb1 $5 {+0.12} Qd7 26. Rbe1 {-0.15} ({More useful is} 26. a4 {+0.32}) Qb7
27. Rb1 {-0.18} Qd7 28. a3 $2 {-0.76} ({Brilliant is} 28. a4 a5 29. bxa5 Ba6 30. Qxe6 {+0.51}) a5
29. Na4 $2 {-0.84} ({More valuable is} 29. bxa5 Rxa5 30. a4 Ba6 31. Qxe6 {-0.64}) Qd8 30. bxa5 $5 {-0.75} Rxa5
31. Nc5 $4 {-2.15} ({Brilliant is} 31. Qc2 {-0.47}) Qd5 32. Qe2 {-2.11} Rxa3
33. Rd1 {-3.08} ({More valuable is} 33. Qe1 {-2.42}) Rfa7 34. g4 {-5.15} hxg4
35. hxg4 {-4.58} Nh6 36. Bg3 {-5.13} e5
37. Nxe5 {-5.77} fxe5 38. Rxe5 {-5.81} Bxg4
39. Qd2 {-6.72} Qf3 40. Rxg5+ {-8.37} Rg7
41. Re1 {-10.42} Bh3 42. Bd6 {-14.62} Bxd6
43. Rxg7+ {-17.75} Kxg7 44. Qg5+ {-319.77} Kh7
45. Ne4 {-319.89} Qxe4 {WhiteBlunder=1, WhiteBad=6} 0-1
It can comment on king safety
, piece mobility
and passed pawn
evaluation with the use of eval
command from stockfish, depending on the position. It also has threat comments, like intending to play ...
and followed by ...
At the end it will comment on the number of blunder (??) and mistake (?) each player has made.
Example screenshot from HCE gui after loading the analyzed games.
The comments preferable is
, more valuable is
are due to the flag --wordycomment
in the command line.
You may save the command line to a batch
file to easily rerun the program.
ana.bat
./chess_artist.exe -i "olym22.pgn" -o "analysis_olym22.pgn" -e "stockfish_15_modern.exe" -n "Hash value 128" --eval search --movetime 3000 --movestart 12 --moveend 80 --job analyze --wordycomment --player "Caruana, Fabiano" --loss --min-score-stop-analysis -5 --max-score-stop-analysis 5
If you have other features to include in this command line tool, you may post it in github, I might implement it.
Notes
Do not use --depth n
option, just use --movetime m
.
If you re-run the analysis command and maintain the same output file specified from -o
option, games that are already analyzed will not be analyzed again.
This program does not support analyzing games in parallel. But if you want to do so, just split your input games. For example you have 4-cores and want to use 2 cores, split your input pgn file into 2 and run each pgn file in chess_artist. Be sure they have different output filenames specified from the -o
option.
To download all files in the chess-artist repo in github, open your powershell on windows 10 and send the command below.
git clone https://github.com/fsmosca/chess-artist.git
Example:
PS F:\Tmp> git clone https://github.com/fsmosca/chess-artist.git
Cloning into 'chess-artist'...
remote: Enumerating objects: 1135, done.
remote: Counting objects: 100% (153/153), done.
remote: Compressing objects: 100% (77/77), done.
remote: Total 1135 (delta 84), reused 134 (delta 67), pack-reused 982
Receiving objects: 100% (1135/1135), 45.46 MiB | 2.42 MiB/s, done.
Resolving deltas: 100% (594/594), done.
PS F:\Tmp> cd chess-artist
PS F:\Tmp\chess-artist> ls
Directory: F:\Tmp\chess-artist
Mode LastWriteTime Length Name
---- ------------- ------ ----
d----- 2022-08-08 12:01 Book
d----- 2022-08-08 12:01 Engine
d----- 2022-08-08 12:01 EPD
d----- 2022-08-08 12:01 PGN
-a---- 2022-08-08 12:01 435 .gitignore
-a---- 2022-08-08 12:01 441 analyze_atomic_game.bat
-a---- 2022-08-08 12:01 339 analyze_chess_game.bat
-a---- 2022-08-08 12:01 125661 chess_artist.py
-a---- 2022-08-08 12:01 1495 create_puzzle.bat
-a---- 2022-08-08 12:01 35815 LICENSE
-a---- 2022-08-08 12:01 8686 README.md
-a---- 2022-08-08 12:01 35 requirements.txt
There is no exe file here, get it at release page.