GUI to engine: * uci * debug [ on | off ] * isready * setoption name [value ] 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 the engine should be registered with the name * code the engine should be registered with the code Example: "register later" "register name Stefan MK code 4359874324" * ucinewgame * position [fen | startpos ] moves .... * go * searchmoves .... 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 * btime * winc * binc * movestogo * depth * nodes * mate * movetime * infinite * stop * ponderhit * quit Engine to GUI: * id * name e.g. "id name Shredder X.Y\n" * author e.g. "id author Stefan MK\n" * uciok * readyok * bestmove [ ponder ] * 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 * seldepth * time * nodes * pv ... * multipv * score * cp * mate * lowerbound * upperbound * currmove * currmovenumber * hashfull * nps * tbhits * sbhits * cpuload * string * refutation ... 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 ... * option * name * = Hash, type is spin * = NalimovPath, type string * = NalimovCache, type spin * = Ponder, type check * = OwnBook, type check * = MultiPV, type spin * = UCI_ShowCurrLine, type check, should be false by default, * = UCI_ShowRefutations, type check, should be false by default, * = UCI_LimitStrength, type check, should be false by default, * = UCI_Elo, type spin * = UCI_AnalyseMode, type check * = UCI_Opponent, type string Examples: "setoption name UCI_Opponent value GM 2800 human Gary Kasparov" "setoption name UCI_Opponent value none none computer Shredder" * = UCI_EngineAbout, type string Example: "option name UCI_EngineAbout type string default Shredder by Stefan Meyer-Kahlen, see www.shredderchess.com" * = UCI_ShredderbasesPath, type string * = UCI_SetPositionValue, type string * type * 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 "" * default the default value of this parameter is x * min the minimum value of this parameter is x * max the maximum value of this parameter is x * var 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"