You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
Copy file name to clipboardExpand all lines: README.md
+17-1Lines changed: 17 additions & 1 deletion
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -4,12 +4,28 @@ This is a toy chess engine I developed over two weeks as part of my winter break
4
4
5
5
This software **does not** come with a GUI, so if you want to play it you will need to download one from Internet. I recommend [en-croissant](https://github.com/franciscoBSalgueiro/en-croissant).
6
6
7
-
This engine is still **WIP** and will be updated from time to time. Currently I am refactoring and optimizing and hope to hit 1600 Elo soon.
7
+
This engine is still **WIP** and will be updated from time to time.
8
8
9
9
## Compiling
10
10
11
11
Use the CMake to compile the engine.
12
12
13
+
## Technical Details
14
+
15
+
This engine is based on traditional *alpha-beta search* algorithm with simple optimizations and pruning methods. Features implemented:
16
+
- Transposition table
17
+
- Iterative deepening
18
+
- Null move pruning
19
+
- Quiescence search
20
+
- Razoring
21
+
- Late move reduction
22
+
- History heuristics
23
+
- A simple NNUE for evaluation
24
+
25
+
Since v0.4.0 the engine uses **NNUE** for evaluation.
26
+
- Uses naive `768->128->1` architecture. No accumulators, king buckets, subnetworks - so in theory this is not actually *efficiently updated*. However, with proper auto-vectorization this runs even *faster* than my previous handcrafted evaluation function.
27
+
- Positions used to train this NNUE are collected from Lichess database. About 30% of the data is from chess960 variant. All positions are first evaluated with my own engine (v0.3.0) at depth 8, and then adjusted based on the actual outcome and the "imbalanceness" of the position. Thus, this network is purely original. So far, only 1.5M filtered positions are used to train this reasonably good network.
0 commit comments