Parlez-vous UCI ?

mardi 14 septembre 2010
par  Matt
popularité : 7%

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 marine]bleu foncé[/bleu marine] doit être tapé (ou collé) et
validé par un retour-chariot avec la touche [1]

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

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

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> [bleu marine]C:\Users\Chess\Documents\Houdini{Houdini_w32_2CPU.exe[/bleu marine]

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

[bleu marine]uci[/bleu marine]

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

[bleu marine]isready[/bleu marine]

readyok

[bleu marine]go movetime 1000[/bleu marine]

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

[bleu marine]quit[/bleu marine]
C:\Users\Chess> [bleu marine]REM la session UCI est terminée[/bleu marine]

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
[bleu marine]uci[/bleu marine] uciok
[bleu marine]isready[/bleu marine] readyok
[bleu marine]position startpos moves d2d4[/bleu marine]
[bleu marine]position startpos moves e2e4 e7e5 g1f3[/bleu marine]
[bleu marine]position fen 5k2/7P/5K2/8/8/8/8/8 w - - 0 1[/bleu marine]
[bleu marine]go movetime 1000[/bleu marine] bestmove h7h8q ponder NULL
[bleu marine]quit[/bleu marine]

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

[bleu marine]uci[/bleu marine]

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 :

[bleu marine]isready[/bleu marine]

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

[bleu marine]go movetime 1000[/bleu marine]

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

[bleu marine]quit[/bleu marine]

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 [bleu marine]go movetime 1000[/bleu marine]
indiquez la position à analyser après le coup des Blancs, pour changer, d2d4 :

[bleu marine]position startpos moves d2d4[/bleu marine]

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

[bleu marine]isready[/bleu marine]

readyok

[bleu marine]go movetime 1000[/bleu marine]

bestmove d7d5 ponder c1f4

On notera le pluriel dans la commande [bleu marine]move[/bleu marine]s[bleu marine] d2d4[/bleu marine] 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.

[bleu marine]position startpos moves e2e4 e7e5 g1f3[/bleu marine]

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

[bleu marine]position fen 5k2/7P/5K2/8/8/8/8/8 w - - 0 1[/bleu marine]

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


[1gris]ENTER[/gris


Brèves

Championnat jeunes 2018

dimanche 25 février 2018

A St Sernin sur Rance, Vadim Breton se qualifie pour le championnat de France jeunes. Il termine à la 4ème place des benjamins. http://echecs-occitanie.com/spip.php?article382&mode=AF

Les Jeunes qualifiés en NIII !

mercredi 14 décembre 2016

Dimanche 11 décembre 2016, aux interclubs jeunes à Leguevin, notre équipe a gagné un match et fait match nul aux deux autres.

L’équipe composée de Xavier, Vadim, Aurélie et Titouan termine 8ème et se qualifie pour la N3. A noter que Xavier et Vadim ont gagné toutes leurs parties.

Sur le Web : Site de la LMPE

Championnat jeunes

lundi 5 décembre 2016

Xavier, Vadim et Martin trois champions du Tarn et Garonne
Lire l’article

Coupe Loubatière

lundi 5 décembre 2016

Le club qualifié pour la phase régionale de la coupe Loubatière
Lire l’article

Sur le Web : Coupe Loubatière

Tournoi interne 2016-2017

lundi 5 décembre 2016

C’est reparti pour le tournoi interne : 1 partie par mois de novembre à mai
Lire l’article

Live Playchess.com

mercredi 7 septembre 2016