OK, I made a debug file for the Lime problems:
Code: Select all
recognized 'fairy' (-1) as variant fairy
WinBoard 4.3.13 + ..\..\fairyengs\LimeNR_62_ja\limeNR
Reset(1, 0) from gameMode 0
recognized 'fairy' (-1) as variant fairy
GameEnds(0, (null), 2)
GameEnds(0, (null), 2) clock stopped
GameEnds(0, (null), 2) after test
StartChildProcess (dir="..\..\limeNR_62_ja") ..\..\fairyengs\LimeNR_62_ja\limeNR
639 >first : xboard
protover 2
639 <first :
639 <first : numelem = 666666
639 <first : Hash size 16000 kB
639 <first :
639 <first : Lime by Richard Allbert
639 <first : ------------
639 <first : Version v62 JA
639 <first : 28-06-08 Build
639 <first : Lime Homepage:
639 <first : http://www.geocities.com/taciturn_lemon/index.htm
639 <first :
639 <first : Nightrider variant version [Jim Ablett 28-06-08]
639 <first :
639 <first :
639 <first : received protover
639 <first : feature usermove=1
639 >first : accepted usermove
639 <first : feature ping=1
639 >first : accepted ping
639 <first : feature setboard=1
639 >first : accepted setboard
639 <first : feature reuse=1
639 >first : accepted reuse
639 <first : feature colors=0
639 >first : accepted colors
639 <first : feature variant=nightrider
639 >first : rejected variant
639 <first : feature name=0
639 >first : accepted name
639 <first : feature done=1
639 >first : accepted done
655 <first : received accepted
655 <first : received accepted
655 <first : received accepted
655 <first : received accepted
655 <first : received accepted
655 <first :
655 <first : error rejected variant
655 <first : received accepted
671 <first : received accepted
733 >first : new
random
733 >first : variant fairy
733 >first : level 40 1 0
733 >first : post
733 >first : hard
733 >first : easy
733 >first : ping 1
FEN castling rights: 7 0 4 7 0 4
733 >first : force
write FEN 50-move: 0 0 0
e0. p=-4
733 >first : setboard rhbqkbhr/pppppppp/8/8/8/8/PPPPPPPP/RHBQKBHR w KQkq - 0 1
Load Position
733 <first : received new
733 <first : received random
733 <first :
733 <first : error variant fairy
733 <first : received level
733 <first : movestogo = 40
733 <first : received post
733 <first : received hard
733 <first : received easy
733 <first : received ping
733 <first : pong 1
733 <first : received force
733 <first :
32214 <first : FEN ILLEGAL NUM. Press a key to close me.Druk op een toets om door te gaan. . .
Fatal Error: Error: first chess program (..\..\fairyengs\LimeNR_62_ja\limeNR) exited unexpectedly
GameEnds(0, (null), 2)
GameEnds(0, (null), 2) clock stopped
GameEnds(0, (null), 2) after test
39232 >first : quit
It seems that Lime chokes on the FEN with the Nightrider Chess initial position that I send it. Most likely because it does not like the letter H for Nightrider in that FEN. So it seems we have to tune the protocol a little so that all engines can use the same.
Currently WB does not know a variant nightrider, and to set an engine to play Nightrider Chess, it sets it to variant fairy, and then sends it the FEN of an initial position containing nightriders, inicated by the letter H in the FEN of the setboard, or (for protocol 1 engines) the edit command.
It is essential for the protocol to use a different letter for Nightrider than for Knight, as other variants played as variant fairy will have initial positions with ordinary Knights (and then Chancellors in stead of Queens, or whatever). Furthermore, Knightriders and orthodox Knights must be able to appear together in some fairy variants.
I guess it would work with all current engines if I play them as variant normal, because then no FEN would be sent by WB, (and no variant command), and apparently all engines are rigged such that they automatically play Nightrider Chess if normal is requested. (Which in itself is a protocol violation). This has the disadvantage that you have to play it without legality testing, and that the Nightrider is displayed as a normal Knight. While WB_F does know about a Nightrider, has a special bitmap for it distinct from a Knight (at board size middling & bulky), and could test legality of its moves and thus get the check and checkmate suffixes in the pgn correct, do proper disambiguation of the SAN, etc.).
Furthermore, for engines that actually do support multiple variants in response to the variant command, (such as Fairy-Max) it is very inconvenient that I would have to make special versions that only play one variant and lie about its name.
I am not sure why Faile seems to work under variant fairy with the nightrider setup; perhaps it ignores the edit command altogether.
So my request:
please let all engines tell that they support vaiant fairy, and let them accept H in the edit menu or FEN reader for Nightrider. Even if internally they use the same representation for Knight and Knightrider, just make it that they understand both H and N as the same piece. Usually this would only require an extra case label in their FEN reader or edit menu.
Also note that WB protocol requires double quotes around the variants in the variant command, even if there is only one.
I try to develop the protocol with as little variants as possible, and group variants with identical rules but a different opening array under the same variant. For 10x8 variants, for instance, this means that variants like Bird, Embassy, Carrera, etc. all are played as variant capablanca, with a user-defined initial position. Similarly, I want variants like Nightrider Chess, Chancellor Chess, Janus Chess and the like on 8x8 boards played as variant fairy, with custom made setups. But to make that work, the different fairy pieces need to be represented by different letters.