Chess Engines Guide

Dr. Erhard Henkes

Mein neues Buch:

Chess Engine Fruit 2.1 Explained:
How Classical Chess Engines Really Work

Ein englisches Fachbuch für Leser, die verstehen wollen, wie eine klassische Chess Engine intern arbeitet.
Behandelt werden unter anderem Board Representation, Move Generation, Evaluation, Hashing, Move Ordering, Alpha-Beta Search, Quiescence Search, Pruning und praktische Experimente an einer modernisierten Fruit 2.1 fork mit UCI-Schnittstelle.

https://www.amazon.de/dp/B0GHPZ2J1H

 

Außerdem auf Englisch erhältlich:

Chess Thinking in the Age of Engines:
Understanding and Interpreting Engine Evaluations

(englische Übersetzung des Schachcoach-Buchs)

Dieses Buch richtet sich an Schachspieler, die mit Hilfe moderner Engines, Analysewerkzeuge und praktischer Denkmodelle ihr eigenes Spiel besser verstehen und gezielter verbessern möchten.

https://www.amazon.de/Chess-Thinking-Age-Engines-Understanding-ebook/dp/B0GSH54B9F

 

Mein Buch:

Im Paket enthalten sind Chess Cockpit „Schachtronaut“ mit Schnittstelle zur KI,
eine eigene minimalistische UCI-Chess-GUI und ein modifizierter Stockfish 15.1 dev,
der seine „inneren Werte“ (klassisch und NNUE) sichtbar macht.

Schachtronaut screenshot

https://www.amazon.de/dp/B0GM7M5Y21

 

Quick-Start: Engine installieren & loslegen

Hier ist die Kurzfassung, um eine UCI-Engine (z.B. Stockfish.exe) in wenigen Minuten lauffähig zu machen.

Voraussetzungen

Variante A: Arena

  1. Arena starten Menü Engines - Install New Engine
  2. Zur Engine-EXE navigieren und auswählen. Arena erkennt UCI normalerweise automatisch.
  3. Optionen setzen (Menü Engines Manage - Engine doppelklicken):
    • Hash (z.B. 256 bis 1024 MB)
    • Threads (Anzahl CPU Kerne)
    • Tabellebasen (optional): Feld SyzygyPath / Tablebase path auf deinen TB-Ordner setzen
  4. Partie starten: Engines - Load Engine und dann Play - New Game.

Variante B: Cute Chess

  1. Cute Chess starten Tools - Manage Engines - Add (+)
  2. Type = UCI, dann bei Command die Engine-EXE wählen.
  3. Engine-Parameter (Knopf Options):
    • Hash, Threads, optional SyzygyPath (TB-Ordner)
  4. Spiel / Match:
    • Gegen Mensch: Game - New
    • Engine vs. Engine / Turnier: Tournament - New

Schnelltest

  1. Eine 3-Minute-Partie gegen die Engine starten.
  2. Im Engine-Log prüfen, ob Suchtiefe & Knoten steigen und (falls gesetzt) Found N tablebases erscheint.

Tipp: Für stabile Matches die Hash-Größe gleich halten, kein Eröffnungsbuch nutzen und immer dieselben Zeitkontrollen verwenden.

 

Einführung in die Welt der Chess Engines

Vor dem Computerzeitalter gab es menschliche (betrügerische) Systeme wie den "Schachtürken" oder mechanische Systeme wie "El Ajedrecista". Mit dem Beginn des Computerzeitalters (ab ca. 1940) entstanden erste Algorithmen (Turing, Shannon) für Schach spielende Programme. Ausreichend leistungsfähige Hardware stand erst in den 70er Jahren zur Verfügung. Größere Bekanntheit erreichten Chess Engines erst in den 80er Jahren. 1983 erreichte "Belle" (Bell Labs) auf entsprechender Hardware ein USCF Rating von 2250. Damit waren Chess Engines in den Meisterbereich des Schachs vorgedrungen. Hegener und Glaser brachte 1980 das Modell "Mephisto I" auf den Markt. Das kleine schwarze Kästchen wurde unter dem Spitznahmen "Brikett" bekannt. Ich selbst bin damals beim Mephisto II eingestiegen. Man konnte sich nun endlich einen eigenen "Schachcomputer" gönnen. Später nannte ich einen Mephisto Exclusive (zunächst mit Modul 2) mein eigen, den ich Ende der 80er mit dem Modul 5.1 nachrüstete. Diese Computer hatten ein eigenes edles Holzbrett mit Holzfiguren, und man konnte endlich wie gewohnt ziehen und schlagen anstatt Züge tippen. Diesen besitze ich noch immer und habe ihn auch in meinem Twitch-Stream vorgeführt. Diese Hardware-Maschine spielt wohl im Bereich um 2000 Elo und ist heute noch ein interessanter Gegner für die Mehrzahl der Schachspieler. Man findet die alten Maschinen heute als reine Software mit UCI Standard in den unendlichen Weiten des Internets.


Mensch gegen Maschine - der Showdown


Der entscheidende Kampf Schachgroßmeister gegen Maschine fand zwischen Kasparov und Deep Blue (IBM) statt. Im Jahre 1996 konnte Kasparov diesen spektakulären Zweikampf noch mit 4:2 gewinnen. Der Mensch hat diesen Kampf im Mai 1997 knapp (2,5 : 3,5) verloren, und heute (2026) ist er völlig chancenlos gegen Engines, die auf einem Smartphone laufen können. Stockfish 18 gilt zurzeit als stärkste Engine mit einer Elo-Zahl deutlich über 3600.

Solche Schach Engines werden heute als interessantes Analysewerkzeug eingesetzt. Man kann teilweise Spielstärke-Level einstellen, sodass man gegen abgeschwächte Engines antreten und diese besiegen kann. Allerdings agiert die Option "Skill level" bei Stockfish nicht besonders sinnvoll.  

 

Wie sieht es heute aus?

Die Zahl der verfügbaren Chess Engines ist groß, aber an der Spitze ist das Bild recht klar:

Das zurzeit (2026) stärkste Programm Stockfish 18 steht kostenlos als Open-Source-Code (zum eigenständigen Kompilieren/Linken) und als binäre Releases zur Verfügung.

Zu den direkten Verfolgern (Stand: 27.03.2026) zählen die open-source Engines Reckless und PlentyChess (unabhängig entwickelt von Stockfish), die Engine Torch (chess.com, öffentlich nicht als normales Kauf- oder Downloadprodukt erhältlich), Obsidian, Alexandria, Viridithas und das kommerzielle Dragon by Komodo 3.3

Besonders erfreulich ist, dass mehrere Engines aus dem Vorderfeld Open Source sind. Neben Stockfish gilt das unter anderem für PlentyChess und Reckless.
Bei den kommerziellen Programmen bleibt Dragon by Komodo 3.3 eine der wichtigsten Adressen. Torch nimmt eine Sonderrolle ein: Die Engine ist sehr stark und auf chess.com in der Analyse nutzbar, jedoch nicht als Tool für den eigenen PC erhältlich.

Auf online-Plattformen wie lichess.org oder chess.com kann man gegen Bots antreten. Auf dem eigenen PC, Laptop, Notebook oder Tablet kann man Graphical User Interfaces (GUI), Engines oder kombinierte Systeme (GUI plus Engines) aufspielen. Wer Engines sucht, findet in der CCRL-40/15-Liste eine gute Orientierung. Es gibt die Kategorien commercial, free, open source und private. Vorbild als offenes Programm ist hier seit Jahren der Spitzenreiter Stockfish. Dies ist ein aktuell sehr gepflegtes Schachprogramm in modernem C++. Ab Version 16 (im Jahr 2023) wurde die klassische von Menschen geschaffene Bewertung aus dem Sourcecode eliminiert. Nun haben dort alleinig neuronale Netze das Sagen. Wer klassische und neuronale Bewertung nebeneinander haben will, kann auf Version 15.1, die immer noch sehr stark spielt, zurückgreifen.

Bei der Hardware ist es von Vorteil, wenn der Rechner PEXT, AVX2 und mehrere CPU-Kerne unterstützt. Durch die Entwicklung von NNUE benötigt man keine Grafikkarte (GPU) für die effiziente Ausführung des neuronalen Netzes. Eine Grafikkarte wird vor allem noch von Leela Chess Zero eingesetzt, ideal mit einer nVidia Grafikkarte und CUDA. Diese Engine kann dann durchaus mit Stockfish konkurrieren. Ein Blick in die CCRL Liste lohnt sich auf jeden Fall, um auf Stand zu bleiben.

Aus menschlicher Sicht sind viele Engines selbst den stärksten Großmeistern hinsichtlich Rechengeschwindigkeit, taktischer Präzision und Konstanz weit überlegen. Daher gehören solche Engines heute zum Unterricht und zur Analyse auch bei Großmeistern selbstverständlich dazu.

 

Wie strukturiert man einen Engines Guide?

Zunächst schauen wir allgemein, an welchen Stellen man heute (2025) nach Engines stöbern kann. Da fallen mir folgende Plattformen (und Menüpunkte) ein:

lichess.org: Gemeinschaft - Spieler - Bots

chess.com: Spielen - Computer

Computerchess Rangliste

Smartphone: Nach Schach oder chess suchen ...

 

Beginnen wir mit den Bots bei lichess.org:


Beginnen wir mit den drei maia-Bots. Die Idee ist hier, Engines mit menschlichem neuronalem Netzwerk zu schaffen. Die Version maia1 wurde mit über 10 Millionen Spielen auf lichess im Wertungsbereich 1100 trainiert. Interessant sind hier die Chess Insights. Wie oft bestraft maia1 Patzer des Gegners? Die Werte erinnern mich an meine eigenen. 100% wäre teuflisch maschinell. maia1 zeigt hier 75% in der Eröffnung und 68% in Mittel- und Endspiel. Das erscheint mir für 1100 schon recht hoch. Bei maia5 und maia9 sind diese Werte ähnlich.
maia1 entspricht 1100, maia5 1500, maia9 1900 (lichess Wertung). Wo liegen erkennbare Unterschiede?
Wir betrachten die Genauigkeit der Züge Eröffnung/Mittelspiel/Endspiel bei Blitz + Schnellschach + Klassisch (Stand Mai 2024):
maia1: 82,5% / 61,3% / 69,5%
maia5: 85,8% / 67,3% / 71,6%
maia9: 88,0% / 64,0% / 66,7%

Ich vergleiche das mit meinen eigenen Werten: 86,0% / 69,0% / 70,8%
Vielleicht sind maia5 und maia9 geeignete Gegner für mich? Da hilft nur Ausprobieren.
Ich habe im April 2022 im 20+0 hier gegen maia9 gewonnen.

Wem das zu schwach ist, der sollte den Lynx_Bot (>2400 lichess Wertung) testen. Dafür braucht es allerdings bereits meisterliche Fähigkeiten. Lynx lässt leider keine Chess Insights zu.
Hier habe ich im Endspiel durch einen Patzer gegen Lynx verloren. Beachten Sie seine 98% Genauigkeit mit 0/0/0 in der Computeranalyse von lichess. Solche Gegner sucht man normalerweise nicht zweimal auf, es sei denn man möchte selbst Meister werden. 

Ein raffinierter Gegenspieler ist Boris-Trapsky (>2150 lichess Wertung im Schnellschach). Hier existieren sogar zwei Spiele von mir. Es steht 1,5 - 0,5 für den Bot. Mit einer Patzer-Bestrafungs-Rate von >85% hat man hier einen wirklich harten Gegner vor sich. 

Ich empfehle zeekat (>1950 lichess Wertung im Schnellschach). Hier habe ich eine leichtsinnig gespielte Partie gruselig gegen diesen Bot verloren.

Wer etwas Besonderes erleben möchte, sollte gegen TurtleBot (1320? lichess Wertung im Schnellschach) antreten. Dieser Bot wurde so programmiert, dass er die dritte Reihe von sich aus gesehen nicht überschreitet. Damit entsteht eine witzige Schach-Variante. Ein echtes Vergnügen, diesen Verteidigungs-Künstler zu knacken. Man kann gegen diesen Bot herrlich Angriff und breite Phalanxen üben. Dieser Bot ist leider nicht immer aktiv. Falls doch, unbedingt nutzen. Momentan steht es 6:1 (zwei Remis) für mich. Hier finden Sie eine typische Partie.


Bots bei chess.com:

Die Computer-Persönlichkeiten auf chess.com basieren auf Komodo. Das macht Sinn, weil sich Komodo besonders gut für unterschiedliche Spielstile und personalisierte Gegnerprofile eignet. Man kann aktuell Dragon und Komodo 14.1 frei (allerdings ohne Sourcedateien, also nur die Binaries) downloaden.  

Es gibt eine große Auswahl, die sich gezielt an Anfänger (250 - 850), Fortgeschrittene (1000 -1400), Turnierspieler (1500 - 2100) und Meister (2200 - 2450) wendet. Daneben gibt es Top-Spieler (Ben Finegold bis Magnus Carlsen). Dies ist der Versuch, personalisierte Engines zu erstellen. Letztendlich kann man auch "unpersönlich" direkt gegen die Engine Komodo antreten.
Hierbei finden sich folgende Level: 1 bis 5 für Anfänger (250 - 850), 6 bis 11 für Fortgeschrittene ( 1000 - 1500), 12 bis 15 für Turnierspieler (1600 - 1900), 16 bis 19 für Experten (2000 - 2300), 20 bis 21 für Meister  (2400 - 2500), 22 bis 23 für Grandmaster (2600 - 2700) und 24 für Super Grandmaster (2900). Zum Schluss gibt es 25 "Maximal" (3200).

Mein Lieblings-Computergegner ist "Olga" (1900). Sie spielt eher im Cafehaus-Stil, also ungewohnte Eröffnungen und taktisch gefährlich. Hier findet man eine Partie von mir mit Weiß gegen "Olga".

 

Bots aus der CCRL Rating List:

Diese Liste ist sortiert nach ELO. Durch farbliche Kennzeichnung findet man sich leicht zurecht zwischen Commercial, Free, Open source und Private. Lediglich Torch ist rein privat. Man kann es nicht kaufen oder den Code einsehen. Lediglich mittels Analyse auf chess.com kann man diese Engine bisher selbst nutzen. Infos über Torch findet man hier. Partien von GM Hikaru Nakamura gegen Torch kann man hier anschauen. Torch v4 ist in der Rangliste vorne dabei.

Hier findet sich eine Partie zwischen Stockfish 17 und Torch.

Stockfish ist schlicht und einfach ein geniales Schachprogramm, das in modernem C++ geschrieben ist. Es ist der beste "Schachspieler" der Welt. Es ist vor allem kostenlos, und der Sourcecode steht unter der GNU General Public License (ab Version 3) zur Verfügung. Was will man mehr? Die ausführbare exe von Stockfish benötigt zwei neuronale Netze (ein großes und ein kleines) und kann ohne GUI in einem Terminal bedient werden. Die Schnittstelle zur Stockfish Engine spricht UCI.

Hier ein kleines Beispiel noch mit SF 18 (meine Eingaben in der GUI-Rolle sind kursiv gesetzt):

Stockfish 18 by the Stockfish developers (see AUTHORS file)
uci
id name Stockfish 18
id author the Stockfish developers (see AUTHORS file)

option name Debug Log File type string default <empty>
option name NumaPolicy type string default auto
option name Threads type spin default 1 min 1 max 1024
option name Hash type spin default 16 min 1 max 33554432
option name Clear Hash type button
option name Ponder type check default false
option name MultiPV type spin default 1 min 1 max 256
option name Skill Level type spin default 20 min 0 max 20
option name Move Overhead type spin default 10 min 0 max 5000
option name nodestime type spin default 0 min 0 max 10000
option name UCI_Chess960 type check default false
option name UCI_LimitStrength type check default false
option name UCI_Elo type spin default 1320 min 1320 max 3190
option name UCI_ShowWDL type check default false
option name SyzygyPath type string default <empty>
option name SyzygyProbeDepth type spin default 1 min 1 max 100
option name Syzygy50MoveRule type check default true
option name SyzygyProbeLimit type spin default 7 min 0 max 7
option name EvalFile type string default nn-c288c895ea92.nnue
option name EvalFileSmall type string default nn-37f18f62d772.nnue
uciok
isready
readyok
setoption name Threads value 15
info string Using 15 threads
setoption name Hash value 1600
ucinewgame
position startpos moves g1f3
go depth 35
(nun fängt Stockfish an zu "rechnen")

info string Available processors: 0-19
info string Using 15 threads
info string NNUE evaluation using nn-c288c895ea92.nnue (125MiB, (102384, 1024, 15, 32, 1))
info string NNUE evaluation using nn-37f18f62d772.nnue (6MiB, (22528, 128, 15, 32, 1))
info string Network replica 1: Shared memory.
info depth 1 seldepth 2 multipv 1 score cp -20 nodes 303 nps 101000 hashfull 0 tbhits 0 time 3 pv e7e6
info depth 2 seldepth 6 multipv 1 score cp 11 nodes 3519 nps 879750 hashfull 0 tbhits 0 time 4 pv d7d5
info depth 3 seldepth 8 multipv 1 score cp 3 nodes 8279 nps 2069750 hashfull 0 tbhits 0 time 4 pv d7d5 e2e3
info depth 4 seldepth 7 multipv 1 score cp -14 nodes 19582 nps 3916400 hashfull 0 tbhits 0 time 5 pv g8f6 d2d4 e7e6 c2c4
info depth 5 seldepth 11 multipv 1 score cp -24 nodes 38484 nps 5497714 hashfull 0 tbhits 0 time 7 pv g8f6 d2d4 e7e6 c2c4 c7c5 d4d5 e6d5 c4d5
info depth 6 seldepth 12 multipv 1 score cp -35 nodes 54807 nps 6089666 hashfull 0 tbhits 0 time 9 pv g8f6 c2c4 e7e6 d2d4 f8b4 b1c3 e8g8 c1g5
info depth 7 seldepth 14 multipv 1 score cp -33 nodes 93252 nps 7173230 hashfull 0 tbhits 0 time 13 pv g8f6 d2d4
info depth 8 seldepth 17 multipv 1 score cp -33 nodes 107160 nps 7144000 hashfull 0 tbhits 0 time 15 pv g8f6 d2d4 d7d5 c2c4 e7e6 b1c3 f8b4 c1g5 e8g8 a1c1
...
info depth 35 seldepth 62 multipv 1 score cp -20 nodes 231627532 nps 6476555 hashfull 666 tbhits 0 time 35764 pv d7d5 d2d4 g8f6 c2c4 e7e6 b1c3 f8b4 d1a4 b8c6 e2e3 e8g8 a4c2 c6e7 c1d2 c7c5 a2a3 b4c3 d2c3 c5d4 c3d4 c8d7 c4c5 f6e4 f3d2 e4d2 c2d2 f7f6 f1e2 d8e8 e1g1 a7a6 b2b4 d7b5 d4c3 b5e2 d2e2 e8a4
bestmove d7d5 ponder d2d4

Ich habe 1.Sf3 eingegeben, und Stockfish möchte mit 1. ... d5 antworten. Als Gegenzug erwartet die Engine 2.d4.

Diese Information gehen über den Ausgabestream (cout) des Programms an das Graphical User Interface (GUI).
Das GUI wiederum gibt seine Kommandos über den Eingabestream (cin) ein.

Hier im Terminal schlüpfe ich in die Rolle des GUI, um die Kommunikation zwischen Engine und GUI zu demonstrieren.
Wichtige Abkürzungen sind cp (centipawn), NPS (nodes per second), hashfull (Ausnutzung des Hash-Speichers in Promille) und pv (principal variation).
Der Hash-Speicher sichert die Bewertung bereits bekannter Positionen, sodass hier eine schnelle Abfrage erfolgen kann anstelle einer aufwändigen Neubewertung.

Stockfish ist in der Programmiersprache C++ verfasst. Der Code in der Funktion main(...) lautet:

int main(int argc, char* argv[]) 
{
    std::cout << engine_info() << std::endl;
    Bitboards::init();
    Position::init();
    auto uci = std::make_unique<UCIEngine>(argc, argv);
    Tune::init(uci->engine_options());
    uci->loop();
    return 0;
}

In der Schleife UCIEngine:loop() findet die Kommunikation zwischen Engine und GUI statt:

void UCIEngine::loop() {
    std::string token, cmd;
    for (int i = 1; i < cli.argc; ++i)
        cmd += std::string(cli.argv[i]) + " ";
    do
    {
        if (cli.argc == 1
            && !getline(std::cin, cmd))  // Wait for an input or an end-of-file (EOF) indication
            cmd = "quit";
        std::istringstream is(cmd);
        token.clear();  // Avoid a stale if getline() returns nothing or a blank line
        is >> std::skipws >> token;
        if (token == "quit" || token == "stop")
            engine.stop();
        // The GUI sends 'ponderhit' to tell that the user has played the expected move.
        // So, 'ponderhit' is sent if pondering was done on the same move that the user
        // has played. The search should continue, but should also switch from pondering
        // to the normal search.
        else if (token == "ponderhit")
            engine.set_ponderhit(false);
        else if (token == "uci")
        {
            sync_cout << "id name " << engine_info(true) << "\n"
                      << engine.get_options() << sync_endl;
            sync_cout << "uciok" << sync_endl;
        }
        else if (token == "setoption")
            setoption(is);
        else if (token == "go")
        {
            // send info strings after the go command is sent for old GUIs and python-chess
            print_info_string(engine.numa_config_information_as_string());
            print_info_string(engine.thread_allocation_information_as_string());
            go(is);
        }
        else if (token == "position")
            position(is);
        else if (token == "ucinewgame")
            engine.search_clear();
        else if (token == "isready")
            sync_cout << "readyok" << sync_endl;
        // Add custom non-UCI commands, mainly for debugging purposes.
        // These commands must not be used during a search!
        else if (token == "flip")
            engine.flip();
        else if (token == "bench")
            bench(is);
        else if (token == BenchmarkCommand)
            benchmark(is);
        else if (token == "d")
            sync_cout << engine.visualize() << sync_endl;
        else if (token == "eval")
            engine.trace_eval();
        else if (token == "compiler")
            sync_cout << compiler_info() << sync_endl;
        else if (token == "export_net")
        {
            std::pair<std::optional<std::string>, std::string> files[2];

            if (is >> std::skipws >> files[0].second)
                files[0].first = files[0].second;

            if (is >> std::skipws >> files[1].second)
                files[1].first = files[1].second;

            engine.save_network(files);
        }
        else if (token == "--help" || token == "help" || token == "--license" || token == "license")
            sync_cout
              << "\nStockfish is a powerful chess engine for playing and analyzing."
                 "\nIt is released as free software licensed under the GNU GPLv3 License."
                 "\nStockfish is normally used with a graphical user interface (GUI) and implements"
                 "\nthe Universal Chess Interface (UCI) protocol to communicate with a GUI, an API, etc."
                 "\nFor any further information, visit https://github.com/official-stockfish/Stockfish#readme"
                 "\nor read the corresponding README.md and Copying.txt files distributed along with this program.\n"
              << sync_endl;
        else if (!token.empty() && token[0] != '#')
            sync_cout << "Unknown command: '" << cmd << "'. Type help for more information."
                      << sync_endl;
    } while (token != "quit" && cli.argc == 1);  // The command-line arguments are one-shot
}

Dieser Sourcecode ist die beste Quelle, um wirklich zu verstehen, welche Kommandos die Engine umsetzt und was sie daraufhin unternimmt. Die meisten Engines sind in den prozessornahen Programmiersprachen C und C++ geschrieben. 

Stockfish wird sehr ehrgeizig darauf getrimmt die Nr. 1 zu sein und zu bleiben. Hier wird um jeden ELO-Punkt gekämpft. Die Entwickler und den Support findet man in Discord auf dem Stockfish Server, eine überaus lebendige Community. Fertige binäre Programme findet man hier. Der größte Sprung in der Spielstärke um etwa 100 ELO-Punkte fand ab Version 12 statt, als man ein neuronales Netzwerk zusätzlich zur klassischen Bewertung einbaute. Ab Version 16 wurde die klassische Bewertung entfernt. Man setzt nun rein auf die Optimierung der Spielstärke mittels NNUE.

Die beiden Meldungen:
info string NNUE evaluation using nn-c288c895ea92.nnue (125MiB, (102384, 1024, 15, 32, 1))
info string NNUE evaluation using nn-37f18f62d772.nnue (6MiB, (22528, 128, 15, 32, 1))
zeigen, dass die neueren Stockfish-Versionen inzwischen zwei neuronale Netzwerke einsetzen, ein großes (125 MiB) für komplexe Situationen und daneben ein kleineres (6 MiB) für einfachere Positionen. Wenn man den Sourcecode selbst kompiliert und linkt, muss man dafür sorgen, dass man diese Netzwerke neben der exe-Datei bereit stellt oder diese beim Build in die exe einbindet. Wer ein fertiges Release per Download bezieht, muss sich darum nicht kümmern. Dort sind die beiden nnue bereits in der exe inkorporiert. 


Stockfish war und ist über Jahre die aktuelle Referenz für "korrektes" Schach, ein echter Hyper-Grandmaster, der Menschen im Schach weit hinter sich gelassen hat.

Unter den ersten zehn findet sich auch das kommerzielle Programm Dragon by Komodo 3.3. Der große Vorteil sind die "Personalities", sodass man menschliche Verhaltensweisen einstellen kann. Übrigens gibt es diesen Parameter auch bereits beim kostenlosen Vorläufer Komodo 14.  

 

All diese Engines benötigen eine kompatible GUI, die UCI beherrscht. Ich empfehle Cute Chess 1.3.x. Damit kann man stabil spielen, Turniere veranstalten und sogar eigene Eröffnungsbücher aus pgn-Sammlungen im üblichen Polyglot Binärformat erstellen. Mit etwas Mühe findet man bereits ausgereifte fertige Binärformate, wie z.B. das empfehlenswerte komodo.bin.

 

GUI plus Engine:

Es gibt natürlich komplette Systeme, die sowohl die Benutzeroberfläche als auch die Engine oder mehrere Engines beinhalten. Ein klassisches Beispiel ist der "Fritz". In den 90er Jahren löste er die elektronischen Systeme als Schach-Software für den heimischen PC ab. Diese generelle Entwicklung hat sich fortgesetzt. Inzwischen kann man sehr starke Chess Software auf dem Smartphone verwenden.

"Fritz" hat seine führende Rolle ein wenig verloren. Allerdings befindet er sich aktuell als "Fritz 20" (kommerziell) mit ca. 3600 Elo etwa auf Platz 20 der CCRL 40/15. Man kann in seiner GUI weitere Engines konfigurieren, parametrisieren und verwenden. Stockfish und PlentyChess kann man dort z.B. zusätzlich einbinden, um auf höchstem Niveau zu analysieren. 

Nicht uninteressant ist das Komplettsystem Shredder. Zurzeit gibt es den Shredder Classic 5, Shredder 13 Windows und Deep Shredder 13 Windows käuflich zu erwerben. Eine kostenlose 30-Tage-Demo-Version des Shredder Classic 4 existiert zum Download (Stand Nov. 2009). Der Vorteil dieser kompletten Systeme besteht darin, dass sich die Spielstärke der Engine adaptiv verhält, d.h. verliert man, so wird die Spielstärke verringert. Man erhält eine Wertungszahl, sodass man die eigene Entwicklung verfolgen kann. Das beherrscht der Fritz natürlich ebenfalls.

 

Engines selbst entwickeln oder verstehen lernen

Ein interessantes Gebiet sind die open source Engines, wenn man den inneren Ablauf ernsthaft verstehen will. Man kann sogar selbst weiter entwickeln, wenn man C/C++ halbwegs beherrscht. Ein interessanter Ausgangspunkt ist Fruit 2.1 aus dem Jahre 2005. Er arbeitet natürlich noch ohne NN, also mit klassischer Bewertung. Man kann hier sehr schön die UCI-Schleife, die Suche und die Bewertung anschauen, um für eigene Ideen zu lernen.

Der gut verständliche Fruit 2.1 war ein wichtiger Ausgangspunkt für Glaurung (SF Vorläufer), Stockfish und Rybka. Ich habe diesen Code in Form gebracht, leicht weiter entwickelt und mit Hilfe von ChatGPT kommentiert, so dass man ihn direkt mit Visual Studio 2026 verstehen und bearbeiten kann. Die Spielstärke befindet sich auf Meister-Niveau. Inzwischen habe ich auch ein Ebook über diese historisch wichtige und lehrreiche klassische Engine inclusive Download-Link veröffentlicht (s.o.).

Interessanterweise wurde diese Version weiter entwickelt zum Fruit Reloaded 2.1 (2014). Hier findet sich eine Version, die ich an MSVS 2026 angepasst habe. Sie hat bereits Multithreading und ein Beispiel für Bitboards dabei. Auch mit nur einem Thread spielt diese Version bereits auf Großmeister-Niveau. Ich habe den Fruit Reloaded mit komodo.bin gegen SF 17.1 mit 8 Threads und 1024 MB Hash für beide antreten lassen. Fruit Reloaded hat gegen dieses Monster ein remis erzielt! Hier findet man diese sehenswerte Partie. Fruit Reloaded spielt hier mit 99% Genauigkeit und nur 2% average centipawn loss (Wertung SF in lichess). Das ist eine hervorragende Ausgangsbasis, die noch ohne NN und massenweise Bitboards agiert. Ein Studium dieser großartigen Engines Fruit und Fruit Reloaded ist ideal, um die klassischen Engines der beiden letzten Jahrzehnte zu verstehen. Stockfish hat bis Version 11 nur mit klassischer Bewertung ebenfalls hervorragende Resultate erzielt.

Wenn man weiter gehen will, kann man sich direkt mit dem aktuellen Stockfish Sourcecode beschäftigen. In Version 15 arbeiten klassische Bewertung und NNUE noch Hand in Hand zusammen, ab Version 16 wurde die klassische Bewertung komplett entfernt. Der Code ist in modernem C++ geschrieben. Ich empfehle ChatGPT-5.4 als Hilfe zum Erklären (klappt bestens) und Programmieren (hier braucht man ab und zu Nerven wie Stahlseile, da die KI bei solch komplexen Programmen manchmal noch überfordert ist).

 

Syzygy‑Tablebases kompakt

Syzygy sind Endspiel‑Datenbanken, die perfekte Bewertung für Stellungen mit wenigen Steinen liefern. Sie bestehen aus zwei Haupttypen:

Empfehlungen

Hinweis: Größen variieren je nach Quelle/Kompression. WDL ist deutlich kleiner als DTZ. Für SSD/NVMe ablegen.

Installation (allgemein)

  1. Wähle einen Zielordner, z. B. D:\TB\Syzygy.
  2. Lade die gewünschten Sets (WDL/DTZ, 3‑5/6 Steine) von einem vertrauenswürdigen Mirror herunter und entpacke alles in den Ordner.
  3. In deiner GUI die Engine‑Option SyzygyPath (oder Tablebase path) auf diesen Ordner setzen.
    • Mehrere Ordner sind möglich: Pfad1;Pfad2 unter Windows, Pfad1:Pfad2 unter Linux/macOS.
  4. Engine neu starten und Log prüfen (Meldungen wie „Found N tablebases“ / „Syzygy initialized“).

Tipps


Glossar (Kurz)

UCI
Universelles Schach‑Interface – Standardprotokoll GUI↔Engine.
GUI
Grafische Oberfläche (z. B. Arena, Cute Chess) zum Bedienen von Engines.
Hash
Transpositionstabelle der Engine im RAM (MB/GB).
Threads
Parallele Suchfäden; meist ≈ CPU‑Kerne.
Syzygy (WDL/DTZ)
Endspiel‑Tabellen: Ergebnis (W/D/L) und Distanz bis zum nächsten 50‑Züge‑Reset.
Opening Book
Bibliothek vordefinierter Eröffnungszüge.
EPD / PGN
Formate für Teststellungen bzw. Partien.
SPRT
Sequential Probability Ratio Test – statistischer Test für Engine‑Vergleiche.


 

↑ Zurück nach oben