Du bist nicht angemeldet.

Werbeanzeige

Crush

Alter Hase

Beiträge: 384

Wohnort: Stuttgart

Beruf: Softwareentwickler

  • Private Nachricht senden

21

10.01.2010, 15:32

Ich weiß nicht ob es Euch hilft, aber mit Strg+Alt+F12 kann man den Debugmode starten. Da werden dann die ganzen Messages in die .debug-Datei ausgegeben. Irgendwie kommt da nur ziemlich viel rüber.
Es gibt auch ein paar Sources von diversen Chessengines, da kann man sich auch die wichtigsten Befehle in etwa rauslesen.

Elmaron

Treue Seele

  • »Elmaron« ist der Autor dieses Themas

Beiträge: 126

Beruf: Sofa

  • Private Nachricht senden

22

10.01.2010, 15:51

Also einige sind wie Crush sagt opensource, wer sich also die Taktik abgucken will, kann sich da mal reinlesen. Code kopieren ist aber logischerweise unter keinen Umständen erlaubt, selbst wenns nur Protokollhandling ist.

Crush

Alter Hase

Beiträge: 384

Wohnort: Stuttgart

Beruf: Softwareentwickler

  • Private Nachricht senden

23

10.01.2010, 15:57

... auf so eine Idee wie Codeklau würde ich nie kommen ;)

Elmaron

Treue Seele

  • »Elmaron« ist der Autor dieses Themas

Beiträge: 126

Beruf: Sofa

  • Private Nachricht senden

24

10.01.2010, 18:08

EDIT: xboard/Winboard scheint das doch leicht anders zu benutzen... Beitrag in größeren Teilen umgeschrieben

Wer sich das Protokoll schon angeschaut hat, wird festgestellt haben, dass es neben normalen Zügen auch einen "force"-Befehl zum Wechseln in den "force"-Modus, einen "edit"-Befehl für einen Editiermodus und einen "analyze"-Befehl für den Analysemodus gibt.

Analyze-Modus und Edit-Modus sind nicht Pflicht (ersteres kann man sogar per Feature-Befehl xboard-konform abstellen), aber der "force"-Modus muss von jeder teilnehmenden Engine unterstützt werden - sonst komt man nicht weit (einfach mal "Two Engines" ausprobieren, dann benutzt xboard/winboard das automatisch).

Der Unterschied zum normalen Spiel besteht im force-Modus in zwei Dingen:

1. Wenn der Gegner gezogen hat, zieht man nicht selbst, sondern wartet auf weitere Züge (die Engine wird zum Betrachter, sollte aber trotzdem die Spielregeln prüfen und unerlaubte Züge abweisen). Man beobachtet weiterhin, wer gerade an der Reihe ist, und kommt der "go"-Befehl, dann spielt man die Partei, die gerade nach den Regeln am Zug ist

2. Es ist explizit nicht erlaubt, einen eigenen Zug vorauszurechnen bis zum Moment eines "go"-Befehls oder einer Rückkehr in den normalen Spielmodus

Im normalen Modus darf man das jedoch.

Jedoch: für das Turnier sollte man das Vorausrechnen unbedingt auch für den Normalmodus abgeschaltet haben (lässt sich schwer nachprüfen, I know), damit man nicht der anderen Engine CPU-Leistung klaut, während sie ihren Zug rechnet. (man sollte also während des Zuges des Gegners nur auf Befehle warten und nichts vorausrechnen/analysieren)

Crush

Alter Hase

Beiträge: 384

Wohnort: Stuttgart

Beruf: Softwareentwickler

  • Private Nachricht senden

25

11.01.2010, 15:43

Hat es schon irgendeiner geschafft, Winboard mit der Engine im Debug-Modus so zu starten, daß die Breakpoints aktiv bleiben? Außerdem braucht das ganze ca. 10 Sekunden bei mir, bis die beiden Engines geladen wurden nach dem Programmstart. Ist das normal?

Elmaron

Treue Seele

  • »Elmaron« ist der Autor dieses Themas

Beiträge: 126

Beruf: Sofa

  • Private Nachricht senden

26

11.01.2010, 17:35

Also ich benutze gdb auf Linux, den ich einfach an den Prozess attache, sobald Winboard/XBoard den völlig regulär gestartet hat. Breakpoints habe ich noch nicht probiert. Was ich aber so von Gotbread höre, scheint er keine derartigen Probleme zu haben (er benutzt glaub Visualstudio).

Auch das Laden geht bei mir augenblicklich. Ggf. könnte es aber sein, dass winboard auf eine bestimmte Eingabe von deiner Schach-KI wartet (z.B. den "Feature"-Befehl). Wenn du den nicht sendest ,wartet es u.U. ein paar Sekunden, ob es diesen noch bekommt. Dadurch könnte die Startverzögerung zu erklären sein.

Crush

Alter Hase

Beiträge: 384

Wohnort: Stuttgart

Beruf: Softwareentwickler

  • Private Nachricht senden

27

11.01.2010, 19:21

Also einen "Feature"-Befehl habe ich nirgendwo gefunden, aber ich schau mal, ob ich das Problem lösen kann.

Elmaron

Treue Seele

  • »Elmaron« ist der Autor dieses Themas

Beiträge: 126

Beruf: Sofa

  • Private Nachricht senden

28

11.01.2010, 19:37

Protokollspezifikation öffnen, STRG+F drücken, "feature" eingeben. Das sollte nicht so schwer zu finden sein!
Auch ist die Spezifikation schön ordentlich in Kapitel aufgetrennt, von denen eines die Befehle Engine->winboard behandelt. Die einfach mal durchgucken. (Generell würde ich empfehlen, einmalig die gesamte Spezifikation einfach mal am Stück durchzulesen, um mal nen Gesamtüberblick zu kriegen. Hat mir auch sehr geholfen)

Crush

Alter Hase

Beiträge: 384

Wohnort: Stuttgart

Beruf: Softwareentwickler

  • Private Nachricht senden

29

11.01.2010, 19:40

Also ich hab zwar gesehen, daß man auf einen Feature Befehl reagieren kann, aber es kommt keiner im Programm an (ich logge ja alles mit). Darauf wird jedenfalls mal nicht gewartet. Ein Accept verschicke auf die Message trotzdem mal.

Elmaron

Treue Seele

  • »Elmaron« ist der Autor dieses Themas

Beiträge: 126

Beruf: Sofa

  • Private Nachricht senden

30

11.01.2010, 20:09

Da hast du was durcheinander gebracht.

Immer genau gucken, in welcher Sektion du dich befindest.

Eine ist wie gesagt
Befehle GUI->Engine,

die andere:
Engine->GUI

Feature befindet sich in letzterer :-) Es wird von deiner Schach-Engine als Antwort zu "xboard" gesendet. Damit erklärst du xboard/winboard, was deine Engine unterstützt/fordert. Ablehnen/Akzeptieren tust dann nicht du, sondern der GUI, der dir damit sagt, ob er das jeweilige Feature kennt/unterstützt.

Werbeanzeige