Duck Chess

Discussion of chess software programming and technical issues.

Moderator: Ras

User avatar
hgm
Posts: 28353
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Duck Chess

Post by hgm »

MTaktikos wrote: Sun Jan 08, 2023 1:27 am
hgm wrote: Sat Jan 07, 2023 6:41 pm It doesn't look like a WinBoard adjudication: the result message in that case usually starts with "XBoard adjudication : ...". It could be an engine claim.
But - weakplayer were no engines. All the moves were played manually by me. The adjucation can be easily reproduced by playing in Edit mode this moves
But that does not exclude it. It depends on whether WinBoard was started in Game Viewer mode (and no engine was loaded later through the menu). When an engine is loaded even in Edit Game mode the first engine follows the game, and kicks in through "Illegal move" or result commands when it feels appropriate.
MTaktikos
Posts: 59
Joined: Fri Oct 25, 2019 7:58 pm
Full name: Michael Taktikos

Re: Duck Chess

Post by MTaktikos »

hgm wrote: Sun Jan 08, 2023 8:28 am But that does not exclude it. It depends on whether WinBoard was started in Game Viewer mode (and no engine was loaded later through the menu). When an engine is loaded even in Edit Game mode the first engine follows the game, and kicks in through "Illegal move" or result commands when it feels appropriate.
Let me describe the test better (Today, I repeated it again to be sure):
At Winboard start, DuckChess was loaded, and after the start, no engine was loaded through the Engines menu (wanted to see what Winboard says and not to use any engine at all). In the Adjucation menu "Verify Engine Claims" was on.
In the Mode "Edit game", I made the described moves (not to forget the credits: source of this moves is
https://discord.com/channels/7793178168 ... 1228207214)
After the last move, Rd8, h7, since Black had no more moves and so the game was over, we have a situation where Winboard should had adjucate the result of this position, but nothing happened, for Winboard the game was not over at all. So I had to start with "Mode/Machine Black" the DuckSlayer engine.
Immediately the wrong result 1-0 was shown (correct is 0-1), and a Winboard user expects that this result comes from Winboard and not from an engine claim, else the option "Verify Engine Claims" makes no sense.

[Event "Computer Chess Game"]
[Site "DESKTOP-UG2MCF4"]
[Date "2023.01.08"]
[Round "-"]
[White "mtaktikos"]
[Black "DuckSlayer 0.00, Winboard: Verify Engine Claims"]
[Result "1-0"]
[TimeControl "60/120"]
[Variant "duck"]

1. e4,d6 f6,d4 2. Nf3,c4 c5,c3 3. Ng5,b3 Qa5,c3 4. Nf7,b3 Qxa2,c3 5.
Nxh8,b3 Kf7,c3 6. Ng6,b3 h6,c3 7. Nf4,d3 Kg6,e3 8. Nh3,f3 Kh7,g3 9. Nf4,f3
Kh8,g3 10. h4,f3 Qxb1,b3 11. g4,a2 d5,a3 12. Nxd5,a2 Kh7,a3 13. e5,b3
Qa2,c3 14. e6,b3 Qb1,c3 15. f4,b3 c4,c3 16. f5,b3 c3,d3 17. g5,e3 Kh8,f3
18. g6,e3 Qxc1,f3 19. h5,e3 Qxd1,f3 20. Rxd1,e3 cxd2,d3 21. Rxd2,c3 b6,a3
22. Nxb6,b3 Kh7,c3 23. Nxa8,b3 Na6,c3 24. Bxa6,b3 Bd7,c3 25. Rxd7,d3 Kh8,b3
26. Rd8,h7
1-0

Image

Then I made a second repetition of the test, this time the option "Verify Engine Claims" was switched off, and the option "Test Legality" on.
Indeed this time a result was shown without the need to start "Machine Black", and there appeared another result - unfortunately not the correct one 0-1

[Event "Edited game"]
[Site "DESKTOP-UG2MCF4"]
[Date "2023.01.08"]
[Round "-"]
[White "mtaktikos, Winboard: Legality on"]
[Black "-"]
[Result "1/2-1/2"]
[Variant "duck"]

1. e4,d6 f6,d4 2. Nf3,c4 c5,c3 3. Ng5,b3 Qa5,c3 4. Nf7,b3 Qxa2,c3 5.
Nxh8,b3 Kf7,c3 6. Ng6,b3 h6,c3 7. Nf4,d3 Kg6,e3 8. Nh3,f3 Kh7,g3 9. Nf4,f3
Kh8,g3 10. h4,f3 Qxb1,b3 11. g4,a2 d5,a3 12. Nxd5,a2 Kh7,a3 13. e5,b3
Qa2,c3 14. e6,b3 Qb1,c3 15. f4,b3 c4,c3 16. f5,b3 c3,d3 17. g5,e3 Kh8,f3
18. g6,e3 Qxc1,f3 19. h5,e3 Qxd1,f3 20. Rxd1,e3 cxd2,d3 21. Rxd2,c3 b6,a3
22. Nxb6,b3 Kh7,c3 23. Nxa8,b3 Na6,c3 24. Bxa6,b3 Bd7,c3 25. Rxd7,d3 Kh8,b3
26. Rd8,h7
{Stalemate} 1/2-1/2

In both tests, no message "Winboard Adjucation" was visible. Since in the first test the engine had to be started, I expect that the first result came from DuckSlayer and the second from Winboard. None of the both found the correct result 0-1.
If the second result, which is typical for standard chess, came indeed from Winboard, it should be noted that also many other standard-chess adjucations cannot be transfered 1:1 to duckchess (examples: K+P vs K in chess is mostly a draw, in duckchess it is a win. K + N vs K in chess is draw, in duckchess is a win), so it would be wrong if such adjucations are already integrated in Winboard
User avatar
hgm
Posts: 28353
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Duck Chess

Post by hgm »

Indeed, the first message was coming from DuckSlayer. Adjudication options like Detect mates and Verify engine claims only work with legality testing on, as there is no way to do such things when WinBoard is not aware of the game rules. (This unlike 50-move and rep-draws, which can be recognized even without rule knowledge.)

You are correct that WinBoard assigns a wrong result for stalemate in Duck Chess; I was not even aware of this (rather counter intuitive) rule. I will fix that.

Options like Insufficient mating material should not be used in most variants, and to avoid problems engines should not claim them. WinBoard is configurable now for different piece moves, but not smart enough to deduce from those which pieces can checkmate, or force checkmate. In Duck Chess you can win with any piece combination, even K vs K, so there should be no such claims, and the adjudication option must be switched off.

[Edit] I uploaded a new version to http://hgm.nubati.net/Duck2.zip , which knows that stalemate is a loss (like in Suicide).
rgrosz789
Posts: 121
Joined: Sat Dec 03, 2022 9:28 pm
Full name: Rick Groszkiewicz

Re: Duck Chess

Post by rgrosz789 »

rgrosz789 wrote: Sat Jan 07, 2023 11:24 pm Something seems to have changed in the latest version of Winboard. When I analyzed Duck chess games before, the move-by-move evaluation would be included when I saved the PGN file:
Never mind - I forgot to check "Extended PGN information" under Options / General
Retired actuary and software developer. I love chess, coffee, wine and food
MTaktikos
Posts: 59
Joined: Fri Oct 25, 2019 7:58 pm
Full name: Michael Taktikos

Re: Duck Chess

Post by MTaktikos »

hgm wrote: Sun Jan 08, 2023 12:54 pm I was not even aware of this (rather counter intuitive) rule [...].
Fully agree that the rule is counter-inuitive,. Also in the suite Winboard + FSF I linked here, it was an FSF from last December with this rule not implemented :)
Options like Insufficient mating material should not be used in most variants, and to avoid problems engines should not claim them.
Yes, that makes sense
I uploaded a new version to http://hgm.nubati.net/Duck2.zip , which knows that stalemate is a loss (like in Suicide).
Thanks a lot, HGM! To make things complete, I updated the suite with your new Winboard and a new FSF version which both know this rule: https://filehorst.de/d/eexCeEoi
Have noticed that also TJChessDuck knows this rule, while DuckSlayer thinks stalemate = win, and Mayhem stalemate = draw
User avatar
hgm
Posts: 28353
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Duck Chess

Post by hgm »

DuckSlayer has still many flaws (and did even crash due to an assert in a game posted earlier here), but I currently have no time to work on it.
defrag71
Posts: 5
Joined: Wed Dec 28, 2016 12:46 pm
Location: Italy

Re: Duck Chess

Post by defrag71 »

MTaktikos wrote: Mon Jan 09, 2023 12:32 am Thanks a lot, HGM! To make things complete, I updated the suite with your new Winboard and a new FSF version which both know this rule: https://filehorst.de/d/eexCeEoi
Have noticed that also TJChessDuck knows this rule, while DuckSlayer thinks stalemate = win, and Mayhem stalemate = draw
Thanks.
FSF now works flawlessly and improved its strength a bit, especially with NNUE.
I had to change a couple of lines because compile failed (the provided .exe crashed because of old hardware):

Code: Select all

  assert(verify_material(pos, strongSide, 3000, 1));
  assert(verify_material(pos, weakSide, -3000, 0));
to -->

Code: Select all

  assert(verify_material(pos, strongSide, VALUE_VIRTUAL_MATE, 1));
  assert(verify_material(pos, weakSide, VALUE_VIRTUAL_LOSS, 0));
MTaktikos
Posts: 59
Joined: Fri Oct 25, 2019 7:58 pm
Full name: Michael Taktikos

Re: Duck Chess

Post by MTaktikos »

defrag71 wrote: Mon Jan 09, 2023 12:51 pm FSF now works flawlessly and improved its strength a bit, especially with NNUE.
I had to change a couple of lines because compile failed (the provided .exe crashed because of old hardware):

Code: Select all

  assert(verify_material(pos, strongSide, 3000, 1));
  assert(verify_material(pos, weakSide, -3000, 0));
to -->

Code: Select all

  assert(verify_material(pos, strongSide, VALUE_VIRTUAL_MATE, 1));
  assert(verify_material(pos, weakSide, VALUE_VIRTUAL_LOSS, 0));
Thank you for this note and the solution you provided!
JohnWoe
Posts: 529
Joined: Sat Mar 02, 2013 11:31 pm

Re: Duck Chess

Post by JohnWoe »

I'm surprised to see stalemate issues in MayhemDuck. Seems to work just fine. Anyway removed all material draw stuff. Since KvK is not a draw.

Code: Select all

[Event "Computer Chess Game"]
[Site "DESKTOP"]
[Date "2023.01.15"]
[Round "-"]
[White "MayhemDuck 2.0 (UCI2WB)"]
[Black "MayhemDuck 2.0 (UCI2WB)"]
[Result "1/2-1/2"]
[TimeControl "60+3"]
[Variant "duck"]
[FEN "4k3/4P3/4K3/8/8/8/8/8 w - - 0 1"]
[SetUp "1"]

{--------------
. . . . k . . .
. . . . P . . .
. . . . K . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
white to play
--------------}
1. Kd6,f7 Kf8,e8 2. exf8=Q,a8
{stalemate} 1/2-1/2 

Code: Select all

[Event "Computer Chess Game"]
[Site "DESKTOP"]
[Date "2023.01.15"]
[Round "-"]
[White "MayhemDuck 2.0 (UCI2WB)"]
[Black "MayhemDuck 2.0 (UCI2WB)"]
[Result "1/2-1/2"]
[TimeControl "60+3"]
[Variant "duck"]
[FEN "7k/8/8/7K/8/8/8/8 w - - 0 1"]
[SetUp "1"]

{--------------
. . . . . . . k
. . . . . . . .
. . . . . . . .
. . . . . . . K
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
white to play
--------------}
1. Kg6,g8 Kg7,a1 2. Kxg7,a8
{stalemate} 1/2-1/2
Tested the latest WinBoard under Linux Mint.
v2.0 captured all pieces but the ended in stalemate.
Anyway I believe v2.0 is the best MayhemDuck.

Code: Select all

[Event "Computer Chess Game"]
[Site "DESKTOP"]
[Date "2023.01.14"]
[Round "-"]
[White "MayhemDuck 2.0 (UCI2WB)"]
[Black "MayhemDuck 1.9 (UCI2WB)"]
[Result "1/2-1/2"]
[TimeControl "60+1"]
[Variant "duck"]
[Annotator "1. +0.24   1... -0.18"]

1. Nf3,f6 Na6,c3 2. e4,b4 Nc5,c3 3. Bd3,f6 d5,c3 4. Bb5,c6 Bd7,f1 5. Ne5,c6
dxe4,f1 6. b4,c6 f6,e2 7. Ng4,c6 h5,e3 8. O-O,c6 hxg4,e1 9. bxc5,c6 e5,f3
10. Nc3,e7 c6,c4 11. Qxg4,f5 cxb5,b1 12. Qh5,h6 Bxc5,g6 13. Qxh8,f7 Bd4,b2
14. Qxg8,f8 Ke7,b1 15. Nd5,f8 Kd6,b1 16. Qxd8,c8 Bxa1,e3 17. Nc7,b8 e3,b1
18. fxe3,b8 Bd4,e4 19. exd4,b8 b4,a1 20. dxe5,c8 fxe5,b3 21. Nxa8,e6 e4,a3
22. Bb2,g6 e3,b3 23. dxe3,g6 Kc6,c3 24. Qc7,c5 Kd5,c6 25. Qxd7,c4 Kc5,b6
26. Rf5,c4 a5,e5 27. Bd4,c4 Kxd4,c3 28. Qxd4,b8 b3,b6 29. cxb3,b8 b5,a4 30.
Rxb5,b8 a4,a5 31. Qxg7,b8 axb3,b2 32. Nb6,a8 bxa2,a1 33. Nc4,a8 a1=Q,b1 34.
Qxa1,a8
{stalemate} 1/2-1/2
MTaktikos
Posts: 59
Joined: Fri Oct 25, 2019 7:58 pm
Full name: Michael Taktikos

Re: Duck Chess

Post by MTaktikos »

Good news, Belzedar and I have published today our first official duck nnue net, can be downloaded from
https://fairy-stockfish.github.io/nnue/
Have updated here the complete winboard suite with the strongest FSFDuck so far (avx2 compile), combined with this net, and the other duck engines:
https://filehorst.de/d/etcBsCHx

Enjoy!