L'Universal Chess Interface (UCI) est un protocole de communication qui permet à un moteur d'échecs de communiquer avec une interface utilisateur.
Le protocole est conçu par Rudolf Huber et Stefan Meyer-Kahlen (en), le créateur de Shredder, en novembre 2000, et peut être considéré comme un rival du protocole XBoard/WinBoard. Comme ce dernier, l'UCI est libre de droits.
En 2019, plus de 50 moteurs d'échecs prennent en charge l'UCI, dont Rybka, Fruit et Houdini. Le protocole est également employé sur le serveur Lichess.
L'UCI est à la base d'autres protocoles destinés à des variantes d'échecs, dont :
Il y a pas mal de commandes pour communiquer avec un moteur.
| Commande | Utilisation | Description | Réponse |
|---|---|---|---|
| quit |
quit |
Ferme le moteur d'échec. | |
| uci |
uci |
Dis au moteur de passer en mode UCI. | uciok |
| ucinewgame |
ucinewgame |
Utiliser pour dire au moteur que la prochaine position vient d'une partie différente. | |
| isready |
isready |
Utilisé pour synchroniser le moteur. Utilisé après une commande pouvant prendre du temps. | readyok |
| setoption |
setoption name <id> [value <x>] |
Utilisé pour changer les paramèttres internes du moteur. | |
| position |
position [fen <fenstring> | startpos] moves <movement 1> ... <mouvement i> |
Utilisé pour donner la position actuel au moteur. | |
| go |
go [infinite | depth <profondeur> | nodes | mate] searchmoves <mouvement 1> ... <mouvement i> ponder wtime <x> btime <x> winc <x> binc <x> movestogo <x> nodes <x> lovetime <x> perft <x> |
Dis au moteur de commencer à réfléchir. | bestmove <mouvement> ponder <réponse attendue> |
| stop |
stop |
Dis au moteur d'arrêter de réfléchir dès que possible mais après 5 secondes. | |
| ponderhit |
ponderhit |
Dis au moteur que le joueur a joué le mouvement attendu. |
Il y a aussi des commandes optionnelle.
| Commande | Utilisation | Description | Réponse |
|---|---|---|---|
| bench |
bench [ttsize] [threads] [limit] [fenFile] [limitType] |
Lance un benchmark du moteur. | Test data |
| speedtest |
speedtest [threads] [hash (MiB)] [runtime (s)] |
Mesure la vitesse que prend l'ordinateur pour exécuter le moteur. | Test data |
| d |
d |
Renvoie une représentation ASCII de l'état actuel de l'échequier. | Tableau ASCII |
| eval |
eval |
Renvoie l'évalution de l'échequier. | Évaluation |
| compiler |
compiler |
Renvoie les informations du compilateur du moteur. | Infos du compilateur |
| export_net |
export_net [filenameBigNet] [filenameSmallNet] |
Exporte le réseau actuel dans un fichier. | |
| flip |
flip |
Renvoie le côté de mouvement. | |
| help |
help |
Dans Stockfish, cette commande renvoie les informations à propos du moteur et le lien vers le Github. | Les informations à propos du moteur et le lien vers le Github |
| license |
license |
Équivalant à la commande help. | Les informations à propos du moteur et le lien vers le Github |