Sapeli 1.0 - New chess engine

Discussion of anything and everything relating to chess playing software and machines.

Moderators: hgm, Rebel, chrisw

User avatar
Roland Chastain
Posts: 640
Joined: Sat Jun 08, 2013 10:07 am
Location: France
Full name: Roland Chastain

Re: Sapeli 1.0 - New chess engine

Post by Roland Chastain »

Hello! I updated my "all versions" package (for Windows), after I found a way to build without dependency to cygwin1.dll. The package include 32 bits binaries, so maybe it can be useful to someone, in addition to the binaries offered by Günther.

I started from v1.17, since I couldn't compile the previous versions.

Regards.

Roland
Qui trop embrasse mal étreint.
JohnWoe
Posts: 491
Joined: Sat Mar 02, 2013 11:31 pm

Re: Sapeli 1.0 - New chess engine

Post by JohnWoe »

Thanks for the builds!
Added them here: https://github.com/SamuraiDangyo/Sapeli ... naries/bin

I think 1.0 -> 1.17 were a bit messy code.

The latest version 1.69 is a lot easier to read. Made mgen much simpler. Much easier to read its code. Not published it yet. It's gonna be a little bit faster.

Edit:
Released: https://github.com/SamuraiDangyo/Sapeli ... /tag/v1.69
Source code: https://github.com/SamuraiDangyo/Sapeli

+ Slightly faster
+ Easier to read source code
Ras
Posts: 2487
Joined: Tue Aug 30, 2016 8:19 pm
Full name: Rasmus Althoff

Re: Sapeli 1.0 - New chess engine

Post by Ras »

The UCI spec says that "isready" must also be answered during search - but only "stop" is evaluated. This might make GUIs kill Sapeli because they may assume it is hanging.
Rasmus Althoff
https://www.ct800.net
User avatar
Roland Chastain
Posts: 640
Joined: Sat Jun 08, 2013 10:07 am
Location: France
Full name: Roland Chastain

Re: Sapeli 1.0 - New chess engine

Post by Roland Chastain »

JohnWoe wrote: Thu Jan 16, 2020 7:21 pm Thanks for the builds!
Added them here: https://github.com/SamuraiDangyo/Sapeli ... naries/bin
You're welcome. Maybe you could make some cleaning in your bin directory (that is, delete the previous versions of my package)? And by the way, it isn't really important, but my first name is Roland, and not Ronald. :)

I will update the package tonight, to include v1.69. The link will be the same.[edit] Done.[/edit]
Qui trop embrasse mal étreint.
User avatar
Guenther
Posts: 4605
Joined: Wed Oct 01, 2008 6:33 am
Location: Regensburg, Germany
Full name: Guenther Simon

Re: Sapeli 1.0 - New chess engine

Post by Guenther »

JohnWoe wrote: Thu Jan 16, 2020 7:21 pm ...
The latest version 1.69 is a lot easier to read. Made mgen much simpler. Much easier to read its code. Not published it yet. It's gonna be a little bit faster.

Edit:
Released: https://github.com/SamuraiDangyo/Sapeli ... /tag/v1.69
Source code: https://github.com/SamuraiDangyo/Sapeli

+ Slightly faster
+ Easier to read source code
Updated my compilations too.
http://rwbc-chess.de/download.htm
https://rwbc-chess.de

trollwatch:
Chessqueen + chessica + AlexChess + Eduard + Sylwy
JohnWoe
Posts: 491
Joined: Sat Mar 02, 2013 11:31 pm

Re: Sapeli 1.0 - New chess engine

Post by JohnWoe »

Ras wrote: Thu Jan 16, 2020 8:19 pm The UCI spec says that "isready" must also be answered during search - but only "stop" is evaluated. This might make GUIs kill Sapeli because they may assume it is hanging.
Thanks! I didn't know that. Fixed.
Roland Chastain wrote: Thu Jan 16, 2020 8:34 pm
JohnWoe wrote: Thu Jan 16, 2020 7:21 pm Thanks for the builds!
Added them here: https://github.com/SamuraiDangyo/Sapeli ... naries/bin
You're welcome. Maybe you could make some cleaning in your bin directory (that is, delete the previous versions of my package)? And by the way, it isn't really important, but my first name is Roland, and not Ronald. :)

I will update the package tonight, to include v1.69. The link will be the same.[edit] Done.[/edit]
My bad. :oops: Fixed.

Been testing against Stockfish that there's no illegal activity in 40/1s Chess960 games. Sometimes Sapeli even scores a win against the latest Stockfish.
[pgn][Event "?"]
[Site "?"]
[Date "2020.01.17"]
[Round "88"]
[White "Stockfish 160120 64"]
[Black "Sapeli 1.70"]
[Result "0-1"]
[TimeControl "40/1"]
[Variant "fischerandom"]
[PlyCount "150"]
[FEN "rkbqrbnn/pppppppp/8/8/8/8/PPPPPPPP/RKBQRBNN w EAea - 0 1"]
[SetUp "1"]

{--------------
r k b q r b n n
p p p p p p p p
. . . . . . . .
. . . . . . . .
. . . . . . . .
. . . . . . . .
P P P P P P P P
R K B Q R B N N
white to play
--------------}
1. e4 {+0,72/8 1,1}
{s}
1... d5 {-0,04/6 3}
{s}
2. Qh5 {+1,51/8 1,1}
{s}
2... Nf6 {+0,81/6 3}
{s}
3. Qd1 {-1,27/9 1,0}
{s}
3... dxe4 {+0,90/6 3}
{s}
4. Ng3 {-0,75/10 1,1}
{s}
4... Qd4 {+1,05/6 2,9}
{s}
5. d3 {-0,53/9 1,2}
{s}
5... exd3 {+0,99/5 2,8}
{s}
6. Nf3 {-0,19/8 1,1}
{s}
6... Qxf2 {+1,20/5 2,8}
{s}
7. Qxd3 {-0,36/9 1,2}
{s}
7... Qb6 {+0,90/5 2,6}
{s}
8. Be3 {-0,30/8 1,1}
{s}
8... Qd6 {+0,90/5 2,6}
{s}
9. Ne4 {-0,44/7 1,1}
{s}
9... Nxe4 {+1,07/5 2,5}
{s}
10. Qxe4 {+0,11/9 1,1}
{s}
10... g6 {+0,97/5 2,4}
{s}
11. Bf4 {+3,40/9 1,2}
{s}
11... Qc5 {+1,02/5 2,2}
{s}
12. Re3 {+3,57/8 1,1}
{s}
12... Bf5 {+1,41/4 2,2}
{s}
13. Rc3 {-2,07/8 1,2}
{s}
13... Qxc3 {+3,38/6 2,2}
{s}
14. Qa4 {-4,65/11 1,2}
{s}
14... Qc6 {+5,94/6 2,1}
{s}
15. Bb5 {-2,45/10 1,2}
{s}
15... Qxc2+ {+3,42/6 2,2}
{s}
16. Qxc2 {-1,80/1 0,1}
{s}
16... Bxc2+ {+3,42/6 2,2}
{s}
17. Kxc2 {-3,94/11 2,3}
{s}
17... Rd8 {+3,56/6 2,2}
{s}
18. Nd2 {-4,19/11 2,4}
{s}
18... a6 {+3,79/5 2,2}
{s}
19. Bc4 {-4,86/11 2,6}
{s}
19... b5 {+3,81/5 2,2}
{s}
20. Be2 {-4,26/10 2,7}
{s}
20... Rd5 {+3,88/5 2,1}
{s}
21. Nb3 {-2,99/10 2,1}
{s}
21... O-O-O {+3,97/5 2,1}
{s}
22. a4 {-2,61/11 3}
{s}
22... g5 {+4,11/5 2,2}
{s}
23. Bg3 {-2,40/11 2,5}
{s}
23... Ng6 {+4,11/5 2,1}
{s}
24. axb5 {-1,27/11 1,9}
{s}
24... axb5 {+3,89/6 2,2}
{s}
25. Bf3 {-2,44/11 3}
{s}
25... e6 {+2,89/6 2,2}
{s}
26. Ra8+ {-2,58/13 4}
{s}
26... Kd7 {+2,93/7 2,3}
{s}
27. Bxd5 {-3,00/11 1,8}
{s}
27... exd5 {+2,69/7 2,2}
{s}
28. Ra6 {-3,38/12 4}
{s}
28... f5 {+3,05/6 2,3}
{s}
29. Nd4 {-3,70/12 4}
{s}
29... f4 {+3,12/6 2,2}
{s}
30. Bf2 {-4,23/10 2,1}
{s}
30... Bc5 {+3,17/6 2,3}
{s}
31. Bg1 {-4,54/11 4}
{s}
31... Re8 {+3,39/6 2,3}
{s}
32. Ra5 {-5,54/11 4}
{s}
32... c6 {+3,47/5 2,2}
{s}
33. b4 {-5,26/13 3}
{s}
33... Bxd4 {+3,98/6 2,3}
{s}
34. Bxd4 {-5,42/12 1,9}
{s}
34... Re2+ {+3,12/5 2,3}
{s}
35. Kd3 {-5,65/12 4}
{s}
35... Rxg2 {+3,42/6 2,3}
{s}
36. Ra7+ {-4,30/11 1,7}
{s}
36... Ke6 {+3,37/7 2,3}
{s}
37. Rc7 {-6,37/12 5}
{s}
37... Rxh2 {+4,12/6 2,2}
{s}
38. Rxc6+ {-7,31/11 4}
{s}
38... Kf5 {+4,07/6 2,3}
{s}
39. Rf6+ {-6,93/11 4}
{s}
39... Kg4 40. Rd6 {-7,39/12 5}
{s}
40... f3 {+4,30/7 3}
{s}
41. Be3 {-7,87/10 1,1}
{s}
41... Ne7 {+4,32/6 3}
{s}
42. Rd7 {-6,84/9 1,1}
{s}
42... Nc6 {+4,46/7 3}
{s}
43. Kc3 {-7,45/9 1,0}
{s}
43... f2 {+5,19/7 3}
{s}
44. Bxf2 {-6,92/10 1,2}
{s}
44... Rxf2 {+5,28/7 3}
{s}
45. Rxh7 {-7,54/8 1,1}
{s}
45... d4+ {+6,53/7 3}
{s}
46. Kd3 {-7,20/9 1,1}
{s}
46... Rf4 {+6,55/7 3}
{s}
47. Rb7 {-6,69/9 1,2}
{s}
47... Nxb4+ {+6,69/7 2,9}
{s}
48. Ke2 {-7,66/9 1,2}
{s}
48... d3+ {+6,75/7 2,7}
{s}
49. Ke3 {-7,42/9 1,1}
{s}
49... Rf3+ {+6,77/7 2,6}
{s}
50. Kd2 {-6,69/11 1,1}
{s}
50... Rf2+ {+6,95/7 2,6}
{s}
51. Kc3 {-7,35/11 1,3}
{s}
51... Rf1 {+5,74/6 2,5}
{s}
52. Kxb4 {-4,61/9 1,7}
{s}
52... d2 {+6,18/7 2,4}
{s}
53. Rd7 {-54,54/12 2,2}
{s}
53... d1=R {+6,29/7 2,2}
{s}
54. Re7 {-7,54/10 2,4}
{s}
54... Rb1+ {+7,46/6 2,2}
{s}
55. Kc3 {-7,66/10 2,7}
{s}
55... b4+ {+7,70/6 2,4}
{s}
56. Kc4 {-7,61/10 2,6}
{s}
56... Rf4+ {+7,75/6 2,4}
{s}
57. Kd3 {-7,71/12 2,9}
{s}
57... b3 {+7,80/6 2,3}
{s}
58. Kc3 {-7,94/10 2,9}
{s}
58... Rf3+ {+7,83/6 2,3}
{s}
59. Kb4 {-7,75/9 1,4}
{s}
59... b2 {+7,88/6 2,3}
{s}
60. Re2 {-47,96/12 3}
{s}
60... Kf5 {+8,03/6 2,3}
{s}
61. Rd2 {-16,94/13 3}
{s}
61... g4 {+8,31/6 2,4}
{s}
62. Rd5+ {-19,61/12 3}
{s}
62... Ke6 {+8,32/7 2,3}
{s}
63. Rd2 {-18,87/13 2,8}
{s}
63... g3 {+8,36/6 2,3}
{s}
64. Re2+ {-10,10/15 3}
{s}
64... Kd5 {+8,37/7 2,4}
{s}
65. Rd2+ {-18,45/20 3}
{s}
65... Ke4 {+8,39/7 2,4}
{s}
66. Re2+ {-18,62/16 3}
{s}
66... Re3 {+8,47/7 2,4}
{s}
67. Rc2 {-65,55/13 3}
{s}
67... Kf3 {+11,90/7 2,4}
{s}
68. Kb5 {-72,40/13 3}
{s}
68... g2 {+11,91/6 2,3}
{s}
69. Kb4 {-83,32/11 3}
{s}
69... g1=Q {+16,75/6 2,4}
{s}
70. Kb5
{-M22/10 0.031s}
70... Rb3+ {+19,78/5 2,3}
{s}
71. Kc4
{-M8/16 0.015s}
71... Qg8+ {+24,31/5 2,4}
{s}
72. Kd4
{-M8/20 0.014s}
72... Rd1+ {+24,78/5 2,3}
{s}
73. Rd2
{-M6/24 0.013s}
73... Rxd2+ {+30,10/4 2,5}
{s}
74. Ke5
{-M4/245 0.014s}
74... Rb6 {+104,85/4 1,5}
{s}
75. Kf5
{-M2/1 0s}
75... Qd5#
{+104.85/3 0.001s, Black mates} 0-1
[/pgn]

Of course Stockfish kills Sapeli in the long run :P

Code: Select all

Score of Sapeli 1.70 vs Stockfish 160120 64: 4 - 523 - 3  [0.010] 530
Elo difference: -791.75 +/- 179.03
Finished match
User avatar
Roland Chastain
Posts: 640
Joined: Sat Jun 08, 2013 10:07 am
Location: France
Full name: Roland Chastain

Re: Sapeli 1.0 - New chess engine

Post by Roland Chastain »

JohnWoe wrote: Fri Jan 17, 2020 12:21 pm My bad. :oops: Fixed.
My main preoccupation wasn't relative to the spelling of my name, but to the many packages including the same files. As I provide to you an updated ZIP archive with all the versions, it doesn't seem useful to keep the previous versions of the package. But, of course, it's up to you. :wink:
Qui trop embrasse mal étreint.
JohnWoe
Posts: 491
Joined: Sat Mar 02, 2013 11:31 pm

Re: Sapeli 1.0 - New chess engine

Post by JohnWoe »

I decided to publish Sapeli 1.70

Release: https://github.com/SamuraiDangyo/Sapeli ... /tag/v1.70
Master: https://github.com/SamuraiDangyo/Sapeli

Changes:
Removed dev branch.
Some bug fixes + cleanups + speedups.
data.h -> Can be modified by users.
consts.h -> Can't be. Sapeli will crash if you do.
Improved code so it's easier to read.

1+0.01 960. Against SF 11. No time losses / illegal moves / crashes. Score is pretty bad tho :P
Summary: https://github.com/SamuraiDangyo/bins/b ... _11_64.txt

Code: Select all

Score of Sapeli 1.70 vs Stockfish 11 64: 14 - 980 - 6  [0.017] 1000
Elo difference: -704.84 +/- 85.33
Finished match
I wanted to add ponder to this version. But the UCI spec is so awful I decided not to implement it here. The only pondering Sapeli (source code) is found here: https://github.com/SamuraiDangyo/Sapeli ... ponder.zip
User avatar
Guenther
Posts: 4605
Joined: Wed Oct 01, 2008 6:33 am
Location: Regensburg, Germany
Full name: Guenther Simon

Re: Sapeli 1.0 - New chess engine

Post by Guenther »

I have omitted 1.70 by accident and already uploaded 1.71 (though not released by yourself).
BTW I have created a single download now, which contains all my compilations.

Due to server migration it might take some time until it is reachable from the new server.
(still directing to the old IP here, despite request was sent 6 hours ago and TTL was announced as 4 hours...)

Edit:
While writing this it finally worked ;-)
https://rwbc-chess.de

trollwatch:
Chessqueen + chessica + AlexChess + Eduard + Sylwy
JohnWoe
Posts: 491
Joined: Sat Mar 02, 2013 11:31 pm

Re: Sapeli 1.0 - New chess engine

Post by JohnWoe »

Thanks for the builds!
Added them here: https://github.com/SamuraiDangyo/Sapeli ... ersions.7z

Yes, I never released 1.71. But it is pretty much the same as 1.70. I added a few const modifiers and documented the code. So it is pretty the same as 1.70. I'll move to 1.72 in the future.

I'm pretty happy with 1.71 atm. On my laptop I got bench 6.6M NPS. I have never seen so high numbers. Seems to have no problems converting KNBK and KQKR into wins. This increased speed seems to help as Sapeli can complete higher depths. Especially in endgames.

I also uploaded some .epd here if anybody finds them useful. I sometimes run these through Sapeli:

WAC: https://github.com/SamuraiDangyo/bins/b ... er/wac.epd
Silver 201 test suite: https://github.com/SamuraiDangyo/bins/b ... er_wac.epd
Bratko-Kopec test suite: https://github.com/SamuraiDangyo/bins/b ... -suite.epd
Colditz-test suite: https://github.com/SamuraiDangyo/bins/b ... -suite.epd
Hard-Talkchess-2020-set: https://github.com/SamuraiDangyo/bins/b ... 20-set.epd