Schachcomputer.info Community

Zurück   Schachcomputer.info Community > Bereich Computerschach: > Mess Emu und andere Emulationen


Antwort
 
Themen-Optionen Ansicht

  #21  
Alt 05.11.2019, 00:34
Hartmut Hartmut ist offline
Schachcomputer Koryphäe
 
Registriert seit: 01.04.2010
Ort: Nürnberg
Alter: 55
Land:
Beiträge: 1.664
Abgegebene Danke: 1.370
Erhielt 1.030 Danke für 575 Beiträge
Activity Longevity
14/20 13/20
Today Beiträge
1/3 sssss1664
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
Mit Zitat antworten
  #22  
Alt 05.11.2019, 14:03
Benutzerbild von Bryan Whitby
Bryan Whitby Bryan Whitby ist offline
MACH III
 
Registriert seit: 14.07.2009
Beiträge: 126
Bilder: 15
Abgegebene Danke: 70
Erhielt 140 Danke für 45 Beiträge
Activity Longevity
5/20 14/20
Today Beiträge
0/3 ssssss126
AW: MessChess und Arena - Fragen und Antworten

 Zitat von fhub Beitrag anzeigen
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.
Die Punkte 5) bis 8) könnte man auch noch etwas abändern (z.B. den eigenen ersten Zug nach
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.).
Das sieht in geschriebener Form etwas kompliziert aus, aber wenn man das Prinzip einmal verstanden hat,
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
Franz

Many thanks for the detailed post but I am having trouble finding where the Engine: MultiPlayer is located?!

Regards
Bryan
Mit Zitat antworten
  #23  
Alt 05.11.2019, 16:04
fhub fhub ist offline
Schachcomputer Koryphäe
 
Registriert seit: 19.04.2010
Beiträge: 1.223
Abgegebene Danke: 55
Erhielt 2.003 Danke für 511 Beiträge
Activity Longevity
12/20 13/20
Today Beiträge
1/3 sssss1223
AW: MessChess und Arena - Fragen und Antworten

Hi Bryan,
 Zitat von Bryan Whitby Beitrag anzeigen
Many thanks for the detailed post but I am having trouble finding where the Engine: MultiPlayer is located?!
MultiPlayer is not an engine, it's a special mode that most engines have, where you can enter all moves and the engine doesn't respond - usually it's called MultiPlayer, MultiMove, 2 Players, Player vs. Player etc. ...

Regards,
Franz
Mit Zitat antworten
  #24  
Alt 05.11.2019, 20:48
Tibono Tibono ist offline
Novag Chess Robot
 
Registriert seit: 22.05.2018
Ort: Frankreich
Alter: 58
Land:
Beiträge: 52
Abgegebene Danke: 45
Erhielt 51 Danke für 21 Beiträge
Activity Longevity
8/20 2/20
Today Beiträge
1/3 sssssss52
Idee 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
Mit Zitat antworten
  #25  
Alt 06.11.2019, 13:50
fhub fhub ist offline
Schachcomputer Koryphäe
 
Registriert seit: 19.04.2010
Beiträge: 1.223
Abgegebene Danke: 55
Erhielt 2.003 Danke für 511 Beiträge
Activity Longevity
12/20 13/20
Today Beiträge
1/3 sssss1223
AW: Re: MessChess und Arena - Fragen und Antworten

 Zitat von Tibono Beitrag anzeigen
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).
Changing 'emu.wait(0.5)' to 'emu.wait(0.4)' in 'function interface.is_selected(x, y)' does the trick - with this shorter delay also fast blinking checks are recognized correctly as moves.

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)
Mit Zitat antworten
Folgender Benutzer sagt Danke zu fhub für den nützlichen Beitrag:
Tibono (06.11.2019)
  #26  
Alt 06.11.2019, 23:25
Tibono Tibono ist offline
Novag Chess Robot
 
Registriert seit: 22.05.2018
Ort: Frankreich
Alter: 58
Land:
Beiträge: 52
Abgegebene Danke: 45
Erhielt 51 Danke für 21 Beiträge
Activity Longevity
8/20 2/20
Today Beiträge
1/3 sssssss52
Daumen hoch 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
Should someone like to, this syntax also enables setting priority level and affinity for the MessChess process.

Gruß, Eric
Mit Zitat antworten
  #27  
Alt 08.11.2019, 13:50
Tibono Tibono ist offline
Novag Chess Robot
 
Registriert seit: 22.05.2018
Ort: Frankreich
Alter: 58
Land:
Beiträge: 52
Abgegebene Danke: 45
Erhielt 51 Danke für 21 Beiträge
Activity Longevity
8/20 2/20
Today Beiträge
1/3 sssssss52
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
reset board needs to be moved, should be:
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
and same after any board reset (not all devices use a board reset)
Code:
local function sb_reset_board(tag)
	send_input(tag .. ":UI", 0x0200, 0.09)	-- SensorBoard RESET
	emu.wait(5)
end
This 5s pause will add to the ones already included device per device and individually tuned (most often 1s like for above fexc68k, more time for some slow booting devices, e.g. 5s for Saitek Risc 2500). With an added 5s the reset wait ranges then from 6 to 10 seconds or so, according to the device.

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
Mit Zitat antworten
Folgende 2 Benutzer sagen Danke zu Tibono für den nützlichen Beitrag:
fhub (08.11.2019), Luis (08.11.2019)
  #28  
Alt 10.11.2019, 16:07
Tibono Tibono ist offline
Novag Chess Robot
 
Registriert seit: 22.05.2018
Ort: Frankreich
Alter: 58
Land:
Beiträge: 52
Abgegebene Danke: 45
Erhielt 51 Danke für 21 Beiträge
Activity Longevity
8/20 2/20
Today Beiträge
1/3 sssssss52
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
Gruß, Eric
Mit Zitat antworten
  #29  
Alt Gestern, 00:00
Hartmut Hartmut ist offline
Schachcomputer Koryphäe
 
Registriert seit: 01.04.2010
Ort: Nürnberg
Alter: 55
Land:
Beiträge: 1.664
Abgegebene Danke: 1.370
Erhielt 1.030 Danke für 575 Beiträge
Activity Longevity
14/20 13/20
Today Beiträge
1/3 sssss1664
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
Mit Zitat antworten
Folgender Benutzer sagt Danke zu Hartmut für den nützlichen Beitrag:
Tibono (Gestern)
  #30  
Alt Gestern, 14:38
Tibono Tibono ist offline
Novag Chess Robot
 
Registriert seit: 22.05.2018
Ort: Frankreich
Alter: 58
Land:
Beiträge: 52
Abgegebene Danke: 45
Erhielt 51 Danke für 21 Beiträge
Activity Longevity
8/20 2/20
Today Beiträge
1/3 sssssss52
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
Mit Zitat antworten
Antwort

Themen-Optionen
Ansicht

Forumregeln
Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist An.
Smileys sind An.
[IMG] Code ist An.
HTML-Code ist An.

Gehe zu

Ähnliche Themen
Thema Erstellt von Forum Antworten Letzter Beitrag
MessEmu: MessChess und Winboard fhub Mess Emu und andere Emulationen 33 13.10.2019 14:16
Frage: Oldies auf modernem PC installieren: Fragen über Fragen Mythbuster Oldie & Retro Schachprogramme 103 22.04.2019 01:13
Frage: Ein paar fragen zu Arena Engines. marsias Die ganze Welt der Schachcomputer 4 06.10.2016 21:45
Info: Excalibur Fragen und Antworten spacious_mind Die ganze Welt der Schachcomputer 23 26.10.2008 22:57


Alle Zeitangaben in WEZ +1. Es ist jetzt 12:29 Uhr.



Powered by vBulletin (Deutsch)
Copyright ©2000 - 2019, Jelsoft Enterprises Ltd.
©Schachcomputer.info