GithubHelp home page GithubHelp logo

babak-ssh / kojiro Goto Github PK

View Code? Open in Web Editor NEW
1.0 2.0 0.0 431 KB

A simple UCI Chess Engine

C++ 98.75% CMake 0.29% Makefile 0.82% C 0.14%
ai chess chess-engine cpp cpp20 game-development bitboard-chess-engine uci-chess-engine

kojiro's Introduction

Kojiro

tests

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

to compile the engine use:

cd src
make kojiro
./kojiro

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
  • windows support
  • wiki

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.