Onslaught is a Universal Chess Interface (UCI) compliant chess engine developed in C++. Designed for performance, Onslaught can be used with various UCI-compatible chess graphical user interfaces (GUIs) to play, analyze, and find optimal moves in standard chess positions.
Follow these steps to build and run the Onslaught chess engine.
- C++ Compiler: A C++17 compatible compiler (e.g., GCC 7+ or Clang 5+).
- Make: GNU Make utility.
-
Clone the repository
git clone https://github.com/kachhy/Onslaught.git cd Onslaught -
Build the engine The
Makefilewill compile the source code and create theOnslaughtexecutable.make release
To compile with debug symbols for easier debugging:
make debug
Or if you want to build for your machine specifically
make native
This project is licensed under the GNU General Public License v3.0 - see the LICENSE file for details.
There are two main ways to contribute to the project.
To contribute code
- Fork the repository
- Make your changes
- Submit tests on the OpenBench instance. All functional changes must pass an LTC test and all non-functional changes or optimizations must pass a non-regression LTC test.
- Make a pull request with the test information (links to the tests, or the info blocks)
- Get feedback!
Running all of these SPRT tests takes a lot of compute. To contribute compute to our OpenBench instance, please refer to the OpenBench wiki. Ensure you have an account, use those credentials, and use https://openbench.kaichung.dev as the endpoint.
- Chess Programming Wiki - an invaluable reference that guided much of our development.
- Ethereal - a great source of inspiration, both in strength and in code clarity.
- Bullet - the NNUE trainer we used to train our networks; intuitive and easy to work with.
- OpenBench - the SPRT testing framework we rely on for all our testing.
- Incbin - used to embed our networks directly into our binaries.
- CodeMonkeyKing's YouTube series - a great starting point for learning chess engine implementation.
