https://github.com/Hardcode3/BitBishop
A chess engine written in C++
https://github.com/Hardcode3/BitBishop
Last synced: 24 days ago
JSON representation
A chess engine written in C++
- Host: GitHub
- URL: https://github.com/Hardcode3/BitBishop
- Owner: Hardcode3
- License: mit
- Created: 2025-04-13T20:24:42.000Z (10 months ago)
- Default Branch: main
- Last Pushed: 2025-04-14T20:52:59.000Z (10 months ago)
- Last Synced: 2025-04-14T21:48:19.416Z (10 months ago)
- Language: CMake
- Size: 6.84 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README
# BitBishop
A modern chess engine written in C++23, designed for learning low-level programming techniques and chess engine development.
## About
BitBishop is a personal project created to explore low-level manipulations in modern C++.
While primarily a learning endeavor, the codebase is structured and documented to benefit anyone interested in chess engine development or modern C++ practices.
This project is currently π§ **under active development** π§ and aims to implement the [Universal Chess Interface (UCI) protocol](https://www.chessprogramming.org/UCI), making it compatible with popular chess GUIs and analysis tools.
## Project Goals
- π― **Educational**: Learn and demonstrate low-level C++ techniques
- π **Well-documented**: Extensive inline documentation and guides for educational purposes
- ποΈ **Clean architecture**: Clear, structured codebase following modern C++ best practices
- π§ͺ **Well-tested**: Extensive testing using Google Tests
- βοΈ **UCI compliance**: Full implementation of the UCI protocol for chess engines
- π§ **Modern tooling**: Built with C++23, CMake, and vcpkg
## Features
### Current
- Modern C++23 implementation
- CMake build system with vcpkg dependency management
- FEN notation support for position representation
- Structured documentation and guides
### Planned
- Complete UCI protocol implementation
- Move generation and validation
- Position evaluation
- Search algorithms (minimax, alpha-beta pruning)
- Opening book support
- Endgame tablebases
## Getting Started
### Prerequisites
- C++23 compatible compiler (GCC 12+, Clang 16+, or MSVC 2022+)
- CMake 3.20 or higher
- vcpkg package manager
- [clang format]
- [clang tidy]
### Building
- [CMake Guide](./docs/cmake.md) - Build system configuration and usage
## Documentation
The project includes comprehensive documentation to support learning.
These docs are a summary of what i learned while going through the chess world during engine's implementation.
Internal refs:
- [UCI Protocol](./docs/uci_protocol.md) - Universal Chess Interface specification
- [FEN Notation](./docs/fen_notation.md) - ForsythβEdwards Notation for position representation
External refs:
- [Andrew Healey - Building My Own Chess Engine](https://healeycodes.com/building-my-own-chess-engine)
- [Chess Programming Wiki](https://www.chessprogramming.org/Getting_Started)
## Project Structure
```
ChessEngine/
βββ build/ # Build artifacts
βββ cmake/ # Cmake scripts
βββ docs/ # Documentation and guides
βββ src/bitbishop/ # Sources (cpp)
βββ include/bitbishop/ # Headers (hpp)
βββ tests/bitbishop # Unit tests
βββ CMakeLists.txt # Build configuration
βββ ...
```
## Contributing
While this is primarily a personal learning project, suggestions and constructive feedback are welcome! Feel free to:
- Open issues for bugs or suggestions
- Submit pull requests with improvements
- Share your own learning experiences
## License
- [MIT License](./LICENSE)
## Acknowledgments
This project draws inspiration from the chess programming community and various resources on chess engine development.
## Status
π§ **In Development** - This engine is not yet functional for actual play. Stay tuned for updates!
---
**Repository**: [github.com/Hardcode3/ChessEngine](https://github.com/Hardcode3/ChessEngine)