|
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.
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.
|