-
Notifications
You must be signed in to change notification settings - Fork 14
/
README
131 lines (99 loc) · 3.98 KB
/
README
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
DONNA
Donna is experimental chess engine implemented in Go. Donna comes with
interactive command line shell and supports standard UCI (universal chess
interface) protocol. Its technical features include:
Data Structures
- Magic bitboards
- Transposition table
- Material imbalance table
- Pawn cache
Move Generation
- All possible and all valid moves
- Captures and pawn promotions
- Checks and check evasions
Search
- Root, tree, and quiescence searches
- Aspiration windows
- Iterative deepening
- Search depth extensions
- Alpha/beta pruning
- Mate distance pruning
- Razoring
- Futility margin pruning
- Null move pruning
- Late move reduction
- Delta pruning for captures
- Good and killer move heuristics
- Insufficient material and repetition detection
Position Evaluation
- Piece/square bonuses
- Material with imbalance adjustment
- King safety and pawn shield quality
- Castling rights
- Piece mobility
- Control of the center
- Threats and hanging pieces
- Passed, isolated, doubled, and backwards pawns
- Trapped rooks and bishops
- Known and lesser known endgames
- Bitbase for King + Pawn vs. King endgames
Game Controls
- Maximum search depth
- Time to make a move
- Time control for certain number of moves
- Time increment
Miscellaneous
- UCI protocol support
- Interactive read–eval–print loop (REPL)
- Polyglot opening books
- Go test suite with 300+ tests
- Donna Chess Format to define chess positions in human-readable way
DOWNLOADS
The latest versions of Donna executables are available for download at
http://donnachess.github.io
64-bit builds are provided for Windows, Mac OS X, Linux, and FreeBSD.
BUILDING FROM SOURCE
To build Donna you will need Go v1.3 or later installed on your system (see
http://golang.org/dl/). From Donna source directory run "make" or "go build"
command:
$ go build -o ./bin/donna -gcflags -B github.com/michaeldv/donna/cmd/donna
USING DONNA
Donna chess engine can be used with any chess GUI software that supports UCI
protocol. You can also launch Donna as standalone command-line program and
play against it in interactive mode:
$ ./donna -i
Donna v4.1 Copyright (c) 2014-2018 by Michael Dvorkin. All Rights Reserved.
Type ? for help.
donna>
Donna supports Polyglot chess opening books. Free opening books are available
for download at https://github.com/michaeldv/donna_opening_books. To connect
the opening book set DONNA_BOOK environment variable:
$ export DONNA_BOOK=~/chess/books/gm2001.bin
STRENGTH
Donna's chess ratings are available at Computer Chess Rating Lists site at
http://www.computerchess.org.uk/ccrl/4040/cgi/engine_details.cgi?eng=Donna%201.0%2064-bit
THANK YOU!
Donna stands on the shoulders of the giants and it would never have been
possible without them. My gratitude goes to:
- Aaron Becker, Daydreamer
- Fabien Letouzey, Senpai
- Igor Korshunov, Murka
- Jon Dart, Arasan
- Steve Maughan, Maverick
- Tom Kerrigan, TSCP
- Tord Romstad, Marco Costalba, and Joona Kiiski, Stockfish
- Vadim Demichev, Gull
- Vladimir Medvedev, GreKo
Special thanks goes to my old time buddy grandmaster Eduardas Rozentalis who
inspired me to develop a chess engine.
DEDICATION
Donna chess engine is dedicated to Lithuanian grandmaster Donatas Lapienis,
the man who taught me how to play chess, among other things. In the mid
1980's (pre-computer era), Donatas was the highest ranking correspondence
chess player in the world with ELO rating of 2715.
LICENSE
Copyright (c) 2014-2018 Michael Dvorkin
Donna is freely distributable under the terms of MIT license.
I am making my contributions/submissions to this project solely in my personal
capacity and am not conveying any rights to any intellectual property of any
third parties.