|
|
|
@ -52,4 +52,31 @@ switch to UCI mode. You can use `commands::UCI` to make sure the command text yo
|
|
|
|
|
Next, you'll need to create a copy of `Engine` by calling `Engine::new`. Once this is setup, you can call |
|
|
|
|
`Engine::identify` to send identification information to the GUI. |
|
|
|
|
|
|
|
|
|
Once identification is done, you need to send your configuration options. This is dependent on your engine. Refer to |
|
|
|
|
the UCI standard for the available options. You must configure this before calling `Engine::new` so this guide assumes |
|
|
|
|
you've done that already. |
|
|
|
|
|
|
|
|
|
To send your configuration options simply call `Engine::send_available_options`. Once this finishes `uciok` will |
|
|
|
|
also be sent, indicating to the GUI your engine is ready to roll. At this point you need to set up two threads, one |
|
|
|
|
to calculate with your engine, and one to read STDIN. |
|
|
|
|
|
|
|
|
|
``` |
|
|
|
|
EXAMPLE HERE WITH LOOPS IN THREADS AND BLOCKING AND WHATEVER |
|
|
|
|
``` |
|
|
|
|
|
|
|
|
|
Notice how in our STDIN thread we are calling `Engine::parse` and the handling the output using a match statement |
|
|
|
|
depending on what kind of token it was. You are responsible for obeying the commands from this thread, the UCI library |
|
|
|
|
just makes it convenient to work with. |
|
|
|
|
|
|
|
|
|
**TODO: MORE STUFF WITH EXAMPLES** |
|
|
|
|
**THINGS LIKE SENDINB BEST MOVE AFTER CALCULATING, ETC** |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
### Other Options |
|
|
|
|
|
|
|
|
|
**TODO: Talk about the additional helpers available in the UCI library and what-not**. |
|
|
|
|
|
|
|
|
|
* Copy protection checking |
|
|
|
|
* Registration checking |
|
|
|
|
|
|
|
|
|
|
|
|
|
|