Hello everyone! Slightly daunting to post on here...
Thanks to the massive help from Maksim Korzh and his Youtube series about creating a bitboard chess engine in C, I wrote an engine in Javascript (technically in Typescript, which transpiles to Javascript) following his tutorial series.
I think of particular note is that the engine uses the relatively new 'bigint' primitive in JS for native 64-bit integer support. So instead of having to break bitboards, hashes, etc. up into two separate 32-bit integers it just has the single 64-bit ones. It has it's own drawbacks (notably that it's slower than 32-bit operations) but my goal here was to try something new (and learn) and not to make a super-fast engine (otherwise I wouldn't have used JS ).
Now that it's stable, I hope to look into improving the evaluation with a few things like mobility and some basic king safety knowledge (I have a general list of things I want to look into here: https://github.com/kurt1288/KhepriChess ... provements)
And since I'm unsure, how can I go about having my engine added/tested as part of the CCRL to get a rating?
KhepriChess wrote: ↑Wed Aug 11, 2021 1:40 am
Hello everyone! Slightly daunting to post on here...
Thanks to the massive help from Maksim Korzh and his Youtube series about creating a bitboard chess engine in C, I wrote an engine in Javascript (technically in Typescript, which transpiles to Javascript) following his tutorial series.
I think of particular note is that the engine uses the relatively new 'bigint' primitive in JS for native 64-bit integer support. So instead of having to break bitboards, hashes, etc. up into two separate 32-bit integers it just has the single 64-bit ones. It has it's own drawbacks (notably that it's slower than 32-bit operations) but my goal here was to try something new (and learn) and not to make a super-fast engine (otherwise I wouldn't have used JS ).
Now that it's stable, I hope to look into improving the evaluation with a few things like mobility and some basic king safety knowledge (I have a general list of things I want to look into here: https://github.com/kurt1288/KhepriChess ... provements)
And since I'm unsure, how can I go about having my engine added/tested as part of the CCRL to get a rating?
It looks like you're using the non-node version. For use in UCI apps, you'll want to use the "kheprichessuci.js" file.
I know other JS engines have a single file, but because I use Typescript and Webpack (to transpile and bundle), it was difficult to conditionally import the node-specific library to read the GUI commands. Rather than trying to figure out how to get webpack to play nice with that, it was easier to have a separate UCI file.
Congrats for your first version. What's your estimate for the strength? If you want, you can register your engine to participate in ZaTour tournament (broadcasted live), given that:
The engine is rated below 2800 as per CCRL
The engine is opensource
The engine is original
It runs on Ubuntu
No, it hasn't gotten a CCRL rating yet (not sure how to go about getting my engine added for testing there). I'd estimate it around 1600-ish, but that's a pretty large guess.
It looks like you're using the non-node version. For use in UCI apps, you'll want to use the "kheprichessuci.js" file.
I know other JS engines have a single file, but because I use Typescript and Webpack (to transpile and bundle), it was difficult to conditionally import the node-specific library to read the GUI commands. Rather than trying to figure out how to get webpack to play nice with that, it was easier to have a separate UCI file.
Thanks for giving it a try!
I tried with the uci file first, but without success, then I used the other file without the -fUCI command, same thing. Maybe, it needs the last node version, I'll check it out.
KhepriChess wrote: ↑Wed Aug 11, 2021 1:40 am
Hello everyone! Slightly daunting to post on here...
Thanks to the massive help from Maksim Korzh and his Youtube series about creating a bitboard chess engine in C, I wrote an engine in Javascript (technically in Typescript, which transpiles to Javascript) following his tutorial series.
A laic's question: Does it mean it is BBC translated to JavaScript or that it has BBC backbone with original evaluation and search?
And a suggestion in case this is not the last version: somehow indicate in the filename which version it is. I could see it was 0.5.0 only after running it from the command line but e.g. under Arena it does not introduce itself.