New chess engine in golang Soomi V1

Discussion of chess software programming and technical issues.

Moderator: Ras

OttoLau
Posts: 2
Joined: Wed Oct 22, 2025 7:10 pm
Full name: Otto Laukkanen

New chess engine in golang Soomi V1

Post by OttoLau »

Hello to everyone, id like to share my first attempt at building a somewhat competent chess engine.

Github link: https://github.com/Koma1867/Soomi-V1-Ch ... -in-golang

Open to any suggestions of how to improve the engine, i have tried to keep code as understandable as possible. :D
Bart Weststrate
Posts: 25
Joined: Fri Mar 18, 2016 3:34 pm

Re: New chess engine in golang Soomi V1

Post by Bart Weststrate »

Move ordering is simple of Hash move first, then promotions, captures sorted by MVV-LVA, and lastly killer moves.
Have you tried moving promotions lower in the list? For faster cutoff's pieces must dissapear. If there arise (extra) queens then the situation gets more complex in stead of more simple. :o
OttoLau
Posts: 2
Joined: Wed Oct 22, 2025 7:10 pm
Full name: Otto Laukkanen

Re: New chess engine in golang Soomi V1

Post by OttoLau »

Havent tried actually, i have been focused lately on fixing bugs and optimising small stuff. Do you recommend before killers or after?
User avatar
hgm
Posts: 28396
Joined: Fri Mar 10, 2006 10:06 am
Location: Amsterdam
Full name: H G Muller

Re: New chess engine in golang Soomi V1

Post by hgm »

Bart Weststrate wrote: Fri Oct 24, 2025 8:11 am
Move ordering is simple of Hash move first, then promotions, captures sorted by MVV-LVA, and lastly killer moves.
Have you tried moving promotions lower in the list? For faster cutoff's pieces must dissapear. If there arise (extra) queens then the situation gets more complex in stead of more simple. :o
I would think it depends on the current evaluation. It is indeed good search strategy to try to cause a beta cutoff with the move that will have the smallest tree (e.g. due to simplifying the position). But the move must be good enough to actually score above beta. And if it doesn't do so immediately, there is a high chance it won't do it at all, because after it the opponent will have the move. This is why most engines only try a null move when the current evaluation is already above beta.

So postponing promotions would not be a good idea if the current evaluation is so much below beta that you really need the promotion to get above it.

BTW, the extra Queen would not complicate the position very much, if it is a cut-move. Because it is the opponent that will be playing the all-nodes in that case. And it is not he that has that Queen. The side that is ahead will mostly try to cut with null move without touching his extra Queen, and be successful with that against any pointless opponent move. And because of the large eval increase caused by the promotion, the null move would even become adequate refutation against captures that otherwise would have required action to get even.
Bart Weststrate
Posts: 25
Joined: Fri Mar 18, 2016 3:34 pm

Re: New chess engine in golang Soomi V1

Post by Bart Weststrate »

Nice explanation HG.