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
132
133
134
135
136
137
138
139
140
|
GUI to engine:
* uci
* debug [ on | off ]
* isready
* setoption name <id> [value <x>]
Here are some strings for the example below:
"setoption name Nullmove value true\n"
"setoption name Selectivity value 3\n"
"setoption name Style value Risky\n"
"setoption name Clear Hash\n"
"setoption name NalimovPath value c:\chess\tb\4;c:\chess\tb\5\n"
* register
The following tokens are allowed:
* later
the user doesn't want to register the engine now.
* name <x>
the engine should be registered with the name <x>
* code <y>
the engine should be registered with the code <y>
Example:
"register later"
"register name Stefan MK code 4359874324"
* ucinewgame
* position [fen <fenstring> | startpos ] moves <move1> .... <movei>
* go
* searchmoves <move1> .... <movei>
Example: After "position startpos" and "go infinite searchmoves e2e4 d2d4"
the engine should only search the two moves e2e4 and d2d4 in the initial position.
* ponder
* wtime <x>
* btime <x>
* winc <x>
* binc <x>
* movestogo <x>
* depth <x>
* nodes <x>
* mate <x>
* movetime <x>
* infinite
* stop
* ponderhit
* quit
Engine to GUI:
* id
* name <x>
e.g. "id name Shredder X.Y\n"
* author <x>
e.g. "id author Stefan MK\n"
* uciok
* readyok
* bestmove <move1> [ ponder <move2> ]
* copyprotection
* registration
* info
e.g. "info currmove e2e4 currmovenumber 1" or
"info depth 12 nodes 123456 nps 100000".
e.g. "info depth 2 score cp 214 time 1242 nodes 2124 nps 34928 pv e2e4 e7e5 g1f3"
Additional info:
* depth <x>
* seldepth <x>
* time <x>
* nodes <x>
* pv <move1> ... <movei>
* multipv <num>
* score
* cp <x>
* mate <y>
* lowerbound
* upperbound
* currmove <move>
* currmovenumber <x>
* hashfull <x>
* nps <x>
* tbhits <x>
* sbhits <x>
* cpuload <x>
* string <str>
* refutation <move1> <move2> ... <movei>
Example: after move d1h5 is searched, the engine can send
"info refutation d1h5 g6h5"
if g6h5 is the best answer after d1h5 or if g6h5 refutes the move d1h5.
if there is no refutation for d1h5 found, the engine should just send
"info refutation d1h5"
* currline <cpunr> <move1> ... <movei>
* option
* name <id>
* <id> = Hash, type is spin
* <id> = NalimovPath, type string
* <id> = NalimovCache, type spin
* <id> = Ponder, type check
* <id> = OwnBook, type check
* <id> = MultiPV, type spin
* <id> = UCI_ShowCurrLine, type check, should be false by default,
* <id> = UCI_ShowRefutations, type check, should be false by default,
* <id> = UCI_LimitStrength, type check, should be false by default,
* <id> = UCI_Elo, type spin
* <id> = UCI_AnalyseMode, type check
* <id> = UCI_Opponent, type string
Examples:
"setoption name UCI_Opponent value GM 2800 human Gary Kasparov"
"setoption name UCI_Opponent value none none computer Shredder"
* <id> = UCI_EngineAbout, type string
Example:
"option name UCI_EngineAbout type string default Shredder by Stefan Meyer-Kahlen, see www.shredderchess.com"
* <id> = UCI_ShredderbasesPath, type string
* <id> = UCI_SetPositionValue, type string
* type <t>
* check
a checkbox that can either be true or false
* spin
a spin wheel that can be an integer in a certain range
* combo
a combo box that can have different predefined strings as a value
* button
a button that can be pressed to send a command to the engine
* string
a text field that has a string as a value,
an empty string has the value "<empty>"
* default <x>
the default value of this parameter is x
* min <x>
the minimum value of this parameter is x
* max <x>
the maximum value of this parameter is x
* var <x>
a predefined value of this parameter is x
Examples:
Here are 5 strings for each of the 5 possible types of options
"option name Nullmove type check default true\n"
"option name Selectivity type spin default 2 min 0 max 4\n"
"option name Style type combo default Normal var Solid var Normal var Risky\n"
"option name NalimovPath type string default c:\\n"
"option name Clear Hash type button\n"
|