Häufig gestellte Fragen (FAQ)

Wozu dient blunderDB?

blunderDB ermöglicht den Aufbau einer personalisierten Stellungsdatenbank. Seine Stärke besteht darin, keine Klassifikation a priori vorauszusetzen. Der Benutzer hat somit die Freiheit, Stellungen mit großer Flexibilität abzufragen, indem er nach Belieben verschiedene Kriterien kombiniert (Rennen, Struktur, Würfelbecher, Spielstand, zurückgebliebene Steine, Steine in der Zone, Gewinn-/Gammon-/Backgammon-Chancen, …).

Eine weitere praktische Verwendung von blunderDB ist die Erstellung von Katalogen mit Referenzpositionen. Mit der Möglichkeit, Positionen zu etikettieren, können Benutzer all ihre Referenzpositionen strukturiert in einer einzigen Datei zusammenfassen. Ich hoffe, dass blunderDB den Austausch von Positionen zwischen Spielern erleichtert.

Was hat die Entwicklung von blunderDB motiviert?

Ich war es gewohnt, interessante Stellungen oder Blunder in verschiedenen Ordnern abzulegen. Dabei stieß ich jedoch auf Schwierigkeiten, Stellungen nach Kriterien wiederzufinden, die von meiner ursprünglichen Wahl thematischer Kategorien nicht vorgesehen waren. Wenn Stellungen zum Beispiel nach Spielart sortiert wurden (Rennen, Holding Game, Blitz, Backgame, …), wie findet man dann alle Stellungen bei einem bestimmten Spielstand oder mit einem bestimmten Würfelbecher-Stand wieder? Schließlich gerieten manche alten Stellungen in Vergessenheit. Ich wollte ein Werkzeug, das alle meine Stellungen zusammenführt und keine thematischen Kategorien a priori voraussetzt, und mit dem ich anschließend Fragen an die Datenbank stellen kann. Mit diesem flexiblen Ansatz können neue Filter hinzugefügt werden, ohne die Organisation der Stellungen zu zerstören. Diese Art von Software ist im Schach durchaus verbreitet, etwa ChessBase.

Wie speichert man den Zustand der aktuellen Datenbank?

Die Datenbank wird unmittelbar nach Ausführung der Anfragen aktualisiert. Es ist kein expliziter Speichervorgang erforderlich.

Sollte ich für verschiedene Kategorien von Positionen unterschiedliche Datenbanken anlegen?

Außer aus gut identifizierten Gründen ist es unerlässlich, Stellungen nicht auf getrennte Datenbanken zu verteilen — sonst riskiert man, sie in künftigen Recherchen nicht mehr zueinander in Beziehung setzen zu können. Die Philosophie von blunderDB besteht darin, keine Stellungskategorien a priori vorauszusetzen und dem Benutzer zu erlauben, sie flexibel abzufragen. Wenn Stellungen unter besonderen Bedingungen oder aus bestimmten Gründen angetroffen wurden, kann es sinnvoll sein, sie in eigenen Datenbanken zu speichern. Man kann zum Beispiel getrennte Stellungsdatenbanken anlegen für:

  • Referenzpositionen,

  • Blunder aus Präsenzturnieren,

  • Blunder aus dem Online-Spiel.

Wie führt man mehrere Datenbanken zusammen?

Wenn Sie mehrere blunderDB-Datenbanken zusammenführen möchten, verwenden Sie die Schaltfläche Datenbank zusammenführen (STRG-UMSCHALT-I):

  1. Öffnen Sie die Hauptdatenbank (die, welche die Stellungen aufnimmt)

  2. Klicken Sie in der Werkzeugleiste auf Datenbank zusammenführen

  3. Wählen Sie die zusammenzuführende Datenbank

  4. blunderDB führt die Stellungen zusammen

Beim Zusammenführen vermeidet blunderDB Duplikate: Eine bereits vorhandene Position wird nicht verdoppelt, und die Analysen der verschiedenen Engines bestehen nebeneinander, statt sich gegenseitig zu überschreiben (siehe Import: was geschrieben wird, was es niemals ist).

Bemerkung

Es wird empfohlen, vor dem Import einer weiteren Datenbank eine Sicherungskopie Ihrer Hauptdatenbank zu erstellen.

Welche Match-Dateiformate werden unterstützt?

blunderDB unterstützt die folgenden Match-Formate:

  • eXtreme Gammon (XG): .xg-Dateien, mit vollständiger Analyse der Züge, Cube-Entscheidungen, gespielter Züge und Multi-Engine-Unterstützung. .xgp-Dateien zum Import einzelner Positionen mit Analyse.

  • GNUbg: .sgf-Dateien (Smart Game Format), mit Analyse.

  • Jellyfish: .mat- und .txt-Dateien.

  • BGBlitz: .bgf-Dateien und Textpositionen.

  • HedgeHog (OpenGammon): .ogxm-Dateien, mit Analyse.

Der Import kann über eine einzelne Datei, eine Mehrfachauswahl, einen rekursiven Ordner, das Einfügen aus der Zwischenablage oder per Drag-and-Drop erfolgen.

blunderDB erkennt automatisch Duplikate und verhindert den Import eines Matchs, das bereits in der Datenbank vorhanden ist.

Kann ich meine online gespielten Partien importieren?

Ja, auf einem Umweg: Backgammon Studio (Heroes), Backgammon Galaxy und GammonSpace erzeugen alle drei Dateien, die eXtreme Gammon lesen kann — Studio liefert sogar ein Integrationspaket, das im XG-Ordner abgelegt wird. Diese Partien gelangen also über den vorhandenen .xg-Weg in blunderDB, ohne dass ein eigener Leser nötig wäre.

Bemerkung

Was dieser Umweg genau transportiert — Analysen, Würfelglück, Markierungen, Kommentare — wurde nicht gemessen: dafür bräuchte es je eine exportierte Partie von allen drei Plattformen. Wenn Sie eine haben und beim Import etwas verloren geht, öffnen Sie ein Issue mit der Datei: die Messung entscheidet, ob ein eigener Leser nötig ist, nicht eine Vermutung.

Die älteren Textformate, die GNU Backgammon bereits liest — .sgg (GridGammon), .tmg, .gam, Snowies .txt — liegen genauso: der Weg über GNU Backgammon macht sie heute importierbar.

Kann ich meine Datenbank über mehrere Rechner synchronisieren?

Eine blunderDB-Datenbank ist eine einzige Datei. Das macht Sicherung und Kopie trivial, und es entscheidet die Antwort:

  • Dropbox, Syncthing, iCloud, OneDrive: das funktioniert, unter einer Bedingung — die Datenbank nicht auf beiden Seiten gleichzeitig öffnen. Diese Dienste synchronisieren Dateien, keine gleichzeitigen Schreibvorgänge: zwei parallel schreibende Instanzen erzeugen einen Konflikt, den der Dienst löst, indem er eine Version behält und die andere umbenennt. blunderDB setzt eine Schreibsperre auf die geöffnete Datei, was einen Rechner schützt, aber keine Sperre überquert einen Synchronisationsdienst.

  • Mehrere Rechner gleichzeitig: darauf antwortet der Modus serve (siehe Headless-Modus (Server)). Ein Dienst hält die Datenbank, die Rechner verbinden sich damit, und es gibt nur einen Schreiber.

  • Zwei auseinandergelaufene Datenbanken: sie werden zusammengeführt statt synchronisiert — siehe „Wie führe ich mehrere Datenbanken zusammen?“ oben. Die Deduplizierung über den Zobrist-Hash erledigt die Arbeit: gemeinsame Stellungen werden nicht dupliziert, ihre Analysen und Kommentare vereint. Es ist eine Zusammenführung, kein Abgleich: nichts wird auf einer Seite gelöscht, weil die andere es gelöscht hat.

Brauche ich eXtreme Gammon, um blunderDB zu benutzen?

Nein. blunderDB liest auch Dateien von GNUbg, BGBlitz und Jellyfish, und sein eingebauter Evaluator (gammonNet) analysiert jede Stellung, ohne von einer Drittsoftware abhängig zu sein — siehe „Was taugt der eingebaute Evaluator?“ weiter unten. Ein XG-Import liefert jedoch die vollständigste Analyse (Züge, Würfelbecher-Entscheidungen, Markierungen, Wurfglück): Es ist das Format, das von den Statistiken am reichhaltigsten ausgewertet wird.

Ich benutze bereits eXtreme Gammon: Wozu dient mir blunderDB?

blunderDB spielt Ihre Matches nicht nach, es führt sie zusammen. Drei konkrete Unterschiede:

  • bündeln: Matches aus XG, GNUbg, BGBlitz und Jellyfish in einer einzigen Datei zusammenführen, Position für Position dedupliziert;

  • suchen nach Steinstruktur und nach Fehler: „die Annahmen bei diesem Spielstand, bei denen ich mehr als 50 Millipunkte verloren habe“ lässt sich in einer einzigen Befehlszeile schreiben (siehe Liste der Befehle);

  • wiederholen: die ausgewählten Positionen per verteiltem Wiederholen in Anki-Stapeln üben (siehe Anki-Panel).

Ihre XG-Analysen bleiben die von XG: blunderDB importiert sie unverändert und berechnet sie nie neu (siehe Import: was geschrieben wird, was es niemals ist).

Werden XG-Rollouts importiert? Führt blunderDB Rollouts durch?

Nein, in beide Richtungen. Von einer XG-Analyse übernimmt der Import die Stufenbezeichnung („3-ply“, „XG Roller++“, „Book“), die Equitys, die Fehler und die Wahrscheinlichkeiten; er öffnet nicht die Rollout-Daten der .xg-Datei und behält daher weder die Anzahl der Durchläufe noch die Standardabweichung. Eine als Text eingefügte XG-Analyse behält dagegen wörtlich ihre Bezeichnung, „Rollout“ eingeschlossen. Der eingebaute Evaluator selbst führt keine Rollouts durch: Er antwortet mit einer Suche bis zu 0 oder 2 Würfe im Voraus.

Was wurde am eingebauten Evaluator gemessen, und was wurde nicht gemessen?

Für das Regime bewertet des Eval-Panels ist eine Messung veröffentlicht: 4000 Money-Rennentscheidungen im Vergleich zur exakten Bearoff-Tabelle — 93,4 % Urteilsübereinstimmung (3735/4000), aber nur 61,1 % bei weniger als 1 % Abstand vom Take-Point gegenüber 94,4 % jenseits von 20 %; durchschnittliche Abweichung der Gewinnwahrscheinlichkeit 0,85 %, maximal 8,30 %. Nicht gemessen: das Doppler-Urteil beim Matchstand und Kontaktpositionen, für die keine Zahlen veröffentlicht sind. Die Details der Annahmen stehen in Methodik und Annahmen des Eval-Panels.

Was ist eine Sammlung?

Eine Sammlung ist eine benutzerdefinierte Gruppierung von Positionen. Im Gegensatz zu einer Filtersuche, die dynamisch ist, ist eine Sammlung eine feste Menge von Positionen, die vom Benutzer manuell ausgewählt werden. Sammlungen ermöglichen es beispielsweise, Referenzpositionen zu einem bestimmten Thema zusammenzufassen.

Was ist der EPC?

Der EPC (Effective Pip Count) ist ein genaueres Maß als der einfache Pip Count zur Bewertung von Bearoff-Positionen. Das Eval-Panel von blunderDB verwendet eine 6-Punkt-Bearoff-Tabelle, identisch mit der von GNUbg, die beim ersten Start auf der Maschine berechnet wird, und berechnet in Echtzeit den EPC, die durchschnittliche Anzahl der Würfe, die Standardabweichung, den Pip Count und das Wastage.

Bei reinen Bearoff-Stellungen zeigt das Panel außerdem die Gewinnwahrscheinlichkeit des Spielers am Zug an sowie, wenn die Stellung von einer Two-Sided-Datenbank abgedeckt ist (Tabelle TS-06-06, beim ersten Start berechnet, oder erweiterte Tabelle TS-06-11, im Reiter Bearoff der Konfiguration berechnet), das exakte Money-Doppler-Urteil. Außerhalb dieses Bereichs wird die Wahrscheinlichkeit mit ihrer Fehlermarge geschätzt und das Urteil bewusst nicht angezeigt. Siehe den Abschnitt „Methodik und Annahmen des Eval-Panels“ des Handbuchs für die Einzelheiten der Annahmen.

Was taugt der eingebaute Evaluator (gammonNet)?

gammonNet ist ein von einem Dritten trainiertes neuronales Netz (siehe Danksagungen), nach Go portiert und in blunderDB kompiliert: keine externe Software, keine Netzwerkverbindung. Es übernimmt die Rolle von XG oder GNUbg für nicht importierte Stellungen — Suche bis zu 0 oder 2 Würfe im Voraus, Würfelbecher-Entscheidung nach Janowski und der Matchäquivalenztabelle von blunderDB, unter Berücksichtigung des Spielstands. Es ist weder die einzige noch zwangsläufig die beste Engine auf dem Markt: Es ist diejenige, die offline funktioniert, ohne Konto oder Abonnement, für die Stellung, die Sie gerade betrachten. Nichts hindert Sie im Übrigen daran, auch XG- oder GNUbg-Analysen zu importieren, wo sie existieren — beide Quellen bestehen nebeneinander, und eine Spalte zeigt den Ursprung jeder Analyse an. Siehe den Abschnitt „Eval-Panel“ und „Methodik und Annahmen des Eval-Panels“ im Handbuch.

Was das in Zahlen wert ist. Auf den Auswürfelstellungen, die die eingebaute exakte Tabelle abdeckt — der einzige Ort, an dem ein Orakel existiert — gibt gammonNet mit 2 Ply in 93,4 % der Fälle dasselbe Dopplerurteil, und der Widerspruch konzentriert sich genau am Annahmepunkt (61 % Übereinstimmung innerhalb von 1 % vom Annahmepunkt, 94 % jenseits von 10 %): dort divergieren zwei legitime Methoden bei einer knappen Entscheidung am stärksten, es ist kein diffuser Fehler. Das Detail und die Methode stehen in „Methodik und Annahmen des Eval-Panels“.

Für dieselbe Frage, gestellt an Ihre Datenbank statt an ein Referenzkorpus, vergleicht blunderdb analyze --compare das eingebaute Programm mit den Analysen aus Ihren XG- oder GNUbg-Dateien — Übereinstimmung bei der besten Antwort, Kosten der Widersprüche, Aufschlüsselung nach Spielphase — ohne etwas zu schreiben.

Was ist der Unterschied zwischen PR und der Snowie Error Rate?

Der PR (Performance Rating) ist der durchschnittliche Equity-Fehler pro gezählter Entscheidung, multipliziert mit 500, wie es eXtreme Gammon und GNUbg tun; je niedriger er ist, desto besser spielt man. Die Snowie Error Rate bezieht denselben Durchschnitt auf die Anzahl der Züge statt der Entscheidungen — ein längeres Match verschlechtert die SER also nicht mechanisch. blunderDB zeigt beide im Stats-Panel an, ausgerichtet an den Konventionen von eXtreme Gammon und GNUbg (siehe Anhang: Statistikmodell — Abgleich XG / gnuBG / blunderDB für die genauen Zählregeln).

Verfügt blunderDB über eine Befehlszeilen-Schnittstelle?

Ja, blunderDB verfügt über eine Befehlszeilen-Schnittstelle (CLI), die es ermöglicht, ohne grafische Oberfläche Operationen wie das Erstellen von Datenbanken, den Import von Matches, den Export, die Suche nach Positionen, die Anzeige von Statistiken usw. durchzuführen. Weitere Einzelheiten finden Sie in der CLI-Dokumentation.

Bietet blunderDB einen Servermodus an?

Ja, einen optionalen „headless“-Modus: Dieselbe Binärdatei, gestartet mit serve, stellt die Engine von blunderDB über HTTP + JSON hinter einem authentifizierenden Reverse-Proxy bereit (blunderDB selbst führt keinerlei Authentifizierung durch). Er kann auf SQLite oder auf PostgreSQL im Multi-Tenant-Betrieb aufsetzen und dient dazu, blunderDB von eigenen Skripten oder einer selbst entwickelten Anwendung aus zu steuern, per HTTP + JSON — es gibt keine Weboberfläche —, oder eine Datenbank zwischen mehreren Spielern zu teilen. Die normale Nutzung bleibt die Desktop-Anwendung; siehe Headless-Modus (Server) für die Details (einschließlich des einsatzbereiten Docker-Images) und das Tutorial „Servermodus hinter einem Proxy bereitstellen“ im Benutzerhandbuch.

Darf ich blunderDB verändern, kopieren und weitergeben?

Ja, absolut (und es wird sogar ausdrücklich befürwortet!). blunderDB steht unter der MIT-Lizenz.

Wo werden meine Daten gespeichert?

Auf Ihrer Festplatte, in der .db-Datei, die Sie beim Anlegen der Datenbank gewählt haben: kein Konto, kein Server, standardmäßig keine Synchronisierung. Die Desktop-Anwendung öffnet diese Datei direkt; nur der optionale Servermodus (siehe oben) lässt blunderDB entfernt laufen, und dann sind Sie es, der diesen Server betreibt.

Kann ich eine Datenbank mit einem anderen Spieler teilen?

Ja: Eine blunderDB-Datenbank ist eine einfache Datei, es genügt, sie zu kopieren oder zu versenden. Um eine Datenbank an Dritte weiterzugeben, machen zwei optionale, beim Export gewählte Mechanismen daraus eine kontrollierte Weitergabe statt einer bloßen Kopie: Ein Herkunfts-Wasserzeichen signiert die Datei mit Ihrer Herausgeber-Identität (fälschungssicher, lesbar im Metadaten-Panel oder über blunderdb info, ohne jemals etwas auf Empfängerseite zu protokollieren), und ein Passwortschutz erzeugt eine verschlüsselte .dbx-Datei. Siehe Eine Datenbank weitergeben: Herkunft und Passwort im Handbuch.

Welches Datenformat verwendet blunderDB?

Die Datenbank ist eine einfache SQLite-Datei. Auch ohne blunderDB lässt sie sich somit mit jedem SQLite-Datei-Editor öffnen.

Was waren die Entwurfsprinzipien von blunderDB?

Ich wollte eine zugängliche Oberfläche, die aber vor allem für eine fortgeschrittene und intensive Nutzung gedacht ist, bei der man Positionen und Suchanfragen aneinanderreiht. Die Befehlszeile, die sich durch einen Druck auf die LEERTASTE öffnet, und die Tastenkürzel dienen dieser Nutzung, ohne ein Muss zu sein.

Außerdem wollte ich blunderDB leichtgewichtig, eigenständig, ohne Installation und für verschiedene Plattformen verfügbar machen, weshalb ich die Programmiersprache Go und die Bibliothek Svelte gewählt habe. Für die Serialisierung der Datenbank musste das Dateiformat plattformübergreifend und geeignet sein, eine Datenbank zu enthalten. Das SQLite-Dateiformat schien dafür wie geschaffen.

Zudem war mir wichtig, dass eine Datenbank eine einzige Datei bleibt, die man kopieren, sichern oder einem anderen Spieler schicken kann.

Schließlich beschränkt sich blunderDB nicht mehr auf die Desktop-Anwendung: Dieselbe Binärdatei bietet eine Befehlszeilen-Schnittstelle und einen optionalen Servermodus, der für Mehrbenutzer-Installationen auf PostgreSQL zurückgreifen kann. Die normale Nutzung bleibt dennoch die Desktop-Anwendung. Siehe Befehlszeilenschnittstelle (CLI) und Headless-Modus (Server).

Wie ist die Softwarearchitektur von blunderDB aufgebaut?

  • Das Backend ist in Go programmiert. Es ist für sämtliche Operationen auf der SQLite-Datenbank zuständig, die die Positionen speichert.

  • Das Frontend ist in Svelte programmiert. Es ist für die Darstellung der grafischen Oberfläche und des Backgammon-Boards zuständig.

  • Die Anwendung wird mit Wails verpackt, was die Erstellung nativer Desktop-Anwendungen für Windows, Linux und macOS ermöglicht.

  • Die Datenbank wird von SQLite verwaltet.

  • Der optionale Servermodus kann für Mehrbenutzer-Installationen auf PostgreSQL anstelle von SQLite zurückgreifen.

  • Der eingebaute Evaluator (gammonNet, MIT) ist ein nach Go portiertes und in blunderDB kompiliertes neuronales Netz: Er bewertet jede Stellung offline, ohne XG oder GNUbg. Siehe „Was taugt der eingebaute Evaluator?“ weiter unten.

Weitere Informationen finden Sie im GitHub-Repository von blunderDB.

Auf welchen Plattformen läuft blunderDB?

blunderDB läuft unter Windows, Linux und Mac.

Woher stammt das Symbol von blunderDB?

Das Symbol von blunderDB ist das „goggling“-Emoticon aus der SMirC-Serie.