Skip to content

jmdha/Sunbird

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Sunbird

lichess-bullet lichess-blitz lichess-rapid

A UCI chess engine written in CPP.

Play against it here.

Table of Contents

  1. Features
  2. How to Build
  3. Comparison

Features

State

  • 16 bit move [wiki]
  • 80 byte state (I.e. pieces on board, castling rights, EP rights, and hash)
    • Bitboards for pieces [wiki]
    • Zobrist hash [wiki]
  • Make/unmake move through stack [wiki]
    • Make move clones state, then pushes modified state to stack
    • Unmake simply pops from stack
  • Custom move generation
    • Moves for sliding pieces are generated in a piecewise manner from a series of expanding rings.

Search

  • Negamax [wiki]
  • Alpha-Beta Pruning [wiki]
  • Iterative Deepening [wiki]
  • Quiescence Search [wiki]
  • PVS [wiki]
  • Move Ordering
  • Transposition Table [wiki]

Evaluation

  • Material Point Value [wiki]
  • Piece-Square Tables [wiki]
  • Pawn Structure
    • Doubled pawns
    • Passed pawns
  • Tapered by game phase [wiki]

How to Build

Navigate to root folder of project, then run the following to build engine.

mkdir build &&\
cmake -S . -B build -DCMAKE_BUILD_TYPE=Release -DIGNORE_TEST=true &&\
cmake --build build

The executable can then be found in chess_engine/build/engine/.

Comparison

# PLAYER : RATING POINTS PLAYED (%)
1 Sunbird v1.2.4 : 520.3 666.0 1107 60
2 Sunbird v1.2.3 : 448.1 1242.5 2387 52
3 Sunbird v1.2.2 : 384.1 577.5 1254 46
4 Sunbird v1.2.1 : 302.2 127.0 205 62
5 Sunbird v1.2.0 : 265.2 117.0 205 57
6 Sunbird v1.1.2 : 238.0 109.5 205 53
7 Sunbird v1.1.1 : 221.8 105.0 205 51
8 Sunbird v1.1.0 : 216.4 103.5 205 50
9 Sunbird v1.0.6 : 146.0 83.5 201 42
10 Sunbird v1.0.5 : 44.1 57.5 200 29
11 Sunbird v1.0.4 : 13.6 50.5 200 25
12 Sunbird v1.0.0 : 0.0 47.5 200 24