Domande frequenti (FAQ)

A cosa serve blunderDB?

blunderDB permette di costituire un database personalizzato di posizioni. Il suo punto di forza è non presupporre alcuna classificazione a priori. L’utente ha così la libertà di interrogare le posizioni con grande flessibilità combinando a piacimento diversi criteri (corsa, struttura, cubo, punteggio, pedine arretrate, pedine nella zona, probabilità di vittoria/gammon/backgammon, …).

Un altro utilizzo pratico di blunderDB è la creazione di cataloghi di posizioni di riferimento. Grazie alla possibilità di etichettare le posizioni, l’utente può raccogliere tutte le sue posizioni di riferimento in modo strutturato all’interno di un unico file. Spero che blunderDB faciliti la condivisione di posizioni tra i giocatori.

Cosa ha motivato la creazione di blunderDB?

Ero abituato a conservare in cartelle diverse posizioni interessanti o blunder. Tuttavia incontravo difficoltà a ritrovare posizioni secondo criteri non previsti inizialmente dalla mia scelta di categorie tematiche. Per esempio, se le posizioni erano state ordinate per tipo di gioco (corsa, holding game, blitz, backgame, …), come recuperare tutte le posizioni a un certo punteggio? o a un certo livello di cubo? Infine, alcune vecchie posizioni tendevano a cadere nell’oblio. Volevo uno strumento che aggregasse tutte le mie posizioni e che non presupponesse a priori categorie tematiche, per poi poter porre domande al database. Con questo approccio flessibile, si possono aggiungere nuovi filtri senza rompere l’organizzazione delle posizioni. Questo tipo di software è piuttosto comune negli scacchi, come ChessBase.

Come salvare lo stato del database corrente?

Il database viene aggiornato immediatamente dopo l’esecuzione delle richieste. Non è necessaria alcuna operazione di salvataggio esplicita.

Devo creare database diversi per categorie diverse di posizioni?

Salvo per ragioni ben identificate, è essenziale non ripartire le posizioni in database separati, a rischio di non poterle mettere in relazione in ricerche future. La filosofia di blunderDB è di non presupporre categorie di posizioni a priori e di permettere all’utente di interrogarle in modo flessibile. Quando le posizioni sono state incontrate in condizioni particolari o per ragioni specifiche, può essere opportuno conservarle in database distinti. Si possono per esempio costituire database di posizioni distinti per:

  • le posizioni di riferimento,

  • i blunder nei tornei dal vivo,

  • i blunder nel gioco online.

Come unire più database?

Se hai più basi blunderDB da riunire, usa il pulsante Unisci un database (CTRL-MAIUSC-I):

  1. Apri la base principale (quella che riceverà le posizioni)

  2. Clicca su Unisci un database nella barra degli strumenti

  3. Scegli la base da unire

  4. blunderDB unisce le posizioni

Durante la fusione, blunderDB evita i duplicati: una posizione già presente non viene duplicata, e le analisi dei diversi motori convivono invece di sovrascriversi (vedi Importazione: cosa viene scritto, cosa non lo è mai).

Nota

Si consiglia di eseguire una copia di backup del database principale prima di importare un altro database.

Quali formati di file di match sono supportati?

blunderDB supporta i seguenti formati di match:

  • eXtreme Gammon (XG): file .xg, con analisi completa delle mosse, decisioni di cubo, mosse giocate e supporto multi-motore. File .xgp per l’importazione di posizioni individuali con analisi.

  • GNUbg: file .sgf (Smart Game Format), con analisi.

  • Jellyfish: file .mat e .txt.

  • BGBlitz: file .bgf e posizioni testuali.

  • HedgeHog (OpenGammon): file .ogxm, con l’analisi.

L’importazione può avvenire tramite file singolo, selezione multipla, cartella ricorsiva, incollaggio dagli appunti o trascinamento (drag and drop).

blunderDB rileva automaticamente i duplicati e impedisce l’importazione di un match già presente nel database.

Le partite che ho giocato online sono importabili?

Sì, per una via indiretta: Backgammon Studio (Heroes), Backgammon Galaxy e GammonSpace producono tutti e tre file che eXtreme Gammon sa leggere — Studio fornisce persino un pacchetto d’integrazione che si deposita nella cartella di XG. Quelle partite arrivano quindi in blunderDB per la via .xg esistente, senza bisogno di un lettore dedicato.

Nota

Che cosa trasporti esattamente questa via — analisi, fortuna del lancio, segnalazioni, commenti — non è stato misurato: servirebbe una partita esportata da ciascuna delle tre piattaforme. Se ne hai una e qualcosa si perde all’importazione, apri una issue con il file: sarà la misura a decidere se serve un lettore proprio, non una supposizione.

I formati testuali più antichi che GNU Backgammon già legge — .sgg (GridGammon), .tmg, .gam, il .txt di Snowie — sono nello stesso caso: passare da GNU Backgammon li rende importabili oggi.

Posso sincronizzare la mia base tra più macchine?

Una base blunderDB è un solo file. Questo rende banali il backup e la copia, e decide la risposta:

  • Dropbox, Syncthing, iCloud, OneDrive: funzionano, a una condizione — non aprire la base da entrambe le parti contemporaneamente. Sincronizzano file, non scritture concorrenti: due istanze che scrivono in parallelo producono un conflitto che il servizio risolve tenendo una versione e rinominando l’altra. blunderDB pone un lock di scrittura sul file aperto, il che protegge una stessa macchina, ma nessun lock attraversa un servizio di sincronizzazione.

  • Più macchine allo stesso tempo: è ciò a cui risponde la modalità serve (vedi Modalità headless (server)). Un demone detiene la base, le macchine vi si collegano, e c’è un solo scrittore.

  • Due basi che hanno divergito: si uniscono invece di sincronizzarsi — vedi «Come unire più basi di dati?» sopra. La deduplicazione per impronta Zobrist fa il lavoro: le posizioni comuni non vengono duplicate e le loro analisi e commenti sono combinati. È un’unione, non una riconciliazione: nulla viene cancellato da una parte perché l’altra l’ha cancellato.

Ho bisogno di eXtreme Gammon per usare blunderDB?

No. blunderDB legge anche i file di GNUbg, BGBlitz e Jellyfish, e il suo valutatore integrato (gammonNet) analizza qualsiasi posizione senza dipendere da software di terzi — vedi «Quanto vale il valutatore integrato?» più sotto. Un import da XG apporta tuttavia l’analisi più completa (mosse, decisioni di cubo, marcature, fortuna del tiro): è il formato più ampiamente sfruttato dalle statistiche.

Uso già eXtreme Gammon: a cosa mi serve blunderDB?

blunderDB non rigioca i vostri match, li raduna. Tre differenze concrete:

  • aggregare in un solo file match provenienti da XG, GNUbg, BGBlitz e Jellyfish, deduplicati posizione per posizione;

  • cercare per struttura di pedine e per errore: « le prese a questo punteggio in cui ho perso più di 50 millipoints » si scrive in una riga di comando (vedi Elenco dei comandi);

  • ripassare le posizioni trattenute tramite ripetizione dilazionata, in mazzi Anki (vedi Pannello Anki).

Le vostre analisi XG restano quelle di XG: blunderDB le importa tali e quali e non le ricalcola mai (vedi Importazione: cosa viene scritto, cosa non lo è mai).

I rollout XG vengono importati? blunderDB effettua rollout?

No, in entrambi i sensi. Da un’analisi XG, l’import conserva l’etichetta di livello (« 3-ply », « XG Roller++ », « Book »), le equity, gli errori e le probabilità; non apre i dati di rollout del file .xg e non ne conserva quindi né il numero di tentativi né la deviazione standard. Un’analisi XG incollata in testo conserva invece letteralmente la sua etichetta, « Rollout » compresa. Il valutatore integrato, dal canto suo, non effettua rollout: risponde con una ricerca a 0 o 2 tiri di anticipo.

Cosa è stato misurato del valutatore integrato, e cosa non lo è stato?

È pubblicata una misura, sul regime valutato del pannello Eval: 4000 decisioni money di corsa, confrontate con la tabella di bearoff esatta — 93,4 % di accordo di verdetto (3735/4000), ma solo 61,1 % a meno dell’1 % dal punto di presa contro il 94,4 % oltre il 20 %; scarto di probabilità di vittoria medio 0,85 %, massimo 8,30 %. Ciò che non è misurato: il verdetto di cubo al punteggio di match e le posizioni di contatto, per i quali non è pubblicato alcun dato. Il dettaglio delle ipotesi è in Metodologia e ipotesi del pannello Eval.

Che cos’è una collezione?

Una collezione è un raggruppamento personalizzato di posizioni. A differenza di una ricerca per filtri che è dinamica, una collezione è un insieme fisso di posizioni scelte manualmente dall’utente. Le collezioni consentono, ad esempio, di raggruppare posizioni di riferimento per una tematica particolare.

Che cos’è l’EPC?

L’EPC (Effective Pip Count) è una misura più precisa del semplice conteggio pip per valutare le posizioni di bearoff. Il pannello Eval di blunderDB utilizza una tabella di bearoff a 6 punti identica a quella di GNUbg, calcolata sulla macchina al primo avvio, e calcola in tempo reale l’EPC, il numero medio di lanci, la deviazione standard, il conteggio pip e il wastage.

Sulle posizioni di bearoff puro, il pannello mostra anche la probabilità di vittoria del giocatore al tiro e, quando la posizione è coperta da una tabella two-sided (tabella TS-06-06 calcolata al primo avvio, o tabella estesa TS-06-11 calcolata dalla scheda Bearoff della configurazione), il verdetto di cubo money esatto. Fuori da questo dominio, la probabilità è stimata con il suo margine d’errore e il verdetto non viene volutamente mostrato. Vedere la sezione « Metodologia e ipotesi del pannello Eval » del manuale per il dettaglio delle ipotesi.

Quanto vale il valutatore integrato (gammonNet)?

gammonNet è una rete neurale addestrata da terzi (vedi Crediti), portata in Go e compilata in blunderDB: nessun software esterno, nessuna connessione di rete. Svolge il ruolo di XG o di GNUbg per le posizioni non importate — ricerca fino a 0 o 2 tiri di anticipo, decisione di cubo secondo Janowski e la tabella di equità di match di blunderDB, rispettando il punteggio. Non è né l’unico né necessariamente il miglior motore sul mercato: è quello che funziona offline, senza account né abbonamento, sulla posizione che state guardando. Nulla impedisce peraltro di importare le analisi di XG o di GNUbg quando esistono — le due fonti convivono, e una colonna indica l’origine di ciascuna analisi. Vedi la sezione «Pannello Eval» e «Metodologia e ipotesi del pannello Eval» del manuale.

Quanto vale, in cifre. Sulle posizioni di uscita che la tavola esatta integrata copre — il solo posto dove un oracolo esiste — gammonNet a 2 ply dà lo stesso verdetto di cubo nel 93,4 % dei casi, e il disaccordo si concentra esattamente al punto di presa (61 % di accordo a meno dell’1 % dal punto di presa, 94 % oltre il 10 %): è lì che due metodi legittimi divergono di più su una decisione stretta, non un errore diffuso. Il dettaglio e il metodo sono in «Metodologia e ipotesi del pannello Eval».

Per la stessa domanda posta sulla tua base invece che su un corpus di riferimento, blunderdb analyze --compare confronta il motore integrato con le analisi venute dai tuoi file XG o GNUbg — accordo sulla migliore risposta, costo dei disaccordi, ripartizione per fase di gioco — senza scrivere nulla.

Qual è la differenza tra il PR e lo Snowie Error Rate?

Il PR (Performance Rating) è l’errore medio di equità per decisione conteggiata, moltiplicato per 500 come fanno eXtreme Gammon e GNUbg; più è basso, meglio si gioca. Lo Snowie Error Rate riporta la stessa media al numero di mosse piuttosto che al numero di decisioni — una partita più lunga non peggiora quindi meccanicamente lo SER. blunderDB mostra entrambi nel pannello Stats, allineati alle convenzioni di eXtreme Gammon e di GNUbg (vedi Appendice: modello statistico — allineamento XG / gnuBG / blunderDB per il dettaglio delle regole di conteggio).

blunderDB dispone di un’interfaccia a riga di comando?

Sì, blunderDB dispone di un’interfaccia a riga di comando (CLI) che consente di eseguire senza interfaccia grafica operazioni quali la creazione di database, l’importazione di match, l’esportazione, la ricerca di posizioni, la visualizzazione di statistiche, ecc. Consultare la documentazione CLI per maggiori dettagli.

blunderDB propone una modalità server?

Sì, una modalità «headless» facoltativa: lo stesso binario, avviato con serve, espone il motore di blunderDB in HTTP + JSON dietro un reverse proxy che autentica (blunderDB stesso non esegue alcuna autenticazione). Può appoggiarsi su SQLite o su PostgreSQL multi-tenant, e serve a pilotare blunderDB dai propri script o da un’applicazione fatta in casa, in HTTP + JSON — non c’è interfaccia web —, o a condividere un database tra più giocatori. L’uso normale resta l’applicazione desktop; vedi Modalità headless (server) per i dettagli (inclusa l’immagine Docker pronta all’uso) e il tutorial «Distribuire la modalità server dietro un proxy» della guida utente.

Posso modificare, copiare, condividere blunderDB?

Sì, assolutamente. blunderDB è rilasciato sotto licenza MIT.

Dove sono conservati i miei dati?

Sul vostro disco, nel file .db scelto creando il database: nessun account, nessun server, nessuna sincronizzazione predefinita. L’applicazione desktop apre direttamente questo file; solo la modalità server facoltativa (vedi sopra) fa girare blunderDB a distanza, e in quel caso siete voi a ospitare quel server.

Posso condividere un database con un altro giocatore?

Sì: un database blunderDB è un semplice file, basta copiarlo o inviarlo. Per diffondere un database a terzi, due meccanismi facoltativi, scelti al momento dell’esportazione, ne fanno una diffusione controllata piuttosto che una semplice copia: una filigrana d’origine firma il file con la vostra identità di emittente (infalsificabile, leggibile nel pannello Metadati o tramite blunderdb info, senza mai registrare nulla lato destinatario), e una protezione con password produce un file .dbx cifrato. Vedi Distribuire un database: origine e password nel manuale.

Quale formato di dati utilizza blunderDB?

Il database è un semplice file SQLite. In assenza di blunderDB, può quindi essere aperto con qualsiasi editor di file SQLite.

Quali sono stati i principi di progettazione di blunderDB?

Volevo un’interfaccia accessibile, ma pensata soprattutto per un utilizzo avanzato e prolungato, in cui si concatenano posizioni e ricerche. La riga di comando, aperta con la pressione della barra SPAZIO, e le scorciatoie da tastiera servono questo utilizzo, senza essere un passaggio obbligato.

Desideravo inoltre che blunderDB fosse leggero, autonomo, senza installazione e disponibile per diverse piattaforme, da cui la mia scelta del linguaggio Go e della libreria Svelte. Per la serializzazione del database, il formato dei file deve essere multipiattaforma e adatto a contenere un database. Il formato di file sqlite sembrava perfettamente indicato.

Ci tenevo anche a che un database restasse un semplice file, che si può copiare, salvare o inviare a un altro giocatore.

Infine, blunderDB non si limita più all’applicazione desktop: lo stesso binario offre un’interfaccia a riga di comando e una modalità server facoltativa, che può appoggiarsi a PostgreSQL per le installazioni multiutente. L’uso normale resta tuttavia l’applicazione desktop. Vedere Interfaccia a riga di comando (CLI) e Modalità headless (server).

Qual è l’architettura software di blunderDB?

  • Il backend è scritto in Go. È responsabile di tutte le operazioni sul database SQLite che memorizza le posizioni.

  • Il frontend è scritto in Svelte. È responsabile del rendering dell’interfaccia grafica e del board del Backgammon.

  • L’applicazione è incapsulata con Wails, che consente di produrre applicazioni desktop native per Windows, Linux e macOS.

  • Il database è gestito da SQLite.

  • La modalità server facoltativa può appoggiarsi a PostgreSQL invece di SQLite per le installazioni multiutente.

  • Il valutatore integrato (gammonNet, MIT) è una rete neurale portata in Go e compilata in blunderDB: valuta qualsiasi posizione offline, senza XG né GNUbg. Vedi «Quanto vale il valutatore integrato?» più sotto.

Per maggiori informazioni, vedere il repository GitHub di blunderDB.

Su quali piattaforme funziona blunderDB?

blunderDB funziona su Windows, Linux e Mac.

Da dove proviene l’icona di blunderDB?

L’icona di blunderDB è l’emoticon «goggling» della serie SMirC.