Musashi 1.3

Musashi è il mio nuovo programma di scacchi. È sviluppato completamente in VB.NET (NET 8.0), nativamente a 64 bit. Anch’esso, come il vecchio Naraku, utilizza l’interfaccia UCI. Il nome deriva dal famoso samurai Musashi Miyamoto.

L’ultima versione disponibile è la 1.3 (12/10/2026). Potete scaricarla gratuitamente in fondo a questa pagina.

Potete inoltre sfidare direttamente Musashi su Lichess, cliccando questo link.

Dai miei test, in base ai test nelle condizioni della mia rating list, ha una forza stimata di circa 2654 Elo, al momento è quindi ancora leggermente più debole di Naraku, il mio primo motore che sviluppai circa 20 anni fa, seppure di poco. Come obiettivo mi sono dato il voler raggiungere e superare la forza del vecchio programma, restando però in Visual Basic, linguaggio notoriamente più lento del C.

Queste le caratteristiche attuali del programma:

  • Motore scacchistico che utilizza l’algoritmo Negamax con potatura alfa-beta e principal variation search (PVS/NegaScout) e internal iterative deepening.
  • Transposition table e quescience search.
  • Rappresentazione della scacchiera con bitboard a 64 bit e con magic bitboards per la generazione degli attacchi di alfiere e torre.
  • Ordinamento delle mosse tramite MVV-LVA, killer moves, history heuristic, con SEE per le potatura catture svantaggiose.
  • Funzione di valutazione hand-crafted (no NNUE) che al momento ha questi termini principali: Calcolo statico dei pezzi, tabelle PST per mediogioco e finali, mobilità dedicata per ogni pezzo, king safety con pawn storm e shelter, bishop pair, knight e bishop outpost, pedoni passati, candidati, appesi, doppiati, isolati e protetti, torre a supporto di pedone passato e torre su colonna aperta e su settima traversa, material imbalance, per il momento alcune euristiche semplificate per la gestione dei finali.
  • Funzione di valutazione ottimizzata tramite una evoluzione dell’algoritmo Highlander, che ora è un algoritmo evolutivo più completo. In futuro potrei passare al Texel’s tuning o ad altro (chiaramente se la licenza del Texel tuning dovesse essere compatibile con un programma freeware a codice chiuso).
  • Single core, per il momento.

Alcuni chiarimenti:

Perché VB.NET e non altri linguaggi molto più performanti?

Ho scelto di utilizzare VB.NET invece di altri linguaggi di programmazione molto più diffusi e veloci, sia perché Visual Basic è un linguaggio che ho sempre apprezzato molto, ma anche perché lo utilizzo quotidianamente per lavoro. E anche perché non esistono molti programmi di scacchi realizzati in Visual Basic. L’obbiettivo d’altronde non è realizzare un programma da 3700 elo in Visual Basic che vada a sfidare Stockfish, ma vedere fin dove riesco ad arrivare.

Utilizza NNUE?

No, per una mia precisa scelta ho voluto realizzare un programma “vecchio stampo”, con funzione di valutazione sviluppata a mano. È più divertente, e credo che continuerò su questa strada anche in futuro.

Perché a codice chiuso e non su Github?

Preferisco tenerlo closed source per il momento, come fatto per tutti gli altri programmi sul sito, principalmente perché è un progetto personale che preferisco portare avanti nel tempo libero, senza vincoli del dover spiegare il perché di alcune scelte, dover portare avanti un canale github e perché mi darebbe fastidio vedere qualcuno molto più bravo di me in VB.NET, fare un fork del programma e ottenere un motore 500 elo più forte.

È un derivato/clone di Stockfish/Reckless/Ethereal o qualche altro programma?

No, il codice è scritto completamente in VB.NET da zero e utilizza le tecniche che ho descritto sopra, nelle loro definizione più classiche, con (sicuramente) diversi bug e mancate ottimizzazioni. Posso fornire a chi vuole, parte del codice sorgente via email per verifica. Chiaramente motori come Stockfish, Ethereal, Fruit, così come tanti altri, sono fonti di ispirazione, il che non vuol dire che il codice sia copiato. Allego un paio di screenshots di esempio del codice di Musashi:

 

Utilizza AI?

Nella scrittura del programma principale no, ma sto utilizzando AI nella ricerca e risoluzione di bug, oltre che nell’implementazione dell’algoritmo di tuning e altre funzioni basilari o accessori (es: bench). Ritengo AI un ottimo strumento, quando è utilizzato nella ricerca e correzione di bug e d’altronde, ormai è integrata ovunque (in Visual Studio è attiva di default). Di seguito un esempio di codice in VB.NET tratto dalla definizione della Lazy evaluation, in cui ho corretto uno dei tanti bug scovati da AI.

È Naraku riscritto in Visual Basic?

No, anche se alcune tecniche di ricerca e valutazione sono molto simili (essendo standard di ogni motore moderno), i due programmi sono profondamente differenti e lo si può vedere direttamente dalla valutazione delle posizioni. Per esempio, anche se più lento di 2-3 volte, Musashi utilizza, grazie a tecniche più moderne, un pruning molto più aggressivo rispetto a Naraku, il che gli consente di raggiungere, e a volte, superare, la stessa profondità raggiunta da Naraku ricercando appena un terzo dei nodi.

Downloads

Musashi è scaricabile cliccando su questo link: Musashi 1.3.

Qui trovate il changelog in formato txt. Changelog.txt.

Vecchie versioni: Musashi1.2, Musashi 1.1, Musashi 1.0.

 

Richiede le .NET 8.0. Testato funzionante su Windows 7, Windows 10 e 11, gira perfettamente sotto Arena, cutechess, Scid vs PC, Littleblitzer.

Alcune immagini di esempio:

Musashi 1.0 contro Naraku in Arena, ma non sta andando benissimo…
Musashi contro Rebel 6.0.