BimmerBass / Loki

C++17 chess engine
GNU General Public License v3.0
9 stars 2 forks source link

Add staged move generation #9

Closed BimmerBass closed 3 years ago

BimmerBass commented 3 years ago

Staged move generation should be added for 1) Faster search, 2) Better move ordering, and 3) Easy of implementing new move ordering techniques. On top of these three, the code would also be more readable and less cluttered with arbitrary move-scoring constants. The staged move generation should generate moves the following way:

  1. Hash/PV move
  2. Good captures
  3. Equal captures
  4. Quiet moves.
  5. Losing captures

The quiet moves is currently scored the following way:

  1. Killers
  2. Countermoves
  3. History scoring

While captures are scored with Mvv/Lva and SEE.

BimmerBass commented 3 years ago

Edit: Staged move generation is planned to be implemented in Loki v4.0 together with LMR and LMP (see #11 )

BimmerBass commented 3 years ago

Update: Staged move generation has been implemented (see staged-move-generation branch ) and seems to gain around 30 elo. I will have to do some tests the next couple of days to ensure it is bug-free, but it will soon be merged into master.

BimmerBass commented 3 years ago

Update 2: The staged-move-generation branch was merged into master a couple of days ago and seems to be bug-free. It also seems to gain between 20 and 30 elo points.