Git Product home page Git Product logo

blunder's Introduction

blunder

A chess engine written in modern C++.

Dependencies

  • A modern C++ compiler with support for C++23, such as gcc 13.1.1 or clang 16 or greater.
  • A recent version of cmake, at least 3.23, to generate the build files without having to change CMakeLists.txt.
  • A generator supported by CMake that can be used for compiling C++, such as make or ninja.
  • A unix-like environment, e.g. Linux, MacOS. Support for Windows will be added later.
  • Google Test for unit testing.
  • The pytorch c++ frontend. The easiest way to get this working is to install the library via a system package manager, e.g. pacman on archlinux. If you have a custom install of the library in a non-default location, e.g. ${HOME}/opt/libtorch, then exporting TORCH_INSTALL_PREFIX=${HOME}/opt/libtorch, or setting the variable when running cmake, will allow the build to work. For development, I'm using Torch version 2.1 with CUDA 12.1, which is currently the latest release.

Compiling

Assuming that all the dependencies are installed and make is the default build tool, the blunder library and executables can be built by running the following commands:

cd blunder
mkdir build
cd build
cmake ..
make

Notes

This is in super early stage development. The only artifacts produced by the project are:

  • bbprinter: an executable to print common bitboards.
  • genmagic: an executable to generate magic numbers for sliding pieces.

At the moment, these artificts are meant to help with development and debugging, and as foundation for move generation.

blunder's People

Contributors

oserr avatar

Watchers

 avatar

blunder's Issues

MCTS

Implement Monte Carlo Tree Search.

Make MCTS parallel

Currently, the MCTS runs in one thread, but this makes move selection very slow. Parallelizing the MCTS will require that we modify the evaluator to be able to take handle different threads running the evaluator.

Create mechanism to save games so we can use the games at a later time to train the model

The most practical reason to save games is to be able to train the model with the games, but saving games will also allow us to replay the games or simply to look back to see how game play evolves.

This will require the following

  • A mechanism for serializing the games
  • A mechanism for saving the games to a database or file.
  • A mechanism for reading the games out of a database or file.

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.