Tamerlane Chess

Discussion of chess software programming and technical issues.

Moderators: hgm, Rebel, chrisw

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

Re: Tamerlane Chess

Post by hgm »

OK, I will check it out. I like the done=2 and done=3 idea, so I will imlement that too.
User avatar
hgm
Posts: 27796
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Tamerlane Chess

Post by hgm »

I made some more SVGs, so that XBoard has 66 piece types now. I dropped the idea of a non-royal King symbols; after all, we already have a symbol for the Commoner (M). A Flag was still missing, though. The Giraffe was sacrificed in favor of a Duck/Goose, as I felt we had already too many mammals and too few birds. I also added a winged horse, replacing what used to be a duplicate of the Knight (for the Chu-Shogi 'White Knight' piece).

The pieceToChar order I will use is this

Image

I don't expect the last 22 to be used much, outside of Chu Shogi. (Except King, of course, which is always maps to last position.) The Tower would be the recommended symbol for Dababba, so all base pieces come reasonably in front.
User avatar
hgm
Posts: 27796
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Tamerlane Chess

Post by hgm »

I am not happy about the Owl glyph, and who wants an Owl anyway, outside Wa Shogi? (Where you would also need a Monkey, a Bear, a Fox, a Rabbit...) So I will replace it by a tal hat. This might be useful for representing Diplomat / Spy pieces.
User avatar
hgm
Posts: 27796
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Tamerlane Chess

Post by hgm »

Evert wrote:Ok, I tried re-building the engine options dialog. I found the following:
  • The engine does not receive a notification of changed values until the dialog box is closed with "Ok", so it cannot modify values in response to value changes.
  • Sending "done=0/variants=.../done=1" updates the variant list for the engine (which I already knew).
  • Sending "done=0/feature option/done=1" adds the option to the existing option list, so sending all options again duplicates the dialog.
I pushed a patch now that should clear the list on done=0, update an already open dialog when done=1, redo an already open dialog when done=2, and force opening a new dialog if done=3.

I did not have anything to test it on.
User avatar
Greg Strong
Posts: 388
Joined: Sun Dec 21, 2008 6:57 pm
Location: Washington, DC

Re: Tamerlane Chess

Post by Greg Strong »

Congratulations on SjaakII, a truly remarkable program - flexible and efficient. Kindergarten bitboard move generation for boards with more than 64 squares is something I've planned to try for a while. It's good to see it in action.

I'm having an issue controlling SjaakII with the new ChessV though. For Capablanca-type variants SjaakII sends and expects O-O style castling description rather than the f1i1 style notation. I've updated the GUI to accept O-O but it still sends f1i1 which Sjaak doesn't accept as a legal move. The other Capablanca engines I've tried use f1i1. According to the XBoard protocol, O-O is used in Fischer Random (which makes sense since the King might move only one square and thus the other notation would be ambiguous) but doesn't mention it being used in other variants.

Also, is it possible for either SjaakII or Postduif to play Wildebeest Chess?

Thanks,
Greg
User avatar
Evert
Posts: 2929
Joined: Sat Jan 22, 2011 12:42 am
Location: NL

Re: Tamerlane Chess

Post by Evert »

Greg Strong wrote:Congratulations on SjaakII, a truly remarkable program - flexible and efficient. Kindergarten bitboard move generation for boards with more than 64 squares is something I've planned to try for a while. It's good to see it in action.
Thanks! It works pretty well, but you need to figure out how to generalise some things that are well-documented for 64 squares and 8x8 boards.
I'm having an issue controlling SjaakII with the new ChessV though. For Capablanca-type variants SjaakII sends and expects O-O style castling description rather than the f1i1 style notation. I've updated the GUI to accept O-O but it still sends f1i1 which Sjaak doesn't accept as a legal move. The other Capablanca engines I've tried use f1i1.
It sends O-O, but it should understand either notation. If it doesn't, that's a bug. There should also be an engine option to control that behaviour, do you expose those? If not, you should be able to set the option from XBoard and it will be remembered.
According to the XBoard protocol, O-O is used in Fischer Random (which makes sense since the King might move only one square and thus the other notation would be ambiguous) but doesn't mention it being used in other variants.
It mentions SAN as a valid input format for moves though, so it should work outside FRC too. The reason I do this is because SjaakII doesn't know whether a variant is a shuffle variant, and this seemed the easiest way to keep it ignorant.
Also, is it possible for either SjaakII or Postduif to play Wildebeest Chess?
No. SjaakII doesn't allow double pushes from the third rank in addition to triple or double pushes from the second rank (you can have only one special zone). Postduif doesn't do double pushes or castling.
User avatar
Evert
Posts: 2929
Joined: Sat Jan 22, 2011 12:42 am
Location: NL

Re: Tamerlane Chess

Post by Evert »

Evert wrote:
I'm having an issue controlling SjaakII with the new ChessV though. For Capablanca-type variants SjaakII sends and expects O-O style castling description rather than the f1i1 style notation. I've updated the GUI to accept O-O but it still sends f1i1 which Sjaak doesn't accept as a legal move. The other Capablanca engines I've tried use f1i1.
It sends O-O, but it should understand either notation. If it doesn't, that's a bug.
It works for me:

Code: Select all

#[Capablanca chess] 0w>setboard rnabqk3r/ppppp1pppp/6cn2/3b1p4/3B1P4/6CN2/PPPPP1PPPP/RNABQK3R w KQk - 6 5
 8r n a b q k       r
 7p p p p p   p p p p
 6            c n
 5      b   p
 4      B   P
 3            C N
 2P P P P P   P P P P
 1R N A B Q K       R *
  a b c d e f g h i j
#[Capablanca chess] 0w (f)>longmoves
54 moves
  1/ 54 Nb1-a3     Na3        b1a3       b1a3
  2/ 54 Nb1-c3     Nc3        b1c3       b1c3
  3/ 54 Nh3-g1     Ng1        h3g1       h3g1
  4/ 54 Nh3-i1     Ni1        h3i1       h3i1
  5/ 54 Nh3-f2     Nf2        h3f2       h3f2
  6/ 54 Nh3-j4     Nj4        h3j4       h3j4
  7/ 54 Nh3-g5     Ng5        h3g5       h3g5
  8/ 54 Nh3-i5     Ni5        h3i5       h3i5
  9/ 54 Bd4-g1     Bg1        d4g1       d4g1
 10/ 54 Bd4-f2     Bf2        d4f2       d4f2
 11/ 54 Bd4-c3     Bc3        d4c3       d4c3
 12/ 54 Bd4-e3     Be3        d4e3       d4e3
 13/ 54 Bd4-c5     Bc5        d4c5       d4c5
 14/ 54 Bd4-e5     Be5        d4e5       d4e5
 15/ 54 Bd4-b6     Bb6        d4b6       d4b6
 16/ 54 Bd4-f6     Bf6        d4f6       d4f6
 17/ 54 Bd4xg7     Bxg7       d4g7       d4g7
 18/ 54 Bd4xa7     Bxa7       d4a7       d4a7
 19/ 54 Rj1-g1     Rg1        j1g1       j1g1
 20/ 54 Rj1-h1     Rh1        j1h1       j1h1
 21/ 54 Rj1-i1     Ri1        j1i1       j1i1
 22/ 54 Qe1-f2     Qf2        e1f2       e1f2
 23/ 54 Ac1-b3     Ab3        c1b3       c1b3
 24/ 54 Ac1-d3     Ad3        c1d3       c1d3
 25/ 54 Cg3-h1     Ch1        g3h1       g3h1
 26/ 54 Cg3-a3     Ca3        g3a3       g3a3
 27/ 54 Cg3-b3     Cb3        g3b3       g3b3
 28/ 54 Cg3-c3     Cc3        g3c3       g3c3
 29/ 54 Cg3-d3     Cd3        g3d3       g3d3
 30/ 54 Cg3-e3     Ce3        g3e3       g3e3
 31/ 54 Cg3-f3     Cf3        g3f3       g3f3
 32/ 54 Cg3-e4     Ce4        g3e4       g3e4
 33/ 54 Cg3-g4     Cg4        g3g4       g3g4
 34/ 54 Cg3-i4     Ci4        g3i4       g3i4
 35/ 54 Cg3-g5     Cg5        g3g5       g3g5
 36/ 54 Cg3-h5     Ch5        g3h5       g3h5
 37/ 54 Cg3xf5     Cxf5       g3f5       g3f5
 38/ 54 Cg3xg6     Cxg6       g3g6       g3g6
 39/ 54 O-O        O-O        f1i1       f1j1
 40/ 54 Kf1-g1     Kg1        f1g1       f1g1
 41/ 54 Kf1-f2     Kf2        f1f2       f1f2
 42/ 54  a2-a3      a3        a2a3       a2a3
 43/ 54  b2-b3      b3        b2b3       b2b3
 44/ 54  c2-c3      c3        c2c3       c2c3
 45/ 54  d2-d3      d3        d2d3       d2d3
 46/ 54  e2-e3      e3        e2e3       e2e3
 47/ 54  i2-i3      i3        i2i3       i2i3
 48/ 54  j2-j3      j3        j2j3       j2j3
 49/ 54  a2-a4      a4        a2a4       a2a4
 50/ 54  b2-b4      b4        b2b4       b2b4
 51/ 54  c2-c4      c4        c2c4       c2c4
 52/ 54  e2-e4      e4        e2e4       e2e4
 53/ 54  i2-i4      i4        i2i4       i2i4
 54/ 54  j2-j4      j4        j2j4       j2j4

 8r n a b q k       r
 7p p p p p   p p p p
 6            c n
 5      b   p
 4      B   P
 3            C N
 2P P P P P   P P P P
 1R N A B Q K       R *
  a b c d e f g h i j
#[Capablanca chess] 0w (f)>
The listed move formats are all understood.
User avatar
hgm
Posts: 27796
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Tamerlane Chess

Post by hgm »

Greg Strong wrote:Also, is it possible for either SjaakII or Postduif to play Wildebeest Chess?
Note that Fairy-Max 5.0 plays a variant called 'almost-wildebeest', which is Wildebeest Chess without the castling where the King steps only one square towards the Rook. There is an ambiguity issue in the protocol there similar to what you can have in Chess960. But it is different from Fischer castling, because the King ends up elsewhere. So it is not sufficient to just identify the King and Rook (as you would do in KxR encoding).

For the 'guarding' in Omega Chess, where the Queen has to castle with Rook, you have a similar problem always, as wherever the Queen would end during the castling, it would always be a legal move of the Queen. The solution I designed there is to write the guarding as a two-leg capture of your own Rook, like Qxa1-b1 (d1a1,a1b1 in protocol form). This does specify the final location of the Queen explicitly in the move notation, and taken at face value would already almost do what you want. Except that you have to re-grow a Rook at the other side of the Queen. So the convention that direct capture of an own piece implies Fischer castling (i.e. implied destinations) with that piece, while hit-and-run capture would imply castling to the indicated location, with a Rook next to it, seems to solve the problem. I am not sure if XBoard's current Betza move generator allows this for a King.

In Fairy-Max I also had some trouble implementing the 3rd-rank double push: Fairy-Max decides on initial moves based on piece virginity, not on absolute location. Which in general is what you want, and for Pawn initial moves amounts to the same anyway because of irreversibility. So I had to make a special kludge that goes against its normaloperation (where it recognizes a move that logically would indicate an initial 5-square push as special, and fakes virginity of the Pawn, as well as converting the move code to a double push, when on the 3rd rank. And initially I then had prolems that the opponent could capture the pushed Pawn on the from-square... So I also had to revise the code for e.p. capture, to encode the e.p. square in such a way that you could see if you could capture on two squares, or only on one. But eventually it worked.
User avatar
hgm
Posts: 27796
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: Tamerlane Chess

Post by hgm »

The previous patch turned out to be buggy, because the routine to update the dialog controls only worked for dialogs that referred to internal XBoard variables, rather than those obtained from the engine, and was following pointers not set in the engine case. I fixed that now. (I added a button to Fairy-Max that would resend its options with or without a delay to test this.)

I am still a bit in doubt about the logic, though. I have made it such that done=2 specifies the list changed, so an already open dialog should be closed and popped up to remake it. While done=1 should just refresh the existing controls. But during startup done=1 is sent, and the situation in that case is really that the option list changed (as it is entirely new at that point). So perhaps it would be better to let done=2 mean that the GUI should not bother remaking the dialog, because the engine only resent the same list with different default settings. In any case done=3 always requests popping up a new dialog (possibly closing whatever transient dialog was up), making it possible for the engine to spontaneously request a settings change.
User avatar
Greg Strong
Posts: 388
Joined: Sun Dec 21, 2008 6:57 pm
Location: Washington, DC

Re: Tamerlane Chess

Post by Greg Strong »

Strange - it works sometimes and not others. If I do a game where I just focus on clearing out the space and castling quickly, it works. If I run an engine-engine match where castling happens later in the game, SjaakII rejects the move as illegal. I have the engine-debug log of such a game but it's 38 K so probably too large to post here. If you PM me your email address I can send it to you.