https://github.com/jhonnold/berserk
UCI Chess Engine written in C
https://github.com/jhonnold/berserk
c chess-engine
Last synced: about 1 year ago
JSON representation
UCI Chess Engine written in C
- Host: GitHub
- URL: https://github.com/jhonnold/berserk
- Owner: jhonnold
- License: gpl-3.0
- Created: 2021-02-14T04:05:18.000Z (over 5 years ago)
- Default Branch: main
- Last Pushed: 2025-04-16T02:26:53.000Z (about 1 year ago)
- Last Synced: 2025-05-07T23:07:56.164Z (about 1 year ago)
- Topics: c, chess-engine
- Language: C
- Homepage:
- Size: 58.1 MB
- Stars: 244
- Watchers: 13
- Forks: 32
- Open Issues: 4
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
README

# Berserk Chess Engine

A UCI chess engine written in C. Feel free to challenge me on [Lichess](https://lichess.org/@/BerserkEngine)!
## Strength
### Rating Lists + Elo
Many websites use an [Elo rating system](https://en.wikipedia.org/wiki/Elo_rating_system) to present relative skill amongst engines.
Below is a list of many chess engine lists throughout the web (*variance in Elo is due to different conditions for each list*)
* [CCRL 40/15](https://ccrl.chessdom.com/ccrl/4040/) - **3514 4CPU, 3480 1CPU**
* [CCRL 40/2](https://ccrl.chessdom.com/ccrl/404/) - **3667 1CPU**
* [IpMan Chess](https://ipmanchess.yolasite.com/r9-7945hx.php) - **3547 1CPU**
* [CEGT](http://www.cegt.net/40_4_Ratinglist/40_4_single/rangliste.html) - **3598 1CPU**
* [SPCC](https://www.sp-cc.de/) - **3733 1CPU**
* ~~[FGRL](www.fastgm.de/60-0.60.html) - **3518 1CPU**~~
* List no longer maintained
### Tournaments/Events with Berserk
- [TCEC](https://tcec-chess.com/)
- [CCC](https://www.chess.com/computer-chess-championship)
- [Graham's Broadcasts](https://ccrl.live/)
## Functional Details
### Board Representation and Move Generation
- [Bitboards](https://www.chessprogramming.org/Bitboards)
- [Magic Bitboards](https://www.chessprogramming.org/Magic_Bitboards)
- [Staged Move Gen](https://www.chessprogramming.org/Move_Generation#Staged_move_generation)
### Search
- [Negamax](https://www.chessprogramming.org/Negamax)
- [PVS](https://www.chessprogramming.org/Principal_Variation_Search)
- [Quiescence](https://www.chessprogramming.org/Quiescence_Search)
- [Iterative Deepening](https://www.chessprogramming.org/Iterative_Deepening)
- [Transposition Table](https://www.chessprogramming.org/Transposition_Table)
- [Aspiration Windows](https://www.chessprogramming.org/Aspiration_Windows)
- [Internal Iterative Reductions](https://www.talkchess.com/forum3/viewtopic.php?f=7&t=74769)
- [Reverse Futility Pruning](https://www.chessprogramming.org/Reverse_Futility_Pruning)
- [Razoring](https://www.chessprogramming.org/Razoring)
- [Null Move Pruning](https://www.chessprogramming.org/Null_Move_Pruning)
- [ProbCut](https://www.chessprogramming.org/ProbCut)
- [FutilityPruning](https://www.chessprogramming.org/Futility_Pruning)
- [LMP](https://www.chessprogramming.org/Futility_Pruning#MoveCountBasedPruning)
- History Pruning
- [SEE](https://www.chessprogramming.org/Static_Exchange_Evaluation)
- Static Exchange Evaluation Pruning
- [LMR](https://www.chessprogramming.org/Late_Move_Reductions)
- [Killer Heuristic](https://www.chessprogramming.org/Killer_Heuristic)
- [Countermove Heuristic](https://www.chessprogramming.org/Countermove_Heuristic)
- [Extensions](https://www.chessprogramming.org/Extensions)
- [Singular](https://www.chessprogramming.org/Singular_Extensions)
### Evaluation
- [NNUE](https://www.chessprogramming.org/NNUE)
- Horizontally Mirrored 16 Buckets
- 2x(12288 -> 512) -> 1
- [Berserk FenGen](https://github.com/jhonnold/berserk/tree/fen-gen)
- [Grapheus](https://github.com/Luecx/Grapheus)
- ~~[Koivisto's CUDA Trainer](https://github.com/Luecx/CudAD)~~
- This has been deprecated in favor of an even newer trainer written by Luecx, Grapheus.
- ~~[Berserk Trainer](https://github.com/jhonnold/berserk-trainer)~~
- This has been deprecated in favor of Koivisto's trainer, but trained all networks through Berserk 8.5.1+
## Building
```bash
git clone https://github.com/jhonnold/berserk && \
cd berserk/src && \
make pgo CC=clang && \
./berserk
```
## Credit
This engine could not be written without some influence and they are...
### Engine Influences
- [Stockfish](https://github.com/official-stockfish/Stockfish)
- [Ethereal](https://github.com/AndyGrant/Ethereal)
- [Koivisto](https://github.com/Luecx/Koivisto)
- [Weiss](https://github.com/TerjeKir/weiss)
- [Chess22k](https://github.com/sandermvdb/chess22k)
- [BBC](https://github.com/maksimKorzh/chess_programming)
- [Cheng](https://www.chessprogramming.org/Cheng)
### Additional Resources
- [Grapheus](https://github.com/Luecx/Grapheus)
- [Koivisto's CUDA Trainer](https://github.com/Luecx/CudAD)
- [OpenBench](https://github.com/AndyGrant/OpenBench)
- [TalkChess Forum](http://talkchess.com/forum3/viewforum.php?f=7)
- [CCRL](https://kirill-kryukov.com/chess/discussion-board/viewforum.php?f=7)
- [JCER](https://chessengines.blogspot.com/p/rating-jcer.html)
- [Cute Chess](https://cutechess.com/)
- [Arena](http://www.playwitharena.de/)
- [CPW](https://www.chessprogramming.org/Main_Page)
- Lars in Grahams Broadcast rooms