Bert,
The searchinfo that I receive from the engine is as follows:
searchinfo search 0.10 9.01 0.00 14x23 0
searchinfo string 0.12 9.01 0.00 14x23
searchinfo string Look : 116971 47422 0
searchinfo string DB64 : Cache ( R, W, F ) : 0 0 131072
searchinfo string Depth ( N, -, +, A ) : 9 20
searchinfo pv 14x23 39-33 13-19 44-39 10-14 34-29 23x34 39x30 11-17 37-31
I had two small issues parsing this. The GUIDE standard states
Commands to and from the engine are separated by one or more separators. Any character with a value below 32 can be used to separate 2 or more commands.
The values of the "searchinfo search", however, are TAB delimited. TAB has a number under 32 so I initially parsed it as the end of the command. I now made an exception for TAB to resolve this.
The actual definition of searchInfo is:
searchInfo <searchinfo_string>
During the search process the Engine will sent constant searchinfo messages towards the GUI.
The <searchinfo_string> contains multiple search tokens with associated token_strings. The way the specific tokens are processed by the GUI is not prescribed by the GUIDE protocol.
Overview search tokens:
• currmove <move> Currently searching the move <move>
• currmovenumber <x> Currently searching move number x ( 1 … n)
• neval <x> Number of evaluation function calls
• nodes <x> x nodes searched.
• ply <x> Search depth in plies (half move).
• pv <pv_string> Principal variation.
Example: pv 32-18 17-21 37-32 21-26 32-27 26x37 41x32
• score <x> The engine score x.
• time <x> Time search in seconds.
• string <string_string. General (not specified) information.
Example: searchinfo string look 45678 (number move generator calls)
"searchinfo search" is not actually defined. Moreover, the token names of the values "time", "ply", "score", "currmove" are omitted. (Did I get the order right?)
"searchinfo pv " shows the token name correctly.
I also have a question about how to interprete:
game <position_data> <nr_moves> <move_list>
Sends the starting position and all moves of a game to the Engine.
The position data consists of 2 parts, a colour to move ( white or black ) and a 50-character string
What should the 2 parts of the position data actually look like? Horizon is happy to start a new game if I omit the colour to move and other parts:
game bbbbbbbbbbbbbbbbbbbbeeeeeeeeeewwwwwwwwwwwwwwwwwwww
Dragon is not happy whatever I try: "game bbb..." "game white bbb..." or "game w bbb..." or "game W bbb..."
Dragon is also not happy about "levelsblitzgame 300 0", Horizon is. However, the Dragon issues might also have other causes; I never see the "engineok" message after connecting. Horizon gives me name, author, options and then engineok. However, as you confirmed the listed options are sometimes not actually supported
Regards,
Walter