Skip to content
Faire rejouer les vieux Fritz — le pont eng2uci

Laboratoire · moteurs d'échecs classiques

Faire rejouer les vieux Fritz

Les Fritz d'autrefois — de la 5.32 (1997) à la 9 (2005) — sont enfermés dans le logiciel ChessBase qui les a vus naître. Un petit pont les libère : il les fait passer pour des moteurs UCI ordinaires, afin qu'on puisse enfin les faire jouer et les calibrer dans les interfaces modernes.

Ce qu'on cherche à faire

Un moteur d'échecs moderne est un programme autonome qui dialogue en texte, selon un langage universel appelé UCI : l'interface lui envoie une position, il répond son coup. C'est ce langage que parlent toutes les interfaces pour moteurs d'échecs d'aujourd'hui, et c'est lui qui permet de faire s'affronter des moteurs de toutes origines.

Les vieux Fritz, eux, ne fonctionnent pas ainsi. Ce ne sont pas des programmes autonomes mais des modules internes : seul le logiciel ChessBase d'origine sait les charger et les faire parler. Impossible, tel quel, de les brancher sur une interface moderne — ils restent muets.

L'idée du pont — qu'on appellera eng2uci — est de se glisser à la place de ChessBase. Le programme charge le vieux moteur, lui parle exactement comme le faisait le logiciel d'époque, récupère le coup qu'il a choisi, puis le retraduit en UCI. Vu de l'extérieur, le vieux Fritz devient un moteur UCI comme les autres, qu'on peut piloter depuis n'importe quelle interface.

Pourquoi le faire Pour donner à ces moteurs historiques une place dans une échelle de calibration Elo : les faire jouer des centaines de parties contre des références, mesurer leur force réelle, et comparer les générations. Sans ce pont, ils resteraient à jamais prisonniers de leur logiciel d'origine.

Résultats : les cinq Fritz

Chaque version a ses particularités, mais toutes tournent désormais comme des moteurs UCI natifs — coups légaux, promotions, roques, gestion du temps. Voici l'état des lieux.

VersionAnnéeÉtatÀ savoir
Fritz 5.321997Opérationnel Le doyen. Format interne un peu différent des suivants, mais entièrement pris en charge.
Fritz 61999Opérationnel La première version mise au point, celle qui a servi de référence à tout le reste.
Fritz 72001Opérationnel Validée en partie complète (promotions, prises, pilotage au temps).
Fritz 82003Opérationnel Fonctionne sur la même base que la 7.
Fritz 92005Opérationnel La plus exigeante : elle réclame un composant système (MSVCR71.dll) et vérifie la présence du CD d'origine — les deux sont gérés par le pont.
Ordre de grandeur Ces moteurs couvrent grosso modo la fourchette allant du milieu des années 1990 au milieu des années 2000 — soit une force historique qui s'étage d'environ 2400 à 2850 Elo. Leur valeur exacte, sur l'échelle du laboratoire, est justement ce que les gauntlets de calibration établissent.

Télécharger le pont

eng2uci.py

Le pont complet, en un seul fichier. Gère les cinq versions de Fritz.

script Python · à placer dans le dossier du moteur
Prérequis indispensable Les modules Fritz sont en 32 bits : il faut donc un Python 32 bits (les versions 64 bits ne pourront pas charger les moteurs). Sous Windows, installer Python puis vérifier depuis un terminal : py -3-32 --version doit répondre sans erreur.

Le dossier à préparer

Pour chaque moteur, un dossier contenant :

  • eng2uci.py — le pont (téléchargé ci-dessus) ;
  • Chess32.dll — le petit relais que le moteur réclame ;
  • le fichier du moteur, par exemple Fritz 6.eng ;
  • pour Fritz 9 uniquement : MSVCR71.dll (le composant système mentionné plus haut).

Utilisation dans Banksia

Banksia est l'interface recommandée : elle pilote le pont sans configuration exotique.

  1. Dans Banksia, ouvrir Engines puis Add (ajouter un moteur).
  2. Au champ Fichier du moteur (l'exécutable), indiquer le chemin du Python 32 bits, typiquement :
    C:\Users\...\Python313-32\python.exe
  3. Au champ Dossier de travail (working folder), indiquer le dossier préparé (celui qui contient eng2uci.py, le .eng et Chess32.dll).
  4. Au champ Ligne de commandes (arguments), passer le pont suivi du nom du fichier moteur, entre guillemets s'il contient une espace :
    eng2uci.py "Fritz 6.eng"
    (adapter le nom du fichier selon la version voulue.)
  5. Choisir le protocole UCI, puis valider. Banksia interroge le moteur : il doit répondre son nom (« Fritz 6 ») et son auteur.
  6. Régler la taille de hash dans les options du moteur si souhaité, puis créer un tournoi, choisir la cadence et lancer.
Vérification rapide Avant de lancer un tournoi, un test en ligne de commande confirme tout :
py -3-32 eng2uci.py "Fritz 6.eng"
uci
isready
position startpos
go depth 8
Le moteur doit annoncer sa profondeur qui grimpe, puis un bestmove.

Utilisation dans Arena

Arena fonctionne aussi, avec la même logique. Comme Arena préfère pointer vers un lanceur unique, le plus simple est de créer à côté du moteur un petit fichier lancer.bat d'une ligne :

py -3-32 eng2uci.py "Fritz 6.eng"
  1. Menu Engines → Install New Engine.
  2. Sélectionner le fichier lancer.bat qu'on vient de créer (ou directement le python.exe 32 bits, en renseignant ensuite les paramètres).
  3. Quand Arena demande le type de moteur, choisir UCI.
  4. Dans les propriétés du moteur, vérifier que le dossier de travail pointe bien sur le dossier du moteur (celui qui contient le .eng et Chess32.dll) — c'est là que le pont ira chercher ses fichiers.
  5. Le moteur apparaît alors dans la liste d'Arena, prêt à jouer ou à analyser comme n'importe quel moteur UCI.
Astuce lanceur Le fichier lancer.bat évite bien des soucis de chemins : Arena n'a qu'à l'appeler, et c'est lui qui se charge d'invoquer le bon Python avec le bon moteur. Un .bat par version de Fritz, et toute la collection est prête.

Cinq moteurs qui semblaient perdus dans leur logiciel d'origine rejouent aujourd'hui dans les interfaces modernes. La leçon de ce chantier tient en une phrase : un moteur ne se juge qu'en partie réelle — c'est là, et nulle part ailleurs, que la vérité apparaît.

chess.lumn.eu · laboratoire de calibration