Il programma è un lavoro ‘work in progress‘ tuttaltro che terminato.
PGNviewer3D è scritto in Gdscript con Godot (https://godotengine.org/) un avanzato sistema di sviluppo gratuito dedicato ai giochi.
PGNviewer3D è un programma che permette di riprodurre su una scacchiera virtuale molto realistica una partita a scacchi memorizzata in un file PGN. Il PGN (Portable Game Notation) non è l’unico formato per salvare le partite di scacchi, ma è quello universalmente più diffuso.
Un file PGN può contenere una sola partita o più partite. In internet si trovano file PGN con milioni di partite.
Una prima versione di PGNviewer3D l’avevo scritta con il linguaggio BGE (Blender Game Engine) e pubblicata sul mio sito il 15 maggio 2018. qui l’articolo (http://www.avelino.it/wa/pgnviewer3d).
Non essendo più supportato il BGE, sono passato a Godot. Premetto che non sono un programmatore e questo lavoro è il frutto di passione e sforzi dilettantistici.
Al momento sono supportati i sistemi Linux e Windows. Chi volesse scaricare una prima versione questi sono i link, anzi, chi fosse interessato è caldamente invitato a collaborare:
Compilata per Windows: https://my.pcloud.com/publink/show?code=XZOLBc7ZAgffkIWN6PQOfk22Bdmq9pDF2iv7
Tool accessori https://my.pcloud.com/publink/show?code=XZbqbc7ZUL65WuuIDlQWhdO5hlFtrJ9lkryX
Compilata per Linux: https://my.pcloud.com/publink/show?code=XZR4Bc7ZSdJTWXeYvAHhbhO4mWSi95oio4fX
Codice sorgente: https://my.pcloud.com/publink/show?code=XZ24Bc7ZKGTUmJLKAsj9GCbpBQLfRJr30hEX
Tool accessori windows https://my.pcloud.com/publink/show?code=XZcdbc7ZEoPYcvfbnQuQAC7iLWcyb7GiWe2k
Prima di avviare il programma è necessario copiare i file accessori scaricate nelle cartelle del sistema:
In Windows copiare il tool “pgn-extract.exe” e lo script pgn_win.bat nella cartella C:\Windows.
Al primo avvio il programma crea una cartella “temp” in
“C:\Users\NomeUtente\AppData\Roaming\Godot\app_userdata\PGNviewer3D\temp” su windows
e in “/home/NomeUtente/.local/share/godot/app_userdata/PGNviewer3D/temp” su linux.
Dentro la cartella “temp” appena creata, viene copiato una partita di default nel file “current.pgn” che viene elaborato dal tool “pgn.extract” che crea due file (sempre dentro la cartella utente “temp”) “current.uci” e “moves.pgn“. Durante l’inizializzazione “PGNviewer3D” usa questi due file per predisporre le variabili per la gestione della partita.
Al momento se si desidera analizzare una partita diversa da quella di default è necessario sovrascrivere il file “current.pgn” dentro la cartella utente. Quella che segue è l’esempio di una partita in formato PGN:
[Event "18th Lienz Open 2015"]
[Site "Lienz AUT"]
[Date "2015.02.07"]
[Round "1.30"]
[White "Braun,Eri"]
[Black "Mueller,Marc"]
[Result "0-1"]
[WhiteElo "1799"]
[BlackElo "2134"]
[ECO "B20"]
[HashCode "2aeeffe8"]
1. e4 c5 2. b3 Nc6 3. Nc3 Nf6 4. Bb2 d6 5. f4 e6 6. Nf3 Be7 7. d3 O-O 8. g3 Ng4 9. Qd2 Nd4 10. Nxd4 cxd4 11. Nb5 e5 12. h3 Ne3 13. Nxd4 Nxf1 14. Rxf1 exd4 0-1
Come ho già affermato un file PGN può contenere migliaia di partite, una partita comunque inizia con il tag [Event… e termina con il risultato e solitamente una riga vuota.
Una volta avviato il programma, viene visualizzata la scacchiera tridimensionale. Con i tasti cursore è possibile orientare la vista, con i tasti a/z si visualizza la mossa successiva/precedente e con il tasto F1 viene mostrato l’elenco completo dei tasti.
Due parole sul magnifico tool “pgn.extract” liberamente scaricabile da “https://www.cs.kent.ac.uk/people/staff/djb/pgn-extract/” e nella pagina “ftp://ftp.cs.kent.ac.uk/pub/djb/pgn-extract/help.html” troverete una esauriente documentazione.
Come già affermato, la prima elaborazione viene fatta eseguire da “pgn-extract” che converte la partita nel file “current.pgn” dal formato PGN al formato UCI e crea un file con le sole mosse PGN.
Per un uso immediato del potente tool pgn-extract, anche in casi che esulano dal programma PGNviewer3D, ecco alcuni esempi di comando:
# comando per dividere un pgn con più di 1000 partite in più file, ognuno con 1000 partite:
pgn-extract -s -#1000 nomefile.pgn
# il comando produrrà 1.pgn, 2.pgn, n.pgn… che dovranno essere rinominati in nomefile1.pgn, nomefile2.pgn, nomefilen.pgn…
#comando per estrarre da un pgn tutte le partite che terminano con matto:
pgn-extract -s -M nomefile.pgn -onomeFileMatto.pgn
#comando per estrarre da un pgn tutte le partite che terminano con matto:
pgn-extract -s -M nomefile.pgn -onomeFileMatto.pgn
#comando per estrarre da un pgn tutte le partite che terminano in parità:
pgn-extract -s --stalemate nomefile.pgn -onomefileStalemate.pgn
#comando per estrarre da un pgn tutte le partite che coincidono con determinati tag: Con il comando che segue verranno estratte da RobertJamesFischer.pgn tutte le partite giocate da Spassky col bianco e perse nel 1972:
pgn-extract -s -Tw"Spassky" -Td"1972" -Tr"0-1" RobertJamesFischer.pgn -opartite_estratte.pgn
Naturalmente in Windows il nome del tool dovrà essere completato dall’estensione .exe (pgn-extract.exe).
Ci sono almeno 2 subdoli bug che conosco (su alcune partite con promozione di pedone e prese en-passant) che non riesco a scoprire. Chissà se c’è qualche volonteroso più esperto di me (e ci vuole veramente poco!) che riesce a individuarli?