Sonic is a chess engine written in C++ that supports the UCI (Universal Chess Interface) protocol. It is designed for performance and extensibility, making it a great choice for both developers and chess enthusiasts.
Sonic is still under development, with a current Elo rating of around 1700. There is plenty of room for improvement, and contributions are welcome!
To build Sonic from the source code, you need to have Make
installed. Follow these steps to get started:
git clone https://github.com/fffelix-huang/Sonic.git
cd Sonic/src
make
It will compile the source code into an executable named sonic
.
Name | Type | Default | Valid | Description |
---|---|---|---|---|
Book |
string | None | <book_name> |
Polyglot book file to use. |
Threads |
integer | Number of threads. | ||
Hash |
integer | Transposition table size (in MB). | ||
Clearhash |
button | Clear entries in transposition table. |
Sonic includes a variety of advanced chess engine features:
- Alpha-Beta Search
- Quiescence Search
- Iterative Deepening
- Check Extension
- Transposition Table
- Repetition Detection
- Insufficient Mating Material
- Null Move Pruning
- Aspiration Window
- Principal Variation Search
- Mate Distance Pruning
- Futility Pruning
- Reverse Futility Pruning
- Late Move Reduction
- Delta Pruning
- PV move
- Pawn Promotion
- MVV-LVA (Most Valuable Victim - Least Valuable Aggressor)
- Piece Square Table
- Passed Pawn Bonus
- Piece Mobility
- Tapered Evaluation
I'm excited to invite contributions to Sonic! Here are some areas where your input can make a difference:
- Better Documentation: Help us improve the clarity and comprehensiveness of the documentation.
- Code Readability: Enhance the code structure and style for better readability.
- Workflow Improvements: Optimize the development workflow for better efficiency.
- Search Function Enhancements: Propose and implement improvements to the search functions.
- Evaluation Enhancements: Work on better evaluation metrics for the engine.
- Anything Else: If you have any other ideas or improvements, feel free to contribute!
We welcome contributions from developers of all skill levels! Whether you're fixing a bug, adding new features, or improving documentation, your help is appreciated.
To contribute:
- ⭐ Star the repository to show your support.
- 📝 Create an issue outlining how you'd like to contribute to the project.
- 🍴 Fork the repository to make your own copy:
# Click on the "Fork" button at the top right of the repository page
- 💻 Implement your changes in the forked repository by creating a new branch for your feature or fix:
git checkout -b feature-or-fix-name
- Make your changes and commit them using Conventional Commits:
git commit -m "feat: describe your changes"
- 🔄 Push your branch:
git push origin feature-or-fix-name
- Open a pull request and describe the changes you made, mentioning the issue number you're addressing.
- ⏳ Wait for review and feedback from the maintainers.
If you have any questions or need assistance, please feel free to reach out. Your contributions are valued, and together we can make Sonic a better chess engine!