Technische Informationen

Die Programmierung eines Schachprogrammes ist eine aufwendige und komplizierte Angelegenheit. Damit sich Schachprogrammierer nicht mit den Details der Oberflächengestaltung beschäftigen müssen, hat man das sog. 'Motoren- Konzept' erfunden: Die Trennung von Motor und Oberfläche in 2 separate Module. Der Programmierer eines Motors (englisch: 'Engine') kann sich nun vollständig um die Verbesserung der Spielstärke seines Schachmotors kümmern. Die Darstellung des Schachbrettes, der Figuren und der sonstigen Informationen übernimmt die graphische Oberfläche (englisch: 'GUI= Graphical User Interface', etwa 'Graphische Benutzeroberfläche'). Motor und Oberfläche kommunizieren über Protokolle.

[motorenprinzip250prozent.bmp]

Die erste Oberfläche war das Winboard, programmiert von Tim Mann. Es wurde ursprünglich als Schnittstelle für GNUchess geschrieben und passte sich dementsprechend diesem textorientiertem Programm an. Das resultierte in dem relativ kompliziertem Winboard-Protokoll zur Verständigung von Schachmotor und Benutzeroberfläche. Trotzdem hat es sich rasant verbreitet und es stehen heute über 250 Schachmotoren zu Verfügung, viele mit beachtlicher Spielstärke, manche in der absoluten Spitzenklasse.

Ein neues Protokoll wurde von Rudolf Huber und Stefan Meyer-Kahlen ins Leben gerufen: das UCI-Protokoll. Es vereinfacht die Programmierung für sowohl die Motoren- Entwickler wie für die Oberflächen-Programmierer. Es fehlen allerdings einige Dinge, z.B. bekommen die Motoren das Ergebnis einer Partie nicht mit und können nicht selbst aufgeben oder Remis anbieten.

Schachprogramme sind normalerweise Konsolenprogramme, wenn sie direkt gestartet werden. Wenn sie von einer Oberfläche gestartet werden, ist die Konsole nicht sichtbar.

Schachprogramme funktionieren prinzipiell folgendermaßen:

Alle Schachprogramme benutzen eine sogenannte Baumsuche um den besten Zug herauszufinden. Der Schachmotor führt also zunächst z.B. einen weißen Zug, dann einen schwarzen Zug etc. auf einem internen "Brett" aus. Da dies nicht endlos so weitergehen kann, wird die Suche irgendwann beendet und die entstandene Stellung bewertet. Die Werte der Endstellungen werden verglichen und der beste Zug ausgewählt.

Vorschläge für Motoren-Programmierer:

Einige Dinge sind mir beim Umgang mit Winboard-Engines aufgefallen. Sie könnten das Leben leichter machen, sowohl unter Winboard wie auch unter Arena.

1. Installation:

  • Der Motor sollte ohne Parameter in der Kommandozeile funktionieren.
  • Das Buch sollte ohne Ändern von Konfigurationsdateien funktionieren.
  • Die Hashtabellen sollten auf einen vernünftigen, nicht zu hohen Wert eingestellt werden.
  • Bitte fügen Sie eine init-Datei bei, die den gleichen Namen wie die exe-Datei hat. Auf diese Weise kann man Kommandozeilenparameter, Autornamen und Land herausfinden.

2. Wert-Anzeige:

  • Mattwerte sollten nach dem Crafty-Standard (Matt=32767) angezeigt werden.
  • Werte sollten immer aus der Sicht des Motors angezeigt werden.

3. Analysemodus:

  • Ob hier Buchzüge angezeigt werden sollten, ist sicher Geschmacksache, wenn ja, dann sollten sie mit '()' eingeklammert werden.
  • Die Analyse sollte nicht beendet werden, wenn ein Matt gefunden wurde. Manche Programme finden nämlich ein kürzeres Matt erst nach längerer Suche, was bei Mattaufgaben ärgerlich ist.
  • Im Analysemodus sollten die Motoren besonders schnell auf Eingaben reagieren, da häufig in einer Partie hin- und hergesprungen wird mit den unvermeidlichen häufigen 'undo' bzw. 'MOVE'- Befehlen.