Copyright 2013-2024 Phokham Nonava https://www.fluxchess.com
Introduction
Pulse Chess is a simple and accessible chess engine designed to help developers learn about building their own chess engines. It's a great starting point for those who want to understand the fundamentals of chess engine programming.
Key Features
- UCI Compatible: Supports the Universal Chess Interface (UCI) protocol, making it easy to integrate with various chess GUIs.
- 0x88 Board Representation: Utilizes the 0x88 board representation for efficient move generation and board management.
- Material and Mobility Evaluation: Implements basic evaluation functions focusing on material and mobility, providing a clear example of how to assess positions.
- Pseudo-Legal Move Generator: Generates pseudo-legal moves, offering insight into the process of move generation and validation.
- Basic Search with Alpha-Beta Pruning and Quiescent Search: Incorporates a basic search algorithm enhanced with alpha-beta pruning and quiescent search to improve decision-making and performance.
Pulse Chess is ideal for novice programmers and experienced developers alike, offering a hands-on approach to understanding chess engines.
Implementations
Pulse Chess is currently available in Java and C++. However, I am working on additional engines in different languages that all have the same feature set.
| Language | Features | Platforms | Requirements |
|---|---|---|---|
| Java | Complete | Linux, Windows, macOS | Java 17 |
| C++ | Complete | Linux, Windows | C++17 |
| Kotlin/Native | In Progress | Linux, Windows, macOS | Kotlin Multiplatform 2.0.21 |
| Go | In Progress | Linux, Windows | Go 1.23.4 |
Build them
First clone the repository using git clone https://github.com/fluxroot/pulse.git.
Java
./gradlew :pulse-java:build
ls pulse-java/build/distributions/pulse-java-*.zipC++
# Linux cmake -B build -DCMAKE_BUILD_TYPE=Release cmake --build build --config Release --target package (cd build; ctest -C Release) ls build/pulse-cpp-linux-*.tar.gz
# Windows cmake -B build cmake --build build --config Release --target package cd build; ctest -C Release; cd .. ls build/pulse-cpp-windows-*.zip
Kotlin/Native
# Linux ./gradlew :pulse-kotlin:linuxDistTar ls pulse-kotlin/build/distributions/pulse-kotlin-linux-*.tar.gz
# Windows ./gradlew :pulse-kotlin:windowsDistZip ls pulse-kotlin/build/distributions/pulse-kotlin-windows-*.zip
# macOS ./gradlew :pulse-kotlin:macosDistTar ls pulse-kotlin/build/distributions/pulse-kotlin-macos-*.tar.gz
Go
# Linux cd pulse-go go build -v ./... # No distribution archive yet
# Windows cd pulse-go go build -v ./... # No distribution archive yet
Acknowledgments
The Pulse Chess logo was created by Silvian Sylwyka. Thanks a lot!
License
Pulse Chess is released under the MIT License.