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
+12-13Lines changed: 12 additions & 13 deletions
Display the source diff
Display the rich diff
Original file line number
Diff line number
Diff line change
@@ -7,10 +7,9 @@ This repository tracks the journey of writing my first chess engine. It's writte
7
7
8
8
## Motivation
9
9
10
-
My focus was on creating a *minimal* engine with just enough features and optimizations to become a reasonably strong player.
11
-
I try to keep the codebase small but more importantly simple and human readable.
10
+
My focus is on creating a *minimal* chess engine with just enough features and optimizations to become a reasonably strong player.
12
11
13
-
I learned a lot about how a chess engine operates and how critical components like move generation or tree search can be implemented correctly.
12
+
__Version 0.2__ of MinimalChess uses iterative deepenging search with alpha-beta pruning and a simple killer-move heuristic and evaluates a position by counting material. That's all. This lack of sophistication causes it to play rather weak at only a little over 1000 ELO. Nothing to brag about but it makes it a good sparring partner for weak human players like myself and chess programmers who are just starting out. (Again - like myself) The engine is open source and I tried to write code that is as simple as possible to both understand and explain. It could be smaller or faster but I doubt it could be much simpler than it currently is. ;)
14
13
15
14
## Making Of Videos (Chess programming tutorial)
16
15
@@ -21,30 +20,30 @@ I have documented each milestone of the development in an accomanying [Youtube](
21
20
1.[Making of MinimalChessEngine - Episode 3: Move Generation](https://www.youtube.com/watch?v=j6bNdkQnL0Q&list=PL6vJSkTaZuBtTokp8-gnTsP39GCaRS3du)
22
21
1.[Making of MinimalChessEngine - Episode 4: Search & Eval](https://www.youtube.com/watch?v=b3DMIhmPSvE&list=PL6vJSkTaZuBtTokp8-gnTsP39GCaRS3du)
23
22
24
-
## Download the Engine
23
+
## Play the Engine
25
24
26
-
I've uploaded a Windows build here: https://github.com/lithander/MinimalChessEngine/releases/tag/MakingOfPart4
25
+
You can find prebuild binaries of different versions of MinimalChess for Mac, Linux and Windows here on github.
27
26
28
27
### MinimalChessEngine
29
28
30
-
Add MinimalChessEngine.exe as an engine to an UCI compatible Chess GUI such as CuteChess. I expect it to play at roughly 1000 ELO in a very non-human style.
31
-
It doesn't provide any options to configure and is hardcoded to make a move in less then one second so it should be compatible with all but the fastest time controls. There are no hash table settings or opening books to disable "advanced" techniques like this aren't implemented.
29
+
To play I recommend you add MinimalChessEngine as an engine to an UCI compatible Chess GUI such as [CuteChess](https://cutechess.com/).
32
30
33
31
### MinimalChessBoard
34
32
35
-
Run MinimalChessBoard.exe directly to get a console based Chess GUI with a few commands that help debugging the code!
33
+
You can also run MinimalChessBoard to get a console based Chess GUI that allows you to play chess against the engine. I don't recommend it though. This part of the project is mainly used during development for analysis and debugging purposes!
36
34
37
35
Command | Description
38
36
----------------- | -------------
39
37
[move] | You can play the game by typing in the move you want to make in the long algebraic notation e.g. "e2e4" to move white's King's Pawn.
40
38
reset | Reset the board to the start position.
41
39
fen [fenstring] | Setup the board to represent the given position.
42
-
perft [integer] | Compute perft values of the given depth
43
-
divide [integer] | Compute perft values of all available moves
44
-
! [integer] | Play the best move, search it with the given depth
45
-
? [integer] | List all available moves
40
+
perft [depth] | Compute perft values of the given depth
41
+
divide [depth] | Compute perft values of all available moves
42
+
! [depth] | Play the best move, search it with the given depth
43
+
? [depth] | List all available moves
46
44
?? | Print the resulting board for each available move
47
45
48
46
## Help & Support
49
47
50
-
If you encounter any problems of have questions or comments don't hesitate to contact me or open an issue or engage in the discussions section of this repositor.
48
+
Please let me know of any bugs or stability issues and must-have features you feel even the most barebones engine should support but MinimalChess is lacking.
49
+
Don't hesitate to contact via email or open an issue or engage in the discussions section of this repository.
0 commit comments