Skip to content

Babak-SSH/Kojiro

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 
 
 
 
 
 
 
 
 

Repository files navigation

Kojiro

GitHub release (latest by date) GitHub Downloads (specific asset, all releases)

Ubuntu Windows (MinGW64)

An UCI-compatible Chess Engine written in C++

Description

Kojiro is a free, UCI chess engine written from scratch in C++,which i have developed for fun and to learn about chess programming, it uses well-known concepts used in chess programming for many decades and a lot of ideas are taken from chessprogramming wiki and talk chess forum and open-source engines.

Features

  • Search:
    • AlphaBeta Pruning
    • Aspiration Window
    • Iterative Deepening
    • Null Move Pruning
    • Razoring
    • Late Move Reductions
    • Quiescence Search
    • Multi Threads(Lazy SMP)
  • Move Ordering:
    • Hash Move
    • TT Move
    • MVV/LVA
    • Killer heuristic
    • History heuristic
  • Evaluation:
    • Evaluation Tapering
    • Piece Square Tables
    • Pawn Structure
    • Piece Mobility
    • Open Files
  • Other:
    • Zobrist Hashing
    • Transposition Table
    • logging
    • UCI

Usage

you can use UCI protocol by running the main file or use an UCI-compatible graphical user interface(GUI) (e.g. Arena, Sigma Chess) in order to be used comfortably.

also you can challenge it on Lichess! --> https://lichess.org/@/tha_kojiro

Compiling Kojiro

Linux

to compile the engine use:

cd src
make kojiro
./kojiro

Windows

  • To build on windows use mingw64
mingw32-make.exe

Tests

to compile perft tests

cd src
make perft

usage:

./perft depth fen
./perft 5 rnbqkbnr/pppppppp/8/8/8/8/PPPPPPPP/RNBQKBNR w KQkq - 0 1

inspiring open-source chess-engines:

  • BBC by Maksim Korzh
  • Stockfish by Tord Romstad, Joona Kiiski, Gary Linscott, Marco Costalba
  • Rustic by Marcel Vanthoor
  • Vice by BlueFeverSoft

Kojiro is still under develop

there are many techniques and features that will be added:

  • use more modern cpp features to enhance the performance
  • better evalution
    • pawn (push, shield)
    • center control, castling
    • piece pair, blocked pieces
  • more tests
  • futility prunning (in alpha-beta and quiescence)
  • time distribution model for time management of moves
  • opening books
  • Syzygy support
  • NNUE
  • internal iterative deepening
  • better sorting
    • Counter
    • LastCaptureBonus
    • SEE
    • Checks priority
    • En-passant priority
  • Xboard protocol
  • wiki