hgm wrote:The gratifying thing about Makruk is that a good engine probably would have lots of users, many more than any engine for FIDE Chess (if it isn't at least as strong as Stockfish).[...]
Implementing the Makruk rules for piece moving has required less than half an hour! You can leave castling unchanged (it would be disabled in FEN), put some if statement to avoid 2 pushes of the pawns and under-promotions, accept S/M instead of B/Q in FEN and sligthly change move generation of Queens and Bishops... et voilà!
Now i'm testing perft, then i can add alfabeta and see what happens.
If you ready with Makruk and plan to add another variants Sittuyin (Burmese Chess) is a good candidate. It's rather interesting to play and implementing (opening) drop moves will whet your appetite to implement shogi variants in the future
Of course make things works has required some more time, but this is my first Makruk perft. I suppose that this could be wrong but i'm googling to find some counts to compare with mines:
hgm wrote:
The original question is hard to answer. ICS usually only offer variants that can be played with standard pieces. The most popular of those are then Suicide and Crazyhouse. But from the viewpoint of an engine both are quite drastic departures from normal Chess: Suicide has mandatory capture and needs a completely different search to do it well. (And it is arguable whether it still counts as Chess, because there is no royal piece.) Crazyhouse has piece drops.
Do you really need a different search for suicide chess? I never really looked at it because I don't find it particularly interesting, but I figured that making the piece values negative would do it?
i think you'd find most piece values to be slightly positive still in suicide though perhaps not so much as losers which i'm more familiar with. Idea being if you have the move, and you don't have to capture, then more pieces (generally) means more control. the poor bastard that gets stuck with a few pawns while the opponent has pieces still is very often toast since pawns can be easily led around the board.
As for search, extensions to cover long capture-chains would be crucial (A captures, B moves a piece into take, A has to capture again, etc) since you can't really evaluate whether or not leading the opponent through said chain is a good thing until you get to the end of it all and find out if you gave away all your pieces, or just gave away control of the board.
gbtami wrote:[...]If you ready with Makruk and plan to add another variants Sittuyin (Burmese Chess) is a good candidate. It's rather interesting to play and implementing (opening) drop moves will whet your appetite to implement shogi variants in the future
The pieces moving is the same as in Makruk but the other rules are more complex. Let me make chess/makruk variant play well in satana and i can step to this other interesting variant.
Evert wrote:Do you really need a different search for suicide chess? I never really looked at it because I don't find it particularly interesting, but I figured that making the piece values negative would do it?
I have no experience with it myself, but I noticed that Sjeng uses proof-number search in Suicide (requiring an extra table, bigger than the transition table). And Nilatac does seem to exist in an alpha-beta and a proof-number version.
Also Gian-Carlo told me that piece values are NOT negative. Being a Queen ahead in the initial position of Suicide is an advantage!
The Lion is a very complicated piece, but interesting. Do you have rules for Werewolf Chess up somewhere?
I made the Werewolf contageous to prevent its disappearance from the game. And it moves like a limited-range Queen (max 3 squares), but in addition has a direct jump to the second square, with which it can optionally capture the piece it jumps over (in addition to what it might capture on the final square). No igui or null move.
Evert wrote:Do you really need a different search for suicide chess? I never really looked at it because I don't find it particularly interesting, but I figured that making the piece values negative would do it?
I have no experience with it myself, but I noticed that Sjeng uses proof-number search in Suicide (requiring an extra table, bigger than the transition table). And Nilatac does seem to exist in an alpha-beta and a proof-number version.
Also Gian-Carlo told me that piece values are NOT negative. Being a Queen ahead in the initial position of Suicide is an advantage!
I need to take another look at proof-number search. I tried to read up on it once but the links I found were too technical to read late at night...
I made the Werewolf contageous to prevent its disappearance from the game. And it moves like a limited-range Queen (max 3 squares), but in addition has a direct jump to the second square, with which it can optionally capture the piece it jumps over (in addition to what it might capture on the final square). No igui or null move.
Hmm... not being able to return to its original square makes this something I can't easily implement in Sjaak right now. Solvable, but I'd need to explicitly disallow (or allow) that. The rest of it should work as-is though.
stegemma wrote:Of course make things works has required some more time, but this is my first Makruk perft. I suppose that this could be wrong but i'm googling to find some counts to compare with mines:
kbhearn wrote:
i think you'd find most piece values to be slightly positive still in suicide though perhaps not so much as losers which i'm more familiar with. Idea being if you have the move, and you don't have to capture, then more pieces (generally) means more control. the poor bastard that gets stuck with a few pawns while the opponent has pieces still is very often toast since pawns can be easily led around the board.
Sure, but that could just mean that pawns have a much larger negative value than a queen, right?
As for search, extensions to cover long capture-chains would be crucial (A captures, B moves a piece into take, A has to capture again, etc) since you can't really evaluate whether or not leading the opponent through said chain is a good thing until you get to the end of it all and find out if you gave away all your pieces, or just gave away control of the board.
True, I suppose you shouldn't allow stand-pat as an option in q-search (since captures are mandatory). I should probably add that in Sjaak (although I don't think I handle mandatory captures as a rule at the moment, so the point is moot there).
stegemma wrote:Of course make things works has required some more time, but this is my first Makruk perft. I suppose that this could be wrong but i'm googling to find some counts to compare with mines:
perft 3
8 r n s m k s n r
7 . . . . . . . .
6 o o o o o o o o
5 . . . . . . . .
4 . . . . . . . .
3 P P P P P P P P
2 . . . . . . . .
1 R N S K M S N R
a b c d e f g h
a3a4 - 575
b3b4 - 530
c3c4 - 553
d3d4 - 530
e3e4 - 530
f3f4 - 553
g3g4 - 530
h3h4 - 575
b1d2 - 529
g1e2 - 552
c1b2 - 506
c1d2 - 437
c1c2 - 460
f1e2 - 437
f1g2 - 483
f1f2 - 437
a1a2 - 690
h1h2 - 690
e1d2 - 460
e1f2 - 506
d1c2 - 506
d1d2 - 460
d1e2 - 483
Perft 3 Summary
Nodes: 12012
Time: 0.01 sec
Nodes/sec: 1001000
perft 4
8 r n s m k s n r
7 . . . . . . . .
6 o o o o o o o o
5 . . . . . . . .
4 . . . . . . . .
3 P P P P P P P P
2 . . . . . . . .
1 R N S K M S N R
a b c d e f g h
a3a4 - 13054
b3b4 - 12081
c3c4 - 12600
d3d4 - 12079
e3e4 - 12079
f3f4 - 12600
g3g4 - 12081
h3h4 - 13054
b1d2 - 12014
g1e2 - 12536
c1b2 - 11490
c1d2 - 9924
c1c2 - 10446
f1e2 - 9924
f1g2 - 10968
f1f2 - 9924
a1a2 - 15666
h1h2 - 15666
e1d2 - 10446
e1f2 - 11490
d1c2 - 11490
d1d2 - 10446
d1e2 - 10968
Perft 4 Summary
Nodes: 273026
Time: 0.05 sec
Nodes/sec: 5250500
perft 5
8 r n s m k s n r
7 . . . . . . . .
6 o o o o o o o o
5 . . . . . . . .
4 . . . . . . . .
3 P P P P P P P P
2 . . . . . . . .
1 R N S K M S N R
a b c d e f g h
a3a4 - 323107
b3b4 - 278085
c3c4 - 305717
d3d4 - 278531
e3e4 - 279058
f3f4 - 304674
g3g4 - 278088
h3h4 - 323107
b1d2 - 281941
g1e2 - 302311
c1b2 - 253180
c1d2 - 192593
c1c2 - 212441
f1e2 - 192593
f1g2 - 233854
f1f2 - 191549
a1a2 - 416660
h1h2 - 417182
e1d2 - 211396
e1f2 - 252136
d1c2 - 251605
d1d2 - 215040
d1e2 - 229146
Perft 5 Summary
Nodes: 6223994
Time: 0.88 sec
Nodes/sec: 7080767
perft 6
8 r n s m k s n r
7 . . . . . . . .
6 o o o o o o o o
5 . . . . . . . .
4 . . . . . . . .
3 P P P P P P P P
2 . . . . . . . .
1 R N S K M S N R
a b c d e f g h
a3a4 - 7355946
b3b4 - 6388190
c3c4 - 7003885
d3d4 - 6386776
e3e4 - 6400120
f3f4 - 6975587
g3g4 - 6388244
h3h4 - 7353858
b1d2 - 6398234
g1e2 - 6888903
c1b2 - 5772206
c1d2 - 4392680
c1c2 - 4844685
f1e2 - 4392684
f1g2 - 5332152
f1f2 - 4369015
a1a2 - 9494323
h1h2 - 9506195
e1d2 - 4820792
e1f2 - 5748471
d1c2 - 5736405
d1d2 - 4903680
d1e2 - 5225018
Perft 6 Summary
Nodes: 142078049
Time: 21.90 sec
Nodes/sec: 6487878
perft 7
8 r n s m k s n r
7 . . . . . . . .
6 o o o o o o o o
5 . . . . . . . .
4 . . . . . . . .
3 P P P P P P P P
2 . . . . . . . .
1 R N S K M S N R
a b c d e f g h
a3a4 - 182526619
b3b4 - 148886448
c3c4 - 172987399
d3d4 - 148988404
e3e4 - 149821646
f3f4 - 171189027
g3g4 - 148914748
h3h4 - 182357799
b1d2 - 154292328
g1e2 - 169043296
c1b2 - 129906024
c1d2 - 89207359
c1c2 - 102172782
f1e2 - 89373440
f1g2 - 117516849
f1f2 - 87815290
a1a2 - 239940560
h1h2 - 240593574
e1d2 - 100840216
e1f2 - 128517370
d1c2 - 127892080
d1d2 - 104863956
d1e2 - 111695660
Perft 7 Summary
Nodes: 3299342874
Time: 488.90 sec
Nodes/sec: 6748544