Parlez-vous UCI ?

Que se disent les moteurs d’Echecs ?

Parlez-vous UCI ?

C’est pour le logiciel Shredder que Rudolf Huber et Stefan Meyer-Kahlen ont créé le protocole Universal Chess Interface (UCI) entre un moteur d’Echecs qui calcule les coups et une interface graphique (GUI) comme Arena qui les affiche sur l’échiquier.

Ce protocole est maintenant devenu le standard par rapport Winboard.

1. Session interactive avec un moteur d’Echecs UCI

Dans Window

  • en français : Démarrez > Tous les programmes > Accessoires > Invite de commande
  • en anglais : Start > All Programs > Accessories > Command Prompt

Taper ou coller le chemin complet de l’exécutable d’un moteur d’échecs UCI libre tel que Houdini 1.03a ou la version freeware de Rybka 2.3.2a

Le texte en bleu foncé doit être tapé (ou collé) et
validé par un retour-chariot avec la touche [ENTER]

Exemple pour l’utilisateur Chess dans Windows Vista, l’invite de commande sera C:\Utilisateurs\Chess ou C:\Users\Chess :

C:\Users\Chess> DIR [ENTER]
C:\Users\Chess> REM Affiche la liste des fichiers du répertoire courant

Pour plus de lisibilité et pour faciliter le copier-coller, on ne mentionne plus [ENTER].

Le texte en noir, qui suit, est généré par le moteur d’Echecs en réponse à la commande UCI.
Le texte en bleu clair est la réponse finale du moteur.

C:\Users\Chess> C:\Users\Chess\Documents\Houdini{Houdini_w32_2CPU.exe

Houdini 1.03a w32 2_CPU
build 2010-07-17
by Robert Houdart
info string 128 MB Hash allocated

uci

id name Houdini 1.03a w32 2_CPU
option name Threads type spin default 2 min 1 max 2
option name Split_Depth type spin default 10 min 8 max 99
option name Ponder type check default false
...
uciok

isready

readyok

go movetime 1000

info multipv 1 depth 4 ... pv d2d4 d7d5 d1d3 g8f6 g1f3 e7e6 b1c3 b8c6 g2g3 b7b6
...
info multipv 1 depth 14 ... pv e2e4 e7e6 d2d4 d7d5 e4d5 e6d5 b1c3 g8f6 g1f3 b8c6 f1b5 ...
bestmove e2e4 ponder e7e6

quit
C:\Users\Chess> REM la session UCI est terminée

2. Interpréter les commandes UCI et leurs réponses

Revenons plus en détail sur chaque commande depuis le début de la session.

Commande UCI envoyée par le GUIRéponse du moteur d’Echecs
uci uciok
isready readyok
position startpos moves d2d4
position startpos moves e2e4 e7e5 g1f3
position fen 5k2/7P/5K2/8/8/8/8/8 w - - 0 1
go movetime 1000 bestmove h7h8q ponder NULL
quit

Pour être sûr que le moteur d’Echecs est bien de type UCI,
la première commande doit être :

uci

Si le moteur termine la séquence par "uciok", c’est qu’il comprend le dialogue.
L’interface graphique peut interpréter les informations retournées ("id", "option").

Certaines commandes pouvant être longues en temps d’exécution,
on demande au moteur par :

isready

de signaler quand il sera prêt pour une nouvelle commande.
En mode interactif comme ici dans une invite de commande où la saisie des commandes
est manuelle, le moteur sera toujours prêt.

Sur réception de "readyok", vous pouvez l’interroger sur le meilleur coup dans la position de départ
avec une contrainte de temps d’une seconde = 1000 millisecondes

go movetime 1000

Le moteur génère une liste d’"info" indiquant la progression dans sa recherche.
"multipv" est la Principale Variation à une profondeur donnée.

Finalement le moteur choisit son meilleur coup dès que le délai de calcul est terminé.
bestmove e2e4

quit

clôture la session. L’exécutable s’arrête et l’invite de commande s’affiche à nouveau.

3. Pour aller plus loin dans le dialecte UCI

Comment faire pour faire jouer le moteur avec les Noirs ?
Juste avant le go movetime 1000
indiquez la position à analyser après le coup des Blancs, pour changer, d2d4 :

position startpos moves d2d4

Il n’y a pas de réponse du moteur, donc pour savoir s’il est prêt, on peut tenter un nouveau :

isready

readyok

go movetime 1000

bestmove d7d5 ponder c1f4

On notera le pluriel dans la commande moves d2d4 même si pour le moment il n’y en a qu’un.
Cela signifie que l’on peut mettre toute une série de coups depuis le début de la partie.

position startpos moves e2e4 e7e5 g1f3

ou avec une position FEN quand la liste des coups commence à être un peu longue...

position fen 5k2/7P/5K2/8/8/8/8/8 w - - 0 1

Maintenant que vous connaissez les bases du langage UCI,
vous saurez interpréter la trace de debug d’Arena menu Engines > Debug - Windows F4
en particulier quand il y a promotion de pion en dame : bestmove h7h8q

Posté le 14 septembre 2010 par Matt