New engine release - Wukong JS

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

Moderators: hgm, Rebel, chrisw

User avatar
mvanthoor
Posts: 1784
Joined: Wed Jul 03, 2019 4:42 pm
Location: Netherlands
Full name: Marcel Vanthoor

Re: New engine release - Wukong JS

Post by mvanthoor »

maksimKorzh wrote: Thu Jan 28, 2021 4:38 pm ...
Today I ran two 100 game tournaments at 1m+0.6s time controls of Rustic Alpha 1 against WukongJS 1.4 and 1.5.

The 1.4 version ended up at +130 Elo vs. Rustic A1. Assuming Rustic's 1695 rating, that would put version 1.4 at 1825, which is fairly close to its actual rating in CCRL Blitz.

However... The 1.5 version defeated Rustic A1 with a rating difference of +268 Elo (!). That would mean an improvement of 128 Elo on top of version 1.4. What did you change between 1.4 and 1.5? (I can see in the engine output that 1.5 searches deeper and faster than 1.4; that will at least be part of the difference.)

Against 1.4, Rustic can hold its own up to the late middle game, where WukongJS will start to outmaneuver it, because it's transposition table / move sorting advantage makes it tactically superior; this is even more evident with version 1.5, where that superiority starts much earlier in the game. In the endgame, WukongJS can outmaneuver Rustic by something like 10-12 ply because of the transposition table. I'm curious to see what the TT (and later, move sorting enhancements) will do for Rustic in that regard :)

Good job on Wukong 1.5. When CCRL tests it, I estimate it will be around 1950 Elo +/- 30 points or thereabouts.

PS: I ran both as UCI engines under CuteChess. No issues in 200 games total.

edit: 1.5 is about 2-3x as fast in nodes/second than version 1.4. I assume that this is caused by that optimization you got e-mailed by someone. I'll have to watch that video sometime.
Author of Rustic, an engine written in Rust.
Releases | Code | Docs | Progress | CCRL
User avatar
CMCanavessi
Posts: 1142
Joined: Thu Dec 28, 2017 4:06 pm
Location: Argentina

Re: New engine release - Wukong JS

Post by CMCanavessi »

In my rating list, Wukong 1.5 is at 1810.7 while Rustic Alpha 1 is at 1580.6. How does that compare with your numbers, relatively speaking?
Follow my tournament and some Leela gauntlets live at http://twitch.tv/ccls
User avatar
mvanthoor
Posts: 1784
Joined: Wed Jul 03, 2019 4:42 pm
Location: Netherlands
Full name: Marcel Vanthoor

Re: New engine release - Wukong JS

Post by mvanthoor »

CMCanavessi wrote: Tue Feb 16, 2021 9:38 pm In my rating list, Wukong 1.5 is at 1810.7 while Rustic Alpha 1 is at 1580.6. How does that compare with your numbers, relatively speaking?
In CCRL, WukongJS 1.5 would be (tentatively) somewhere around 1950. That is about 140 points over WukongJS 1.4, and +/- 250 points over Rustic Alpha 1. If Wukong is at 1810 in your list, that would mean that Rustic would need to be in this list at around 1560. Therefore the rating of Rustic @ 1580 in your list is slightly better than expected.

In the lower regions, results depend on which engine you play against. Rustic, for example, massively overperforms against Pulse, FracTal and PolarChess, because it can exploit some weaknesses in those engines, but it massively underperforms against TSCP and Mizar (which, on CCRL, actually has a lower rating than Rustic), because they exploit weaknesses in Rustic. Wukong 1.5 performs at +213 Elo against Wukong 1.4, which would but it at 2025, instead of the 1950 I mentioned in the previous post.

I'll see where Rustic Alpha 2 ends up when the hash table is fully functional and sorting on the hash move is implemented. Then some more sorting, and better pruning, and so on... one step at a time.

I don't have my own rating list. I just test against a bunch of CCRL engines in a large gauntlet, and then calibrate the result against the CCRL Elo rating of the winning engine. For my next tests, I'll run a gauntlet of Rustic against 9 other engines, and then calibrate that result by setting the winner to the CCRL Elo; then I'll rerun the gauntlet, but use the next version of Rustic.
Author of Rustic, an engine written in Rust.
Releases | Code | Docs | Progress | CCRL
JohnW
Posts: 381
Joined: Thu Nov 22, 2012 12:20 am
Location: New Hampshire

Re: New engine release - Wukong JS

Post by JohnW »

maksimKorzh wrote: Tue Jan 19, 2021 4:20 pm I've realized that the vast majority of chess players are 1700-2100 Elo and my engine would be a perfect sparring partner for them.
That is so true! We need more engines like that. It's discouraging to play against engines that you always lose to and have no chance of beating.
User avatar
maksimKorzh
Posts: 771
Joined: Sat Sep 08, 2018 5:37 pm
Location: Ukraine
Full name: Maksim Korzh

Re: New engine release - Wukong JS

Post by maksimKorzh »

mvanthoor wrote: Tue Feb 16, 2021 8:50 pm
maksimKorzh wrote: Thu Jan 28, 2021 4:38 pm ...
Today I ran two 100 game tournaments at 1m+0.6s time controls of Rustic Alpha 1 against WukongJS 1.4 and 1.5.

The 1.4 version ended up at +130 Elo vs. Rustic A1. Assuming Rustic's 1695 rating, that would put version 1.4 at 1825, which is fairly close to its actual rating in CCRL Blitz.

However... The 1.5 version defeated Rustic A1 with a rating difference of +268 Elo (!). That would mean an improvement of 128 Elo on top of version 1.4. What did you change between 1.4 and 1.5? (I can see in the engine output that 1.5 searches deeper and faster than 1.4; that will at least be part of the difference.)

Against 1.4, Rustic can hold its own up to the late middle game, where WukongJS will start to outmaneuver it, because it's transposition table / move sorting advantage makes it tactically superior; this is even more evident with version 1.5, where that superiority starts much earlier in the game. In the endgame, WukongJS can outmaneuver Rustic by something like 10-12 ply because of the transposition table. I'm curious to see what the TT (and later, move sorting enhancements) will do for Rustic in that regard :)

Good job on Wukong 1.5. When CCRL tests it, I estimate it will be around 1950 Elo +/- 30 points or thereabouts.

PS: I ran both as UCI engines under CuteChess. No issues in 200 games total.

edit: 1.5 is about 2-3x as fast in nodes/second than version 1.4. I assume that this is caused by that optimization you got e-mailed by someone. I'll have to watch that video sometime.
Hi Marcel

re: That would mean an improvement of 128 Elo on top of version 1.4 (I can see in the engine output that 1.5 searches deeper and faster than 1.4; that will at least be part of the difference.)
- this correlates with my tests as well

re: What did you change between 1.4 and 1.5?
- I've significantly optimized the move generator based on ideas by my youtube subscriber Gontran Lemaire (I guess he's not a part of this forum) so it's around 5-6 times faster compared to version 1.4
Here're a few videos revealing this Elo leap step by step:

(starting from this video and than a few more within the playlist)

The major issue of my implementation was using objects. It turned out that objects are extremely slow in Javascript)))
After getting rid of objects and using optimized piece encoding (mostly derived from microMax by HGM to extract piece color by a single bitwise operation for instance) it became really faster)

Btw in my Wukong Xiangqi I've used slightly alternative approach - I just used arrays to map encoded piece to color/type.
This has resulted as fast movegen as in WukongJS, maybe even slightly faster - just can't compare them because
in xiangqi move generation process is more time consuming because there more squares and pieces.
Btw in Wukong Xiangqi I don't even use piece lists.
User avatar
maksimKorzh
Posts: 771
Joined: Sat Sep 08, 2018 5:37 pm
Location: Ukraine
Full name: Maksim Korzh

Re: New engine release - Wukong JS

Post by maksimKorzh »

JohnW wrote: Wed Feb 17, 2021 3:06 am
maksimKorzh wrote: Tue Jan 19, 2021 4:20 pm I've realized that the vast majority of chess players are 1700-2100 Elo and my engine would be a perfect sparring partner for them.
That is so true! We need more engines like that. It's discouraging to play against engines that you always lose to and have no chance of beating.
Hi John

This concept goes even further believe it or not.
For instance I'm now working with team maintaining https://xiangqi.com (guys from https://arbisoft.com/)
- their client (Paul English, founder of xiangqi.com) saw my interactive xiangqi apps https://maksimkorzh.github.io/interacti ... embed.html I've developed for https://xqinenglish.com and now he wants them to create puzzle solver based on my engine Wukong Xiangqi also an option to
play versus "bots" is also on the cards. They wanted to use the web assembly port of fairy stockfish first but it doesn't support all the browser and also inhumanly strong while for users it's important to be able to beat engine to stay engaged. So now I'm giving consultations on how to integrate my engine with their GUI, mostly via writing sample code snippets on how to parse/generate FENs basing on their GUI's board representation. We should establsih the proof of concept interaction between my engine and their GUI soon. Also they don't even have a move generator for UI so my engine would probably also be used for move validation.

I felt that classical chess programming market is taken completely,
but Xiangqi market is an unexplored territory where even my humble skills turn out to be very useful believe it or not)
So I'm now working on the real world chess programming project as I've dreamed)
User avatar
mvanthoor
Posts: 1784
Joined: Wed Jul 03, 2019 4:42 pm
Location: Netherlands
Full name: Marcel Vanthoor

Re: New engine release - Wukong JS

Post by mvanthoor »

maksimKorzh wrote: Wed Feb 17, 2021 11:13 am This concept goes even further believe it or not.
For instance I'm now working with team maintaining https://xiangqi.com (guys from https://arbisoft.com/)
- their client (Paul English, founder of xiangqi.com) saw my interactive xiangqi apps https://maksimkorzh.github.io/interacti ... embed.html I've developed for https://xqinenglish.com and now he wants them to create puzzle solver based on my engine Wukong Xiangqi also an option to
play versus "bots" is also on the cards. They wanted to use the web assembly port of fairy stockfish first but it doesn't support all the browser and also inhumanly strong while for users it's important to be able to beat engine to stay engaged. So now I'm giving consultations on how to integrate my engine with their GUI, mostly via writing sample code snippets on how to parse/generate FENs basing on their GUI's board representation. We should establsih the proof of concept interaction between my engine and their GUI soon. Also they don't even have a move generator for UI so my engine would probably also be used for move validation.
Congratulations :) Well done.

Pity I dislike Chinese chess. It feels like a form of weird checkers to me (flat pieces, jumping Cannon), and some pieces having to stay on your side of the board or even in the Palace feels limiting. If I'd ever play a form of Asian chess it'd probably be some form of Shogi.

Maybe, at some point, I could try and write my own chess variant, where the bishops become arch-bishops (able to move one step diagonally or vertically), and the knight becomes a unicorn (move like a knight, but ALSO move one square straight and TWO diagonal; or move like a knight + one step vertical/horizontal).

I'd actually be able to play this variant on my DGT board if I'd build something like Picochess in Rust first. And to be honest, being able to play the variant on the DGT board is important to me. I don't like playing a serious game using a computer screen.
Author of Rustic, an engine written in Rust.
Releases | Code | Docs | Progress | CCRL
User avatar
maksimKorzh
Posts: 771
Joined: Sat Sep 08, 2018 5:37 pm
Location: Ukraine
Full name: Maksim Korzh

Re: New engine release - Wukong JS

Post by maksimKorzh »

mvanthoor wrote: Wed Feb 17, 2021 11:26 am
maksimKorzh wrote: Wed Feb 17, 2021 11:13 am This concept goes even further believe it or not.
For instance I'm now working with team maintaining https://xiangqi.com (guys from https://arbisoft.com/)
- their client (Paul English, founder of xiangqi.com) saw my interactive xiangqi apps https://maksimkorzh.github.io/interacti ... embed.html I've developed for https://xqinenglish.com and now he wants them to create puzzle solver based on my engine Wukong Xiangqi also an option to
play versus "bots" is also on the cards. They wanted to use the web assembly port of fairy stockfish first but it doesn't support all the browser and also inhumanly strong while for users it's important to be able to beat engine to stay engaged. So now I'm giving consultations on how to integrate my engine with their GUI, mostly via writing sample code snippets on how to parse/generate FENs basing on their GUI's board representation. We should establsih the proof of concept interaction between my engine and their GUI soon. Also they don't even have a move generator for UI so my engine would probably also be used for move validation.
Congratulations :) Well done.

Pity I dislike Chinese chess. It feels like a form of weird checkers to me (flat pieces, jumping Cannon), and some pieces having to stay on your side of the board or even in the Palace feels limiting. If I'd ever play a form of Asian chess it'd probably be some form of Shogi.

Maybe, at some point, I could try and write my own chess variant, where the bishops become arch-bishops (able to move one step diagonally or vertically), and the knight becomes a unicorn (move like a knight, but ALSO move one square straight and TWO diagonal; or move like a knight + one step vertical/horizontal).

I'd actually be able to play this variant on my DGT board if I'd build something like Picochess in Rust first. And to be honest, being able to play the variant on the DGT board is important to me. I don't like playing a serious game using a computer screen.
re: Pity I dislike Chinese chess
- Well, it's the matter of taste, but Chinese chess gave me my very first real world chess programming job believe it or not,
details here: http://talkchess.com/forum3/viewtopic.php?f=2&t=76464