Login


 
Newsletter
Werbung

So, 20. April 2003, 00:00

Schachprogramme unter Linux

Vorwort

Bis vor kurzem kannte ich nur ein Schach-Programm für Linux. Das war der Klassiker GNU Chess, der schon vor 12 Jahren auf dem Mac II so stark spielte, daß ich ziemlich chancenlos war. Danach befaßte ich mich lange nicht mehr mit Schach. Doch im Lauf der letzten Monate tauchten auf FreshMeat mehrere Schachprogramme auf. Über die Suchfunktion fand ich noch einige mehr. Dies war der Zeitpunkt, an dem ich beschloß, einen Artikel darüber zu schreiben.

Als ich dann aber zwecks Recherche die Xboard-Webseite aufsuchte, mußte ich feststellen, daß es über 170 Schachprogramme gibt. Das allein ist noch keine Überraschung, denn in der Liste sind auch Windows-Programme und kommerzielle Programme enthalten. Die Überraschung ist, daß etliche davon unter Linux laufen. Wieviele es exakt sind, habe ich noch nicht geprüft. Doch es sieht so aus, als könnte der Artikel im Lauf der Zeit sehr umfangreich werden...

Features von Schach-Engines

Schachmaschinen und Schachbretter

Wenn ich oben von Schachprogrammen gesprochen habe, meinte ich Programme, die in der Lage sind, Züge zu erzeugen und gegen einen Gegner (menschlich oder nicht) zu spielen. Diese Programme nennt man auf Englisch Chess Engines. Viele davon haben ein GUI. Doch ein eigenes GUI ist eigentlich nicht notwendig, denn es gibt ja noch die Schachbrett-Programme. Ein Schachbrett-Programm stellt ein Schachbrett grafisch dar, kann aber nicht selbst Züge berechnen. Schachbrett-Programme habe ich in einem eigenen Artikel vorgestellt. Hier besprechen wir nur die Engines.

Kombination mit Xboard

Auch wenn Xboard in mancher Hinsicht sehr primitiv ist, ist es noch das einzige Schachbrett-Programm unter Linux, das Features wie Ausführung der Engines auf anderen Rechnern und Initialisierungs-Sequenzen unterstützt. Es ist damit das einzige Programm, das für meine Tests der Engines in Frage kam.

Damit eine Engine möglichst einfach mit xboard verwendet werden kann, legte ich in /var/games ein Verzeichnis mit dem gleichen Namen wie die Engine an. In diesem muß der aufrufende Benutzer Schreibrechte haben, da die Engine hier nicht nur ihre Eingabedateien erwartet, sondern auch ihre Ausgabedateien ablegt. Bei mir bewerkstelligte ich das auf die folgende Weise, hier am Beispiel Crafty:

chown -R games.games /var/games/crafty
chmod g+w /var/games/crafty/*
chmod g+ws /var/games/crafty

Das s-Bit für die Gruppe games ist nötig, damit die von der Engine erzeugten Dateien die Gruppe »games« erhalten. Wahrscheinlich sollte man das Gleiche auch mit dem Owner machen. Die Gruppe »games« benötigt außerdem Schreibrechte auf das Verzeichnis, so daß jeder Benutzer, der in der Gruppe »games« ist, das Programm problemlos benutzen kann.

Nach dem gleichen Schema habe ich alle Schachprogramme installiert, so daß ich im folgenden nur noch kurz beschreiben muß, welche Dateien in /var/games zu installieren sind.

Sind die Engines eingerichtet, kann Xboard auf folgende Weise aufgerufen werden:

xboard -fcp crafty -fd /var/games/crafty -size large -tc 30

Dieser Aufruf startet die Engine in ihrem Arbeitsverzeichnis. Auf diese Weise braucht man keine speziellen Pfade in die Engine einzucompilieren, denn im aktuellen Verzeichnis suchen alle Engines nach ihren Dateien.

Will man zwei Engines gegeneinander spielen lassen, verwendet man zusätzlich die Optionen -scp und -sd:

xboard -fcp crafty -fd /var/games/crafty -scp phalanx \
-sd /var/games/phalanx -size large -tc 30

Die meisten Engines können die Bedenkzeit ihres Gegners für eigene Berechnungen nutzen. Läßt man zwei Engines auf dem gleichen Rechner gegeneinander spielen, so ist eine, die die Bedenkzeit des Gegners nutzt, gegenüber einer, die das nicht tut, gleich doppelt im Vorteil. Wenn sie am Zug ist, erhält sie 100% der CPU-Zeit, und wenn sie nicht an der Reihe ist, immer noch 50%. Insgesamt nutzt sie rund 75% der CPU-Zeit, also dreimal soviel wie die andere Engine. Ergo nutzt man am besten das Feature von Xboard, die Engines auf anderen Rechnern laufen zu lassen.

Wenn man das tut, muß man aber eine andere Vorgehensweise wählen als die oben angegebene. Oben habe ich mich nämlich auf die Optionen -fd und -sd zum Festlegen des Arbeitsverzeichnisses verlassen. Diese sind aber bei Aufrufen auf einem anderen Rechner unwirksam. Die Lösung ist, statt der Engine ein simples Shell-Skript aufzurufen. Der Einfachheit halber habe ich dieses im Arbeitsverzeichnis der Engine abgelegt und genauso genannt wie die Engine (verwendet man einen anderen Namen, sieht es in der Titelleiste von Xboard nicht so gut aus). Das Skript für Crafty lautet z.B.:

#!/bin/sh
engine=crafty
cd /var/games/$engine
exec /usr/local/bin/$engine

Sehr einfach, nicht wahr? Hier der passende Aufruf von Xboard:

xboard -fcp /var/games/crafty/crafty -fh grumbeer -size large -tc 30

Natürlich gibt es auch eine Option -sh für den Namen des Rechners, auf dem die zweite Engine läuft.

Eröffnungsbücher

Alle ernstzunehmenden Engines haben die Möglichkeit, Eröffnungsbücher zu verwenden. In vielen fällen ist ein Buch nichts weiter als eine Sammlung von (Meister-) Partien im PGN-Format. Entsprechende Dateien gibt es im Internet zuhauf zum freien Download. Einige Engines müssen diese Dateien erst einmal in ein eigenes, effizienteres Format konvertieren, um sie benutzen zu können. Genaueres findet sich in der Beschreibung der einzelnen Engines.

Eine andere Art von Eröffnungsbüchern liegt im Eco-Format vor. Hier handelt es sich nicht um eine Sammlung von Eröffnungen, sondern von Positionen. Das macht diese Art von Büchern invariant gegenüber Zugumstellungen. Amy, GNU Chess 4, Phalanx und andere können diese Bücher verwenden.

Endspielbücher

Endspielbücher (Tablebases) sollen den Engines zu einem perfekten Endspiel verhelfen. Sie haben allerdings einen großen Nachteil: Sie sind riesig groß! Es gibt mehrere Formate, das populärste davon ist wohl das Nalimov-Format. Dieses kann die Daten in komprimierter Form ablegen. Dennoch sind die kompletten Tablebases für fünf Figuren etwa 8 GB groß. Die meisten Leute verwenden daher nur die für drei und vier Figuren, die relativ klein sind, und eventuell ausgewählte Tablebases für einzelne Konfigurationen von fünf Figuren. Ich verzichtete, was diesen Artikel angeht, auf Tablebases komplett.

Engines

Kommentare (Insgesamt: 0 || Kommentieren )
Pro-Linux
Pro-Linux @Facebook
Neue Nachrichten
Werbung