moonfish: a new engine in C (inspired by sunfish)

Discussion of chess software programming and technical issues.

Moderator: Ras

zamfofex
Posts: 26
Joined: Wed Feb 16, 2022 6:21 am
Full name: P. M. Zamboni

moonfish: a new engine in C (inspired by sunfish)

Post by zamfofex »

Hello, everyone! I have recently started working on a new UCI engine written in C, which I call “moonfish”, inspired by sunfish. It is in very early stages at the moment, but it seems to be working well enough! I also made a simple TUI that allows people to play against UCI engines, including moonfish, which I called “play”.

Currently, the executables are only for Linux, though moonfish should be able to be compiled on Windows too! The source code for the engine can be found here: https://git.sr.ht/~zamfofex/moonfish

The prebuilt executables can be downloaded from https://builds.sr.ht/~zamfofex/moonfish/commits/main Or currently, more specifically https://builds.sr.ht/~zamfofex/job/1070542 (on the “artifacts” section, you should be able to download the Linux‐specific “moonfish” and “play” executables).

The “moonfish” executable is a UCI engine, which you should be able to select from any UCI GUI. The “play” executable is a UCI TUI, which you can start from the terminal as “./play 15+10 ./moonfish”, for example. (There are other examples in the project’s readme.)

Note that, currently, moonfish ignores time control information, and it will play entirely deterministically, so try to give it a long enough time control for it to decide on moves!

I also plan to make it playable on Lichess eventually, but I have yet to set it up.

I’d love to know what people think about it! I hope it’s interesting enough.
zamfofex
Posts: 26
Joined: Wed Feb 16, 2022 6:21 am
Full name: P. M. Zamboni

Re: moonfish: a new engine in C (inspired by sunfish)

Post by zamfofex »

I have found (and fixed) a fairly significant flaw in the code for NNUE evaluation in moonfish recently! Besides, I made various improvements to it (e.g. I added castling, and made it search in threads), and also set it running on Lichess. So if you had tried it or seen it before, and it seemed a bit lacking, I’d encourage taking another look at it.

Here is the Lichess account for it: https://lichess.org/@/munfish

I have added a transposition table to it (in a different branch), but it didn’t seem to improve it significantly, so I refrained from adding it to the ‘main’ branch too.

If you try it out, please do let me know how it went!