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-6Lines changed: 17 additions & 6 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -10,10 +10,11 @@ The didactic nature of the project is reinforced by it's open source license (MI
10
10
11
11
* A simple 8x8 Board representation: Just an array to represent the 64 squares and keep track of the pieces.
12
12
* A triangular PV-Table to keep track of the Principal Variation of best moves.
13
-
* Staged move generation: PV move first, then MVV-LVA sorted captures, followed by known killer moves and finally the remaining quiet moves.
14
-
* Iterative Deepening Search with Alpha-Beta pruning and Quiescence Search.
15
-
* Tapered Piece-Square Tables with values tuned on a set of 725000 quiet, labeled positions.
16
-
* No bitboards, hash tables, not even an undo-move method, just the essentials.
13
+
* A Transposition Table to store the score and best move of previously visited positions.
14
+
* Staged move generation: TT first, followed by the PV move, then MVV-LVA sorted captures, followed by known killer moves and finally the remaining quiet moves.
15
+
* Iterative Deepening Search with PVS, null-move pruning and Quiescence Search.
16
+
* Tapered PSTs with values tuned on a set of 725000 quiet, labeled positions.
17
+
* A 13th auto-tuned table for a dynamic, mobility-based evaluation component.
17
18
18
19
## How to play
19
20
@@ -31,22 +32,32 @@ As a final step you have to register the engine with the GUI. The details depend
31
32
After this you should be ready to select MinimalChess as a player!
32
33
33
34
## Version History
35
+
```
36
+
Version: 0.5
37
+
Size: 707 LOC
38
+
Strength: 2200 ELO
39
+
```
40
+
[__Version 0.5__](https://github.com/lithander/MinimalChessEngine/releases/tag/v0.5) adds a 13th tuned table for a mobility-based evaluation term, null-move pruning and a simple transposition table. I also changed the target framework to .NET 5.
41
+
With these changes MinimalChess gains about 350 ELO in playing strength over the previous version.
42
+
34
43
```
35
44
Version: 0.4
36
45
Size: 610 LOC
37
-
Strength: 1900 ELO
46
+
Strength: 1883 ELO
38
47
```
39
48
[__Version 0.4__](https://github.com/lithander/MinimalChessEngine/releases/tag/v0.4) now uses tapered Piece-Square tables to evaluate positions. It took two weeks of tuning and testing until I found values that could rival [PeSTOs](https://rofchade.nl/?p=307) famous PSTs in strength.
40
49
I also added a [killer heuristic](https://www.chessprogramming.org/Killer_Heuristic) and staged move generation so that MinimalChess does not generate moves which will likely never be played. The resulting speed improvements more than compensate for the slightly more expensive evaluation.
41
50
A new time control logic now allocates the given time budget smarter, especially in modes where there's an increment each move, and the 'nodes' and 'depth' constraints are now supported in all modes.
51
+
MinimalChess 0.4.1 is listed at [1883 ELO](http://ccrl.chessdom.com/ccrl/404/cgi/engine_details.cgi?print=Details&each_game=1&eng=MinimalChess%200.4.1%2064-bit#MinimalChess_0_4_1_64-bit) on the CCRL.
52
+
42
53
43
54
```
44
55
Version: 0.3
45
56
Size: 641 LOC
46
57
Strength: 1575 ELO
47
58
```
48
59
[__Version 0.3__](https://github.com/lithander/MinimalChessEngine/releases/tag/v0.3) adds MVV-LVA move ordering, Quiescence Search and replaces material-only evaluation with Piece-Square Tables.
49
-
With these changes MinimalChess gains about 500 ELO in playing strength over the previous version and achieved at [1571 ELO](http://ccrl.chessdom.com/ccrl/404/cgi/engine_details.cgi?match_length=30&each_game=1&print=Details&each_game=1&eng=MinimalChess%200.3%2064-bit#MinimalChess_0_3_64-bit) on the CCRL.
60
+
With these changes MinimalChess gains about 500 ELO in playing strength over the previous version and achieved [1571 ELO](http://ccrl.chessdom.com/ccrl/404/cgi/engine_details.cgi?match_length=30&each_game=1&print=Details&each_game=1&eng=MinimalChess%200.3%2064-bit#MinimalChess_0_3_64-bit) on the CCRL.
50
61
This version also introduces a rather unique feature: Sets of PSTs are defined in separate files and can be selected via an UCI option. This allows the user to tweak the values or write their own tables from scratch and by this alter the playstyle of the engine considerably. No programming experience required!
0 commit comments