|
|||||||||||
AW: MessChess und Arena - Fragen und Antworten
Ah OK, das wusste ich nicht, dass die beiden zusammenhängen. Stimmt, ich hatte das CC10 noch nicht upgedatet. Ich probier es gleich mal aus.
__________________
Mein Profil beim ICCF (International Correspondence Chess Federation) https://www.iccf.com/player?id=89948&tab=3 |
|
||||||||||||
AW: MessChess und Arena - Fragen und Antworten
Hi,
da ich gestern per Email gefragt wurde, wie man unter Arena bei den MessChess-Engines eine bestimmte Zugfolge manuell eingeben und danach mit der Engine weiterspielen kann, habe ich heute einen Trick gefunden, mit dem genau das möglich ist und man außerdem auch eine gespeicherte Partie wieder laden und danach fortsetzen kann (dieses Problem hatten wir ja schon mal - wird speziell für Bryan Whitby interessant sein). Die erste Voraussetzung dafür ist, daß man in Arena die MessChess-Engines auf das WB-Protokoll umstellt, denn mit dem UCI-Protokoll ist das nicht möglich (außer man würde dazu das gesamte Schachplugin-System komplett umschreiben). Genau für diesen Zweck hab ich ja in den letzten CB-Emu-Versionen (seit Umstellung auf Arena 3.51) im Arena-Verzeichnis eine Datei 'ArenaENG_WB.cfg' beigefügt, in der alle Engines eben im WB-Modus definiert sind. Man braucht also nur diese Datei 'ArenaENG_WB.cfg' über die Datei 'ArenaENG.cfg' drüberkopieren (oder deren Inhalt in eine eigene, externe Arena-Konfiguration übernehmen) - danach werden alle MessChess-Engines im WB-Protokoll gestartet (das ohnehin für MessChess das wesentlich bessere und einfachere Protokoll ist). Unter WinBoard selbst kann man ja solche Zugfolgen ohnehin im Edit-Modus eingeben oder eine gespeicherte PGN-Datei laden sofern man vorher die Engine in den MultiPlayer- bzw. MultiMove-Modus eingestellt hat. Unter Arena geht das im UCI-Modus gar nicht (auch nicht im Edit-Modus), weil Arena die gesamte Zugfolge erst dann an die Engine sendet, wenn man den Edit-Modus wieder verläßt und den ersten neuen Zug eingibt, und leider sendet Arena dabei vorher noch ein 'new' an die Engine, was die meisten Engines wieder zum Verlassen des MultiPlayer-Modus veranlasst. Aber jetzt kommt eben mein Trick, den ich auch erst heute durch ein wenig Überlegen und Probieren herausgefunden habe: man darf das in Arena NICHT im Edit-Modus tun, sondern im Analyse-Modus! Hier also die genaue Abfolge für die Eingabe einer eigenen Zugfolge: Code:
1) Arena starten (Grundstellung sollte am Brett sein, sonst 'File > New') 2) Engine starten 3) Arena: Analyse-Modus EIN 4) Engine: MultiPlayer-Modus EIN 5) Arena: gewünschte Zugfolge eingeben - falls man selbst den ersten Zug nach dieser Zugfolge ausführen möchtest, dann auch diesen noch hier (im Analyse-Modus) eingeben! 6) Arena: Analyse-Modus AUS 7) Engine: MultiPlayer-Modus AUS - dieser Punkt ist bei manches Engines, bei denen man den MultiPlayer-Modus nicht direkt (mit eine Taste) wieder ausschalten kann (z.B bei den Mephistos mit Menü-Steueung wie Almeria, Lyon, ... usw.) nicht nötig, d.h. bei solchen Engines diesen Punkt einfach auslassen 8) Arena: 'Play'-Button drücken (falls die Engine mit Weiß spielt) - wenn die Engine mit Schwarz spielt, dann entweder nocheinmal 'Play' in Arena drücken, oder direkt in der Engine den Button zum Starten drücken (Move, Go, Enter, ZIEH usw., je nach Engine). (warum das bei Schwarz nicht mit 1-mal 'Play' funktioniert, ist mir nicht klar, aber es ist einfach so). Jetzt beginnt die Engine zu rechnen, und nach erfolgtem Zug kann normal weitergespielt werden. der Zugfolge erst nach Ausschalten des Analyse-Modus (in Arena) und des MultiPlayer-Modus (in der Engine) eingeben, woraufhin die Engine auch zu rechnen beginnt, aber das klappt z.B. bei den erwähnten Mephistos wieder nicht (hier müßte man danach extra wieder ZIEH einstellen), und damit ist die obige Methode wohl die einfachste. Und hier nochmals die (ähnliche) Vorgangsweise für das Laden einer gepeicherten PGN-Datei: (dazu ist übrigens ein 'Save/Load State' bei der Engine gar nicht mehr nötig, falls die bisher verbrauchten Zeiten keine Rolle spielen) Code:
1) Arena starten 2) gespeicherte PGN-Datei laden (Partie sollte in der Ausgangsstellung sein, was bei meiner Arena-Konfiguration ohnehin so eingestellt ist, ansonsten mit dem Navigationspfeil links an den Partieanfang springen) 3) Engine starten (kann auch vor Punkt 2) erfolgen) 4) Arena: Analyse-Modus EIN 5) Engine: MultiPlayer-Modus EIN 6) Arena: ans Ende der Partie springen (rechter Navigationspfeil) - dabei werden jetzt alle Züge automatisch an die Engine gesendet (die aber wegen des MultiPlayer-Modus nicht antwortet!) 7) Arena: Analyse-Modus AUS 8) Engine: MultiPlayer-Modus AUS - bei manchen Engines, bei denen man den MultiPlayer-Modus nicht direkt wieder ausschalten kann (siehe oben!), diesen Punkt auslassen, dafür ist aber im nächsten Punkt 9) evt. ein zusätzlicher Schritt nötig 9) jetzt kann normal weitergespielt werden, also in Arena entweder selbst den nächsten Zug eingeben, oder einfach in Arena den 'Play'-Button aktivieren - im ersten Fall (also wenn man selbst den nächsten Zug eingibt) muß man bei diesen speziellen Engines, bei denen man den MultiPlayer-Modus nicht explizit ausschalten kann, entweder in Arena nochmals auf 'Play' klicken, oder in der Engine selbst den Befehl zum Ziehen aktivieren (z.B. ZIEH bei den oben erwähnten Mephistos, oder sonst Move, Enter, Go usw.). dann ist die Vorgangsweise eigentlich recht einfach und logisch. Beachten muß man in Arena eben nur die folgenden 3 Punkte: a) das alles funktioniert nur im WB-Modus (also mit den Engines im WB-Protokoll) b) man muß es im ANALYSE-Modus ausführen, nicht im Edit-Modus c) man muß ZUERST den Analyse-Modus in Arena aktivieren, DANN erst den MultiPlayer-Modus in der Engine (sonst schaltet Arena diesen MultiPlayer-Modus wieder aus). Wie man sieht sind also solche 'speziellen' Aufgaben auch unter Arena (im WB-Modus) möglich, weshalb es eventuell sogar keine schlechte Idee ist, MessChess in Arena prinzipiell im WB-Modus zu betreiben, d.h. die Datei 'ArenaENG_WB.cfg' anstelle der 'ArenaENG.cfg' zu benutzen. Grüße, Franz Many thanks for the detailed post but I am having trouble finding where the Engine: MultiPlayer is located?! Regards Bryan |
|
|||||||||||
Re: MessChess und Arena - Fragen und Antworten
Hi,
Novag Delta-1 plugin fails each time the device triggers a check, as the move is then displayed blinking (twice as fast as the 'thinking' display, blinking as well). It seems tricky to adapt the lua code, but I share a manual workaround: - input once again the Delta-1 move coordinates, using the Mess emulated device keyboard, do not Enter - wait a couple of seconds for the plugin to grasp the stabilized display, then clear it immediately (CE key) to let the device be ready for opponent's next input. Might be useful for some other devices behaving same way, if any? Gruß, Eric |
|
|||||||||||
AW: Re: MessChess und Arena - Fragen und Antworten
I've already updated my 'Plugins_Update' in the Mess-thread and on my download site ... Regards, Franz Geändert von fhub (06.11.2019 um 14:05 Uhr) |
Folgender Benutzer sagt Danke zu fhub für den nützlichen Beitrag: | ||
Tibono (06.11.2019) |
|
|||||||||||
Re: MessChess und Arena - Fragen und Antworten
Hi all,
thanks Franz, great! Indeed working. I must admit I don't understand why, maybe the lua code 'end of thinking' detection is smarter than I would have expected. I thought it would endless wait until a full stop of blinking... Another weak machine topic: the Mattel Computer Chess. Cursor moves are very sensitive to the used timer for key pressing. Slightly too much and the repeated key shifts the cursor too far away; slightly too short and some cursor moves lack. If the timer is not accurately tuned, the entered move may shift from expected target position, resulting in an illegal or wrong move. This is controlled in mchess.lua, function interface.select_piece(x, y, event). Five 'send_input' commands (Left, Left, Right, Down, Up) share the same timer value (initially 0.75 seconds). Move & Enter commands can use a longer timer value, they are not that sensitive to automatic repetition. The first 'Left' command is used to activate (wake-up) the cursor. 0.75 was slightly too long, I sometimes got shifted moves tentatives. With higher values tested (such as 0.9) the cursor runs far away from target. Adding extra waits in the 'while' loops did not help. 0.55 was slightly too short. The cursor sometimes failed to reach its target. So I updated the timer to the average value 0.65, with fully satisfying result. Just fine tuning, but may depend on each own hardware performance. And the error margin is short! Talking about performance, another trick I use: displayed emulation windows can use significant CPU power; resulting in potential issues running Arena tournaments opposing MessChess emulations. To save CPU bandwidth, a simple trick is to minimize the Mess windows. Just check the CPU% using task manager, it drops down. OK, but as you may not be watching the running tournament while any MessChess process starts, displayed windows come back... Mess setting lets you choose to start windows maximized or not, but no choice for minimized (of course useless out of MessChess engines context). So I updated my mess.cmd command (Arena directory) this way: Code:
@echo off cd.. start /B /MIN /WAIT MessChess.exe %1 %2 %3 %4 %5 cd Arena Gruß, Eric |
|
|||||||||||
Re: MessChess und Arena - Fragen und Antworten
Hallo alle,
I go on with some tips: (English language, sorry - my German is too bad) bug in fexc68k.lua (Fidelity Excel 68000): currently: Code:
function interface.setup_machine() -- send_input(":IN.0", 0x80, 0.5) -- NEW GAME -- emu.wait(1.0) -- send_input(":IN.0", 0x01, 0.5) -- CLEAR emu.wait(1.0) interface.cur_level = "a1" interface.setlevel() end function interface.start_play(init) sb_reset_board(":board") emu.wait(1.0) send_input(":IN.0", 0x02, 1) -- MOVE end Code:
function interface.setup_machine() sb_reset_board(":board") emu.wait(1.0) -- send_input(":IN.0", 0x80, 0.5) -- NEW GAME -- emu.wait(1.0) -- send_input(":IN.0", 0x01, 0.5) -- CLEAR -- emu.wait(1.0) interface.cur_level = "a1" interface.setlevel() end function interface.start_play(init) send_input(":IN.0", 0x02, 1) -- MOVE end Additional delay potentially needed for letting the engines start smoothly in automated tournaments: I experienced several times some engines failing to start correctly (MessChess process starts, but when the GUI wants to send further input, the emulated device is not in a position to receive, and the game & tournament hang). The device nevertheless later answers correctly to manual commands, showing evidence a protocol timing issue between the GUI and the engine. This mostly happens with tournaments fast starts, such as those driven by ArenaSwiss, but may also happen with basic tournaments fully managed in Arena GUI, at start, when both opponents engage playing and both engines need to boot. Perhaps this only happens using weak hardware such as my old laptop, requiring more time for the engines to be fully ready after booting, so use this tip only if any useful for you: - edit init.lua (located in CB-Emu\MessChess\plugins\chessengine) - find function board_reset() - add a convenient pause before interface.setup_machine(), such as: Code:
local function board_reset() game_started = false .... cropped lines.... { -3,-5,-4,-2,-1,-4,-5,-3 }} if interface.setup_machine then emu.wait(5) interface.setup_machine() end end Code:
local function sb_reset_board(tag) send_input(tag .. ":UI", 0x0200, 0.09) -- SensorBoard RESET emu.wait(5) end These two additional pauses slightly delay the device start-up but it is a one-off extra delay, worth the gained reliability at tournaments start-up. Hint #1: do not use Arena tournament setting in Start/Quit tab 'Additional delay during engine start phase' to provide a pause (so let value=0), as during this wait the GUI uses high CPU - ruining the expected more comfortable start for the MessChess engines. Hint #2: use the mess.cmd syntax I suggested above in previous post, should you experience some performance issue in automated tournaments - moreover should you like to set >100% emulation speed! Gruß, Eric |
|
|||||||||||
Re: MessChess und Arena - Fragen und Antworten
Hi,
about Fidelity Voice Chess Challenger (vcc) & Advanced (uvc): In my tournaments, MessChess often ended failing to enter moves correctly, due to too fast inputs while the computer was speaking. Player-machine is not that affected, as one usually waits for the annoucements to complete, but in automated tournaments it was an issue. As these are based on cc10 interface, it would not have been smart to delay the CC10 play because of the voice ones, and announcements get boring in automated tournaments - so my choice has been to add a 'Spk' key hit to shut their mouth, and this way it is no use to delay key hits - apart from the reset phase, where the devices talk a long welcome speech ending in level setting inquire. By the way, I had to copy the vcc.lua into a carbon copy uvc.lua (it was lacking). updated content for both (one line added at setting level start, one delay enlarged after reset): Code:
-- license:BSD-3-Clause -- copyright-holders:Sandro Ronco interface = load_interface("cc10") function interface.setlevel() send_input(":IN.1", 0x01, 1) -- spk if (interface.cur_level == nil or interface.cur_level == interface.level) then return end interface.cur_level = interface.level local lcd_num = { 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x67, 0x76 } repeat send_input(":IN.0", 0x02, 1) -- LV until machine:outputs():get_value("digit3") == lcd_num[interface.level] send_input(":IN.2", 0x01, 1) -- CL end function interface.setup_machine() interface.turn = true interface.invert = false send_input(":RESET", 0x01, 1) -- RE emu.wait(10) send_input(":IN.2", 0x01, 1) -- CL interface.cur_level = 1 interface.setlevel() end return interface |
|
|||||||||||
AW: MessChess und Arena - Fragen und Antworten
Hm... I don't know how it is in Winboard. But I had a minimum of 80 Games with the VCC and the UVC Engines in Arena while testing different engines in Arena Tournaments. Some in normal Speed, some with about 500% Speed. Some were Tournament Games, some were Active Games (30 min per game). I never experienced such problems as those you described. All moves were made correctly. There never have been errors because of the speaking.
OK, the spoken messages sound a little bit crazy if the VCC or the UVC get quick answers (or better, it sounds like the VCC is a little bit drunk), but that was all. Therefore I am not sure if those messages are really the reason for your problems.
__________________
Mein Profil beim ICCF (International Correspondence Chess Federation) https://www.iccf.com/player?id=89948&tab=3 |
Folgender Benutzer sagt Danke zu Hartmut für den nützlichen Beitrag: | ||
Tibono (11.11.2019) |
|
|||||||||||
Re: MessChess und Arena - Fragen und Antworten
Hi Hartmut,
Yes turning off the speaker did solve the failed moves I faced. I run a quite old HP620 laptop (2 cores x 2,1Ghz), the computing power is enough for the usage I have, but it is quite limited elsewhere, including display performance and sound as well. I guess I have sort of a bottleneck for playing sounds ; mostly if several processes want to, at the very same time, and causing some lag in the executed process. Indeed the first time I had this issue was a tournament game between the vcc and the uvc, so two chatterbox... And I am fully supportive of: 'if it works, don't change it' ! Eric |
Themen-Optionen | |
Ansicht | |
|
|
Ähnliche Themen | ||||
Thema | Erstellt von | Forum | Antworten | Letzter Beitrag |
MessEmu: MessChess und Winboard | fhub | Mess Emu & andere Emulationen / Mess Emu and other Emulations | 33 | 13.10.2019 14:16 |
Frage: Oldies auf modernem PC installieren: Fragen über Fragen | Mythbuster | Oldie & Retro Schachprogramme / Chess Programs | 103 | 22.04.2019 01:13 |
Frage: Ein paar fragen zu Arena Engines. | marsias | Die ganze Welt der Schachcomputer / World of chess computers | 4 | 06.10.2016 21:45 |
Info: Excalibur Fragen und Antworten | spacious_mind | Die ganze Welt der Schachcomputer / World of chess computers | 23 | 26.10.2008 22:57 |