Problems with Windboard saving PGN games

Discussions about Winboard/Xboard. News about engines or programs to use with these GUIs (e.g. tournament managers or adapters) belong in this sub forum.

Moderator: Andres Valverde

Problems with Windboard saving PGN games

Postby matematiko » 27 May 2009, 03:16

Hello all,

I use an ICS emulator and Winboard_X to play games in Yahoo and I am having problems with the way the games are saved.

The games are saved perfectly fine if I am playing with or without an engine, the problems arise when I am just observing games.

If Winboard_x was launched with out an engine (omitting /zp), the game moves are saved correctly but the players elo is omited:
Code: Select all
[Event "ICS rated lightning match"]
[Site "127.0.0.1"]
[Date "2009.05.26"]
[Round "-"]
[White "meridapepe"]
[Black "r_seko"]
[Result "0-1"]
[TimeControl "60"]

1. e4 b6 2. g3 Bb7 3. Bg2 h5 4. h4 e6 5. d3 f6 6. Nc3 g5 7. hxg5 fxg5 8.
Nf3 h4 9. Bxg5 Be7 10. Bxh4 Bxh4 11. Rxh4 Rxh4 12. Nxh4 Qg5 13. Qf3 Nc6 14.
Qf4 Qg7 15. O-O-O O-O-O 16. d4 e5 17. Qe3 exd4 18. Qf4 dxc3 19. b3 Na5 20.
Nf5 Qf6 21. Nd4 Qxf4+ 22. gxf4 Ne7 23. f5 c5 24. Nb5 Nxf5 25. Nd6+ Nxd6
{r.seko wins} 0-1


This is a short section of the winboard.debug file (does not correspond to the game shown above) where the saved game omits the player's elo.
Code: Select all
<ICS: \012\015{Game 61 (leonbeck vs. vm_cezar) leonbeck checkmated} 0-1\012\015\012\015fics% Table 61: leonbeck's old rating: 1915; new rating: 1889\012\015fics% Table 61: vm_cezar's old rating: 1685; new rating: 1710\012\015fics%
GameEnds(32, leonbeck checkmated, 0)
<ICS: Table 61: leonbeck requests to start the game.\012\015fics%
<ICS: Table 61: vm_cezar requests to start the game.\012\015fics%
<ICS: Table 61: Start requests reset.\012\015fics%
<ICS: \012\015Creating: leonbeck (1889) vm_cezar (1710) rated lightning 1 0\012\015{Game 61 (leonbeck vs. vm_cezar) Creating rated lightning match.}\012\015fics%
Ratings from 'Creating:' leonbeck 1889, vm_cezar 1710
<ICS: \012<12> rnbqkbnr pppppppp -------- -------- -------- -------- PPPPPPPP RNBQKBNR W -1 1 1 1 1 0 61 leonbeck vm_cezar 0 1 0 39 39 60 60 1 none 0:00 none 0\012fics% Table 61: leonbeck requests to start the game.\012\015fics%
Parsing board: rnbqkbnr pppppppp -------- -------- -------- -------- PPPPPPPP RNBQKBNR W -1 1 1 1 1 0 61 leonbeck vm_cezar 0 1 0 39 39 60 60 1 none 0:00 none 0

Reset(0, 1) from gameMode 11
recognized 'normal' (-1) as variant normal
GameEnds(0, (null), 2)
recognized 'ICS rated lightning match' (-1) as variant normal
Remembered ratings: W 1889, B 1710
<ICS: \012<12> rnbqkbnr pppppppp -------- -------- ----P--- -------- PPPP-PPP RNBQKBNR B -1 1 1 1 1 0 61 leonbeck vm_cezar 0 1 0 39 39 59 60 1 P/e2-e4 0:00 e2e4 0\012fics%
Parsing board: rnbqkbnr pppppppp -------- -------- ----P--- -------- PPPP-PPP RNBQKBNR B -1 1 1 1 1 0 61 leonbeck vm_cezar 0 1 0 39 39 59 60 1 P/e2-e4 0:00 e2e4 0

Please observe that Winboard fails to write the player's elo despite these statements recorded by winboard.debug:
Ratings from 'Creating:' leonbeck 1889, vm_cezar 1710
Remembered ratings: W 1889, B 1710

If Winboard_x was launched with an engine via polyglot, the player's elo is now not omited but the first three half moves are replaced by a FEN notation:

Code: Select all
[Event "ICS rated lightning match"]
[Site "127.0.0.1"]
[Date "2009.05.26"]
[Round "-"]
[White "dcherizzann"]
[Black "pointstealer1964"]
[Result "0-1"]
[WhiteElo "1767"]
[BlackElo "1813"]
[TimeControl "60"]
[FEN "rnbqkbnr/pppp1ppp/4p3/8/3PP3/8/PPP2PPP/RNBQKBNR b KQkq - 0 2"]
[SetUp "1"]

{--------------
r n b q k b n r
p p p p . p p p
. . . . p . . .
. . . . . . . .
. . . P P . . .
. . . . . . . .
P P P . . P P P
R N B Q K B N R
black to play
--------------}
1... b6 2. Bd3 Bb7 3. f4 d6 4. Nf3 a6 5. O-O Nd7 6. e5 d5 7. c3 Qe7 8. f5
O-O-O 9. fxe6 fxe6 10. a4 g6 11. b4 h6 12. Na3 Bg7 13. a5 b5 14. Nxb5 axb5
15. Bxb5 Nb8 16. Qd3 c6 17. Ba4 Ba6 18. Qe3 Bxf1 19. Kxf1 Qb7 20. Qd3 Qa6
21. b5 cxb5 22. Bxb5 Qb7 23. a6 Qc7 24. a7 Nc6 25. Ba3 Kd7 26. Bd6 Qb7 27.
Ra6 Ne7 28. Bxe7 Kxe7 29. Rxc6 Qxa7 30. h3 Qa1+ 31. Kf2 Qa2+ 32. Kg3 Qa7
33. c4 Rc8 34. Rd6 Rc7
{pointstealer1964 wins} 0-1


This is a short section of the winboard.debug file, when polyglot is used and the first three half moves are "eaten":
Code: Select all
WinBoard 4.2.7 + polyglot15.exe
Reset(1, 0) from gameMode 0
recognized 'normal' (-1) as variant normal
GameEnds(0, (null), 2)
StartChildProcess (dir="") polyglot15.exe polyglot.ini
562 >first : xboard
protover 2
562 <first : PolyGlot 1.4W10UCIb12 by Fabien Letouzey
1014 <first : feature done=0
1014 >first : accepted done
1014 <first : feature analyze=1
1014 >first : accepted analyze
1014 <first : feature colors=0
1014 >first : accepted colors
1014 <first : feature draw=1
1014 >first : accepted draw
1014 <first : feature ics=1
1014 >first : accepted ics
1014 <first : feature myname="Rybka 3"
1014 >first : accepted myname
1014 <first : feature name=1
1014 >first : accepted name
1014 <first : feature pause=0
1014 >first : accepted pause
1014 <first : feature ping=1
1014 >first : accepted ping
1014 <first : feature playother=1
1014 >first : accepted playother
1014 <first : feature reuse=1
1014 >first : accepted reuse
1014 <first : feature san=0
1014 >first : accepted san
1014 <first : feature setboard=1
1014 >first : accepted setboard
1014 <first : feature sigint=0
1014 >first : accepted sigint
1014 <first : feature sigterm=0
1014 >first : accepted sigterm
1014 <first : feature time=1
1014 >first : accepted time
1014 <first : feature usermove=1
1030 >first : accepted usermove
1030 <first : feature memory=1
1030 >first : rejected memory
1030 <first : feature smp=1
1030 >first : rejected smp
1030 <first : feature egt="nalimov"
1030 >first : rejected egt
1030 <first : feature variants="normal"
1030 >first : accepted variants
1030 <first : feature done=1
1030 >first : accepted done
1045 >first : new
random
1045 >first : ics 127.0.0.1
1045 >first : hard
1045 >first : ping 1
<ICS: Welcome
<ICS: to YaY 3.2.1 Ultimate Flash Edition!!\012\015YaY is a fork of
<ICS: YtoICS (by Chris Howie a.k.a. crazycomputers),\012\015Programmers: matematiko/dene\012\015For a list of commands available in YaY Ultimate 3, enter the command "commands", without the quotes (").\012\015For a list of variables, enter the command
<ICS: "variables", without the quotes (").\012\015        -------- or --------\012\015Right click in this window, doing this will show most of the commands and variables.\012\015
1061 <first : pong 1
<ICS: You were logged in to Advanced Lounge 3 as: mistabota029\012\015fics%
>ICS: alias $ @\015\012$set interface WinBoard 4.2.7 + polyglot15.exe\015\012$iset startpos 1\015\012$iset ms 1\015\012$iset nohighlight 1\015\012$iset lock 1\015\012$style 12\015\012
<ICS: Server alert:\012\015It appears as though you were already connected to the\012\015games server ... your previous connection has been killed.\012\015fics%
<ICS: Client option games_common_sound set to .\012\015fics%
<ICS: Client option prowler_g set to 1.\012\015fics% Client option games_common_profanity set to 2.\012\015fics%
<ICS: Client option games_common_hidestar set to .\012\015fics%
<ICS: mistabota029 shouts: Hi\012\015(shouted to 113 players)\012\015fics%
>ICS: find 1/0\015\012
<ICS: \012\015Searching for 1/0 games....\012\015\012\015  6 majstorpravi78(2184) vs EMPTY         (----) Rated  Public\012\015 16   justletxiong(1924) vs r.seko        (1863) Rated  Public\012\015 22    dcherizzann(1782) vs pointstealer19(1798) Rated  Public\012\015 33     ar_parwani(1725) vs strogoffca    (1778) Rated  Public\012\015 46 mikekolnik2004(1748) vs diciem77      (1757) Rated  Public\012\015 47 usama_ben_jala(1969) vs EMPTY         (----) Rated  Public\012\015 50   marceliano21(1731) vs chadvu        (1575) Rated  Public\012\015 70      shan.sush(1915) vs EMPTY         (----) Rated  Public\012\015\012\0158 games found.\012\015fics%
>ICS: obs 22\015\012
<ICS: This table options are:\012\015Rated game: Yes.\012\015Game timer: 1 minute(s).\012\015Increment per move: 0 second(s).\012\015\012\015fics%
<ICS: You are now observing game 22.\012\015fics%
<ICS: Subroutine top_moves executed.\012\015fics%
<ICS: Table 22: Host is now pointstealer1964.\012\015fics%
<ICS: Table 22: dcherizzann requests to start the game.\012\015fics%
<ICS: Table 22: pointstealer1964 requests to start the game.\012\015fics%
<ICS: Table 22: Start requests reset.\012\015fics%
<ICS: \012\015Creating: dcherizzann (1767) pointstealer1964 (1813) rated lightning 1 0\012\015{Game 22 (dcherizzann vs. pointstealer1964) Creating rated lightning match.}\012\015fics%
Ratings from 'Creating:' dcherizzann 1767, pointstealer1964 1813
<ICS: \012<12> rnbqkbnr pppppppp -------- -------- -------- -------- PPPPPPPP RNBQKBNR W -1 1 1 1 1 0 22 dcherizzann pointstealer1964 0 1 0 39 39 60 60 1 none 0:00 none 0\012fics%
Parsing board: rnbqkbnr pppppppp -------- -------- -------- -------- PPPPPPPP RNBQKBNR W -1 1 1 1 1 0 22 dcherizzann pointstealer1964 0 1 0 39 39 60 60 1 none 0:00 none 0

recognized 'ICS rated lightning match' (-1) as variant normal
Remembered ratings: W 1767, B 1813
<ICS: \012<12> rnbqkbnr pppppppp -------- -------- ----P--- -------- PPPP-PPP RNBQKBNR B -1 1 1 1 1 0 22 dcherizzann pointstealer1964 0 1 0 39 39 57 60 1 P/e2-e4 0:00 e2e4 0\012fics%
Parsing board: rnbqkbnr pppppppp -------- -------- ----P--- -------- PPPP-PPP RNBQKBNR B -1 1 1 1 1 0 22 dcherizzann pointstealer1964 0 1 0 39 39 57 60 1 P/e2-e4 0:00 e2e4 0

27476 >first : usermove 27476 >first : e2e4
27632 <first : move c7c5
Undoing extra move from first, gameMode 14
27632 >first : undo
27725 <first : move c7c5
Undoing extra move from first, gameMode 14
27725 >first : undo
27741 <first : move c7c5
Undoing extra move from first, gameMode 14
27741 >first : undo
27756 <first : move c7c5
Undoing extra move from first, gameMode 14
27756 >first : undo
27772 <first : move c7c5
Undoing extra move from first, gameMode 14
27772 >first : undo
27788 <first : move c7c5
Undoing extra move from first, gameMode 14
27788 >first : undo
27803 <first : move c7c5
Undoing extra move from first, gameMode 14
27803 >first : undo
27819 <first : move c7c5
Undoing extra move from first, gameMode 14
27819 >first : undo
27834 <first : move c7c5
Undoing extra move from first, gameMode 14
27834 >first : undo
27850 <first : move c7c5
Undoing extra move from first, gameMode 14
27850 >first : undo
27866 <first : move c7c5
Undoing extra move from first, gameMode 14
27866 >first : undo
27881 <first : move c7c5
Undoing extra move from first, gameMode 14
27881 >first : undo
27897 <first : move c7c5
Undoing extra move from first, gameMode 14
27897 >first : undo
27912 <first : move c7c5
Undoing extra move from first, gameMode 14
27912 >first : undo
27928 <first : move c7c5
Undoing extra move from first, gameMode 14
27928 >first : undo
<ICS: \012<12> rnbqkbnr pppp-ppp ----p--- -------- ----P--- -------- PPPP-PPP RNBQKBNR W -1 1 1 1 1 0 22 dcherizzann pointstealer1964 0 1 0 39 39 57 59 2 P/e7-e6 0:00 e7e6 0\012fics%
Parsing board: rnbqkbnr pppp-ppp ----p--- -------- ----P--- -------- PPPP-PPP RNBQKBNR W -1 1 1 1 1 0 22 dcherizzann pointstealer1964 0 1 0 39 39 57 59 2 P/e7-e6 0:00 e7e6 0

27928 >first : usermove 27928 >first : e7e6
27944 <first : move c7c5
Undoing extra move from first, gameMode 14
27944 >first : undo
27944 <first : Illegal move: e7e6
27959 <first : move c7c5
Undoing extra move from first, gameMode 14
27959 >first : undo
27975 <first : move c7c5
Undoing extra move from first, gameMode 14
27975 >first : undo
27990 <first : move c7c5
Undoing extra move from first, gameMode 14
27990 >first : undo
28006 <first : move c7c5
Undoing extra move from first, gameMode 14
28006 >first : undo
28022 <first : move c7c5
Undoing extra move from first, gameMode 14
28022 >first : undo
28037 <first : move c7c5
Undoing extra move from first, gameMode 14
28037 >first : undo
28053 <first : move c7c5
Undoing extra move from first, gameMode 14
28053 >first : undo
28068 <first : move c7c5
Undoing extra move from first, gameMode 14


I know my ICS emulator has the capability to do things right because when I join a table with a game in progress, the server sends the move history, which is in turn parsed to winboard and this is the only scenario where the game moves are saved correctly and the player's elo are included:
Code: Select all
[Event "ICS Rated lightning match"]
[Site "127.0.0.1"]
[Date "2009.05.26"]
[Round "-"]
[White "meridapepe"]
[Black "r_seko"]
[Result "0-1"]
[WhiteElo "1654"]
[BlackElo "1728"]
[TimeControl "60"]

1. e4 b6 2. g3 Bb7 3. Bg2 h5 4. Nc3 e6 5. h4 g5 6. d3 gxh4 7. Rxh4 Nf6 8.
Bg5 Be7 9. Qf3 Ng4 10. Bxe7 Qxe7 11. Bh3 Qg5 12. Bxg4 Nc6 13. Rxh5 Rxh5 14.
Bxh5 O-O-O 15. g4 Nd4 16. Qd1 e5 17. Nge2 Ne6 18. Nd5 c6 19. Ne7+ Qxe7 20.
Qd2 d5 21. exd5 Rxd5 22. O-O-O Ng5 23. Nc3 Rd8 24. Re1 Nf3 25. Qe2 Nxe1 26.
Qxe1 c5 27. Ne4 f6 28. Qe3 Qe6 29. f4 Bxe4 30. Qxe4 Re8
{r.seko wins} 0-1



***************************************************************************

Having the ELO and all the moves saved correctly is very important for me and the
groups of people using this ICS Emulator (named YaY, and that I co-develop) because
we use these saved games to create bin books. For years we had been discarding the games that are not saved correctly but due to recent events I will have some more free time in my hands and I would like to tackle this problem with your help of course.

So, is there anything we are doing wrong? Or this a know bug/limitation of Winboard_X? Is there work around? Or there are some comands I should parse to Winboard to make this work as I expected to? By the way, in liue of this issues I just discovered the flag /debug and started using it but I am at lost. Is there a readme file somewhere that explains how to understand the info captured by winboard.debug file? Is there a website or readme file that explains the commands between the ICS server and winboard(not to be confuse with command between winboard and the engine ?

Thanks in advance for your kind help.
One that does not live to serve, does not deserve to live.
matematiko
 
Posts: 219
Joined: 07 Dec 2008, 17:11
Location: Texas

Re: Problems with Windboard saving PGN games

Postby H.G.Muller » 27 May 2009, 10:40

You say you are using Winboard_x. Please check first if the same happens when you use WinBoard 4.3.15. Then at least I know for sure I have the matching source code.

I cannot explain the omisson of the WhiteEo and BlackElo tags from the PGN. These tags sould only be suppressed in the source I have when gameInfo.whiteRating<0. And there is no place I could find in the source where the rating is set to -1, once it has been set to another value. Which it obviously has been. So I suspect I am not looking at the right source.

The case with engine is truly sick: you are observing a game, but the engine has been told to play a game! So it is coming with moves al the time, which WinBoard does not want. It seems like the version of WinBoard you are using is not capable of observing a game in zippy mode. I think this is (unintentionally) fixed in 4.3.15, where the involvement of an engine in zippy mode during observing had to be suppressed anyway: it could not even run along in force mode, because it might not be able to play the variant that you are observig (leading to hosts of 'Illegal move' popups).
User avatar
H.G.Muller
 
Posts: 3453
Joined: 16 Nov 2005, 12:02
Location: Diemen, NL

Re: Problems with Windboard saving PGN games

Postby matematiko » 28 May 2009, 02:19

Mr. Muller,

Thanks for your response.

I tried Winboard 4.3.15 as you suggested and the players ELO problem went away. Unfortunatelly the problem with the first three half move being omitted in the saved PGN game still exists. I had modified the ICS emulator code in several different ways to no avail.

You know, the weird thing is that if I enter the table when the game is in progress, the game is saved correctly, even if I came in with polyglot.

I will modify the emulator code in such a way that if I am an observer, the first (let's say) 5 half moves will be store in an array instead of parsing them to WinBoard, and after that pretend that I just arrived and mimic what the emulator does when just arriving to the table. I don't like this solution but is the only thing I can think of for the moment.

I am not aproching the problem with the correct methodology because obviously I don't know the ins and outs of the ICS-WinBoard protocol, if you can point me to the right direction on where to find this information I will more than thankful.

I don't know if this qualifies as a bug or limitation, but can you please tell me if you will consider creating a fix for this issue?

Regards

P.S. Before clicking the submit button I was reading at http://www.tim-mann.org/xboard/engine-intf.html and found this:
Code: Select all
force
Set the engine to play neither color ("force mode"). Stop clocks. The engine should check that moves received in force mode are legal and made in the proper turn, but should not think, ponder, or make moves of its own.


Is there a way to request WinBoard to send the force command to the engine?
One that does not live to serve, does not deserve to live.
matematiko
 
Posts: 219
Joined: 07 Dec 2008, 17:11
Location: Texas

Re: Problems with Windboard saving PGN games

Postby H.G.Muller » 28 May 2009, 08:12

I don't get it. You cannot observe a game that is not yet in progress, can you? When observing a game, you always jump into game in progress.

Normally WinBoard would request the move list of a game when it receives a board position of a game with a number different from the game it is currently displaying. It starts displaying the board position as soon as it receives this, but it will fill in the move history and determine variant type from the move list.

It seems the move list is not requested in your case. Are you sure the game number of the game you are observing is different from the game WnBoard was working on before? As you are working with an ICS emulator, the problem could very well be caused there. Why don't you use a real ICS, e.g. Lasker-2.2.3?

I can't say much unless you sent me a complete debug file of a case where the problem occurred.

Normally WinBoard decides when the engine should be in force mode and when not. Just interjecting "force" commands would alsmost always lead to incorrect operation. The regular way to get an engine in force mode (and have WinBoard expecting it is in force mode) is to click "Edit Game" in the mode menu. (Or observe a game in ICS-zippy mode.)
User avatar
H.G.Muller
 
Posts: 3453
Joined: 16 Nov 2005, 12:02
Location: Diemen, NL


Return to Winboard and related Topics

Who is online

Users browsing this forum: No registered users and 23 guests