Skip to content

Cubix1729/CubixChess

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

15 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

CubixChess Engine

CubixChess is a lightweight UCI chess engine, designed as a C++ translation of the engine I had written in Go (Simplex).

Features

Evaluation

The engine uses a NNUE evaluation function, with architecture (768 -> 128)x2 -> 1. It was trained with the Bullet trainer, using Leela self-play data.

Search

  • Negamax with Alpha-Beta pruning
  • Iterative deepening
  • Principal variation search (PVS)
  • Late move reductions (LMR)
  • Quiescence search
  • Transposition table
  • Aspiration windows
  • Move ordering with:
    • Hash move first
    • MVV-LVA
    • Killer heuristic
    • History heuristic
  • Null-move pruning
  • Reverse futility pruning
  • Razoring
  • Futility pruning
  • Late move pruning
  • Delta pruning

Chess internals

For move generation and board representation, the engine uses Disservin/chess-library (contained in header file chess.hpp).

UCI options

The only UCI option available is Hash to set the desired size (in MB) of the transposition table. The engine is single-threaded, hence it does not support the Threads option.

Building

  1. First clone the repository:
    git clone https://github.com/Cubix1729/CubixChess.git
    cd CubixChess
    
  2. Build the project using CMake:
    cmake -B build -DCMAKE_BUILD_TYPE=Release
    cmake --build build
    
    If your CPU does not support AVX2, then use cmake -B build -DCMAKE_BUILD_TYPE=Release -DUSE_AVX2=OFF

Special thanks

  • Engines like PZChessBot or Weak for providing some inspiration
  • Disservin for his great chess library
  • jw1912 for the Bullet NNUE trainer
  • linrock for the NNUE training data used (linrock/test80-2024)

About

A lightweight NNUE chess engine written in C++

Topics

Resources

License

Stars

0 stars

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors