Einzelnen Beitrag anzeigen
  #4749  
Alt 02.11.2021, 12:10
fhub fhub ist offline
Lebende Foren Legende
 
Registriert seit: 19.04.2010
Beiträge: 2.879
Abgegebene Danke: 578
Erhielt 7.000 Danke für 1.581 Beiträge
Aktivitäten Langlebigkeit
9/20 15/20
Heute Beiträge
1/3 sssss2879
AW: Mess Emulator für diverse Schachcomputer ist fertig!

Hallo Lars,
 Zitat von lars Beitrag anzeigen
ich habe mein BearChess mit der Version 0.5.5.0 etwas erweitert und unterstütze jetzt auch
die UCI Emulationen aus dem MessChess-Unterordner.

Zu finden unter https://www.solanosoft.com/
schön zu sehen, daß es jetzt eine weitere GUI gibt, die MessChess unterstützt - ich kannte BearChess bisher gar nicht.

Beim Ausprobieren hab ich entdeckt, daß die Level-Einstellung bei vielen Engines nicht funktioniert, und zwar bei allen, bei denen der Level 'type string' ist (und das sind doch relativ viele).
Nach einem Blick in die von BearChess erzeugten Log-Dateien ist mir auch klar, wo das Problem liegt: irgendwie interpretiert BearChess den von der Engine (bzw. von dessen Plugin) gesendeten Text für die Option 'Level' falsch, wenn der Typ 'string' ist.

Hier 2 Beispiele dazu:
1) Tasc R30:
Die Engine sendet
<< option name Level type string default 10 sec/move
aber Dein Programm hängt diesen letzten Teil 'sec/move' an den Namen dran, sodaß es folgendes an die Engine zurücksendet:
>> setoption name Level sec/move value ... (hier die eigene Eingabe)
Damit lautet also der Optionsname eigentlich 'Level sec/move', und den akzeptiert natürlich MessChess nicht, denn die Level-Option heißt immer nur 'Level', und somit wird diese Einstellung einfach ignoriert.

2) Almeria 32bit:
Auch hier wird aus
<< option name Level type string default TURN 01
beim Zurücksenden
>> setoption name Level 01 value ... (hier die eigene Eingabe)
D.h. auch hier wird das '01' im Defaultstring an den Namen angehängt, sodaß die Option 'Level 01' heißt - wieder kein korrekter Name für MessChess.

Alle anderen Optionen wie z.B. 'Speed' (mit 'type spin') oder 'Style' (mit 'type combo') funktionieren ja korrekt, sodaß Du anscheinend
nur beim 'type string' im Parser irgendwas falsch machst, sobald hinter dem 'default' mehr als nur ein (numerischer) Wert steht.
Im Prinzip ist dafür aber keinerlei 'Sonderbehandlung' nötig, sondern die Option von der Engine
<< option name Level type string default ... (irgendein Text)
ist einfach auch genau so zu interpretieren, d.h. auch folgendermaßen wieder zurückzusenden:
>> setoption name Level value ... (von der Engine gesendeter oder vom Benutzer eingegebener Text)

Bei diesen Levels (von Typ 'string') muß ja der Benutzer den Level exakt so eingeben, wie er auch im Level-Menü der Engine selbst erscheint
(also z.B. '15 sec/move' oder '30 min/game' usw.) - und genau so einen Text erwartet dann auch das Plugin, sonst kann es den gewünschten Level nicht richtig einstellen.

Übrigens, das mit der Engine-Auswahl über die Datei 'Engines.lst' hast Du clever gemacht.

Grüße,
Franz
Mit Zitat antworten
Folgende 2 Benutzer sagen Danke zu fhub für den nützlichen Beitrag:
Agep (02.11.2021), mclane (02.11.2021)