Skip to content
Les moteurs ChessBase libérés en UCI
Laboratoire · moteurs ChessBase adaptés

Fritz 8 contre Fritz 8 : le natif et l’adapté face à face dans ChessBase

Le même moteur, le même fichier, la même interface, le même PC. Une seule différence : l’un est chargé par ChessBase comme en 2002, l’autre passe par le pont eng2uci et se présente en moteur UCI. Après 700 parties sur 840, l’écart tient en trois points — et c’est l’adapté qui est devant.

Pourquoi ce test

Depuis l’été, le laboratoire fait rejouer les grands moteurs ChessBase de 1997 à 2005 hors de leur logiciel d’origine, grâce à deux ponts maison (voir Chessbase engines sous autres GUI). La question qui accompagne chaque moteur adapté est toujours la même : joue-t-il exactement comme l’original, ou le pont lui fait-il perdre des points ?

Jusqu’ici, la réponse passait par deux mesures séparées. La version native de Fritz 8 ne sait tourner que dans l’interface ChessBase ; la version adaptée a été mesurée dans Banksia et cutechess. Au classement du laboratoire, les deux cotes sont proches mais pas identiques :

Moteur (classement du 16 octobre 2026)EloParties±
Fritz 8 — natif29029020
Fritz 8 UCI py — adapté289818915

Quatre points d’écart, c’est moins de une fois et demie l’incertitude combinée des deux mesures (± 25) : statistiquement, rien ne permet de les distinguer. Mais les deux cotes viennent de deux interfaces différentes, qui ne pilotent pas les moteurs de la même façon. Le plus sûr moyen de lever le doute est de mettre les deux versions dans le même tournoi, dans la même interface : celle de ChessBase, la seule où le natif peut jouer.

Comment l’adapté entre dans ChessBase

Un moteur ChessBase de cette époque n’est pas un programme. Fritz 8.eng est un module (une bibliothèque Windows 32 bits) que seul le logiciel ChessBase sait charger : il lui donne la position par une structure interne, lance la recherche par une fonction (Eng9), et reçoit en retour des messages codés — la profondeur atteinte, le score, la ligne principale, le coup choisi — par l’intermédiaire d’un petit relais, Chess32.dll. Le moteur ne parle pas UCI, et aucune interface moderne ne peut le brancher tel quel.

Le pont : prendre la place de ChessBase

eng2uci.py joue le rôle du logiciel d’origine. Exécuté par un Python 32 bits, il charge le même fichier Fritz 8.eng en mémoire et lui parle exactement comme ChessBase le faisait :

  • il reconnaît le moteur à la taille de son fichier (471 040 octets pour Fritz 8), qui lui donne les adresses internes propres à cette édition ;
  • il neutralise, en mémoire seulement, les cinq contrôles anti-copie de la fonction d’initialisation ;
  • il écrit la position dans la structure du moteur (64 cases, trait, roques, prise en passant) et rejoue l’historique de la partie, comme le faisait ChessBase : sans cet historique, les premières versions du pont perdaient 100 à 220 Elo ;
  • il lit le coup et le score dans le message de rapport du moteur (et non dans sa table de tri interne, qui donnait de fausses promotions en cavalier), puis les retraduit en UCI.

L’exécutable : se faire accepter par ChessBase

Il restait un obstacle propre à ChessBase. Banksia ou cutechess acceptent de lancer Python avec le script en argument ; ChessBase, lui, ne crée un moteur UCI qu’à partir d’un fichier .exe. Le pont a donc été emballé dans un exécutable autonome, eng2uci.exe, en quatre points :

  1. Un exécutable qui embarque Python. PyInstaller compile un seul fichier eng2uci.exe qui contient l’interpréteur Python 32 bits et ses bibliothèques : ChessBase lance un .exe ordinaire, sans rien savoir de Python.
  2. Une enveloppe légère. L’exe ne contient pas le pont lui-même : il trouve le .eng de son dossier, puis charge eng2uci.py au démarrage. Une correction du pont ne demande donc pas de recompiler. Revers de la méthode : PyInstaller ne voit pas les modules dont le pont a besoin (ctypes, en particulier) ; l’enveloppe les déclare elle-même, sans quoi l’exe s’arrête sur « No module named ctypes ».
  3. Un nom distinct. L’enveloppe ajoute « py » au nom que le moteur annonce. Dans ChessBase, le moteur apparaît donc comme Fritz 8 py, à côté du natif Fritz 8 : sans cela, les deux porteraient le même nom dans la liste des moteurs, dans les tableaux de tournoi et dans les parties enregistrées.
  4. Une installation en un clic. Le script install_eng2uci_exe.bat, lancé dans le dossier du moteur, vérifie le Python 32 bits et les fichiers (eng2uci.py, le .eng, Chess32.dll), installe PyInstaller, compile l’exe puis le teste : à la commande uci, il doit répondre son nom puis uciok. Il ne reste qu’à faire, dans ChessBase, Moteurs → Créer un moteur UCI et désigner eng2uci.exe.
Ce qui est comparé Dans ce tournoi, ChessBase fait tourner deux fois le même programme Fritz 8 : une fois en le chargeant lui-même, comme en 2002, une fois à travers eng2uci.exe, qui le charge à sa place et le présente en UCI. L’interface, la machine, la cadence et les adversaires sont les mêmes. Un écart systématique entre les deux ne pourrait donc venir que du pont.

Le tournoi

Sept moteurs de force voisine, tous en un seul processeur, jouent un tournoi toutes rondes dans l’interface ChessBase, sur le PC MSI du laboratoire : Fritz 8 natif, Fritz 8 adapté, et cinq adversaires qui servent de témoins : Junior 8 et Hiarcs 8, natifs ChessBase eux aussi, et trois moteurs UCI, ProDeo 2.0, List 5.12 et SOS 5 for Arena. Le programme prévoit 40 parties par paire, soit 840 parties. Le tableau ci-dessous est celui du 12 octobre 2026, après 700 parties : chaque paire en a joué 33 ou 34, et chaque moteur 200.

#Moteur1234567Points
1ProDeo 2.0—18,5 – 14,515 – 1819,5 – 14,519,5 – 14,524,5 – 8,523 – 10120 / 200
2Fritz 8 py14,5 – 18,5—17,5 – 16,518,5 – 14,522,5 – 10,520,5 – 12,521 – 13114,5 / 200
3Fritz 818 – 1516,5 – 17,5—16 – 1719,5 – 14,520 – 1321,5 – 11,5111,5 / 200
4Junior 814,5 – 19,514,5 – 18,517 – 16—18 – 1520,5 – 13,520,5 – 12,5105 / 200
5Hiarcs 814,5 – 19,510,5 – 22,514,5 – 19,515 – 18—14 – 1917,5 – 16,586 / 201
6SOS 5 for Arena10 – 2313 – 2111,5 – 21,512,5 – 20,516,5 – 17,521,5 – 11,5—85 / 200
7List 5.128,5 – 24,512,5 – 20,513 – 2013,5 – 20,519 – 1411,5 – 21,5—78 / 199

Lecture : score du moteur de la ligne contre celui de la colonne. Les deux Fritz sont surlignés.

Les deux versions se suivent à la deuxième et à la troisième place, séparées par trois points : 114,5 pour l’adapté, 111,5 pour le natif, chacun sur 200 parties. Entre le relevé du 6 octobre et celui-ci, l’ordre des deux s’est inversé — c’est exactement ce qu’on attend de deux mesures qui ne diffèrent que par le hasard. ProDeo 2.0 reste en tête avec 120 points, comme au classement du laboratoire, et Junior 8 suit à 105.

Natif contre adapté, adversaire par adversaire

AdversaireEloFritz 8 natifFritz 8 adaptéécart
ProDeo 2.0292618 / 33 (54,5 %)14,5 / 33 (43,9 %)−10,6 pt
Hiarcs 8283819,5 / 34 (57,4 %)22,5 / 33 (68,2 %)+10,8 pt
Junior 8287216 / 33 (48,5 %)18,5 / 33 (56,1 %)+7,6 pt
SOS 5 for Arena281421,5 / 33 (65,2 %)21 / 34 (61,8 %)−3,4 pt
List 5.12279520 / 33 (60,6 %)20,5 / 33 (62,1 %)+1,5 pt
Total, adversaires communs—95 / 166 (57,2 %)97 / 166 (58,4 %)+1,2 pt
Face à face—16,5 / 3417,5 / 34—
Total du tournoi—111,5 / 200114,5 / 200—

Elo : cotes du classement du laboratoire au 16 octobre 2026.

Contre les cinq adversaires communs, l’adapté marque deux points de plus ; dans le face-à-face, il mène 17,5 à 16,5. Le détail est plus instructif que le total : les écarts vont dans les deux sens et ils sont gros. L’adapté domine Hiarcs 8 de onze points de pourcentage et se fait battre par ProDeo 2.0 de presque autant. Sur 33 parties, dix points de pourcentage valent trois parties et demie, soit un écart-type et demi de ce que le hasard produit tout seul. Aucune de ces lignes ne dit quoi que ce soit sur le pont ; c’est leur somme qui compte, et elle est nulle.

Ce que le pont coûte vraiment

Le score ne dit pas où un pont pourrait coûter des points. Le PGN de ChessBase, lui, enregistre pour chaque partie la vitesse de recherche et la profondeur moyenne de chaque moteur, et pour chaque coup le temps consommé, la profondeur et l’évaluation. Sur 700 parties et près de 28 000 coups des deux Fritz, le coût du pont se mesure là où il se produirait.

Grandeur mesuréeFritz 8 natifFritz 8 adaptéécart
Vitesse de recherche3 371 kN/s3 352 kN/s−0,6 %
Profondeur moyenne par partie14,70 demi-coups14,57−0,14
Profondeur annoncée, coup par coup13,6013,30−0,31
Temps par coup, hors livre16,4 s16,7 s+0,29 s
Coups de plus de 60 secondes0,2 %0,2 %—
Chutes de pendule, plantages, coups illégaux00—

La vitesse est l’essentiel : 0,6 % de nœuds en moins, soit 19 kN/s sur 3 371. L’écart n’est pas distinguable du bruit et il serait de toute façon sans conséquence : il faut doubler la vitesse d’un moteur pour lui gagner une cinquantaine d’Elo, donc 0,6 % en valent moins d’un demi.

Les deux mesures de profondeur vont dans le même sens, un peu moins d’un tiers de demi-coup en moins pour l’adapté, et la mesure coup par coup est assez fournie pour être statistiquement nette. Un tiers de demi-coup vaudrait en principe une quinzaine d’Elo, ce qui ne se retrouve pas du tout dans les scores. C’est que la profondeur annoncée n’est pas la profondeur réelle : ce nombre est déclaré par le moteur et traverse le pont avant d’arriver dans le PGN, et l’écart tient plus probablement à la façon de le compter qu’à la recherche elle-même. L’en-tête de ChessBase, qui mesure la même chose autrement, ne trouve que 0,14.

L’évaluation passe intacte

Un pont pourrait aussi abîmer le score rendu par le moteur : un signe inversé, une échelle faussée, un mat mal traduit. Le test est direct, puisque dans les 34 parties du face-à-face les deux versions évaluent tour à tour des positions presque identiques. Sur 2 303 couples de demi-coups consécutifs, leurs évaluations se suivent avec une corrélation de +0,985, pour un écart absolu moyen de 12 centièmes de pion et une médiane de 6. Les distributions sont superposables : médiane nulle des deux côtés, quartiles −31 et +56 pour le natif, −31 et +59 pour l’adapté, écart-type 187 contre 184. Le pont transmet l’évaluation sans la déformer.

Un style un peu plus prudent

Une différence apparaît quand même, et elle n’est pas dans la force : l’adapté fait plus de nulles. 38,5 % contre 33,5 % pour le natif, et c’est le taux le plus élevé des sept moteurs du tournoi, le natif n’étant que deuxième. Dans le face-à-face, 21 des 34 parties sont nulles, soit 62 %. Ses parties sont aussi plus courtes : 148 demi-coups en moyenne contre 153,5.

Là encore, cinq points de pourcentage sur 200 parties ne sont pas significatifs. Les ouvertures, elles, sont les mêmes : même livre Perfect 2023, et des répartitions par famille ECO qui se tiennent à quelques points, 23 % contre 25,5 % d’ouvertures semi-ouvertes, 33,5 % contre 38 % d’ouvertures ouvertes. Rien qui ressemble à un répertoire différent.

En Elo

Pour traduire ces scores en Elo, on calcule les cotes des sept moteurs à partir des seules parties du tournoi, par maximum de vraisemblance, puis on place l’échelle sur le classement du laboratoire : la moyenne des sept cotes du tournoi est égale à la moyenne de leurs sept cotes au classement.

Fritz 8 adapté2907
Fritz 8 natif2898
Écart adapté − natif+9 ± 35

L’incertitude donnée ici est celle de l’écart, calculée directement sur les 200 parties de chaque version : +9 Elo, à plus ou moins 35 pour un écart-type, soit un intervalle à 95 % allant de −60 à +79. Le calcul plus simple de la performance donne la même image : 2898 pour le natif et 2909 pour l’adapté sur le tournoi entier, 2900 contre 2909 sur les seuls adversaires communs. Quel que soit le chemin, l’écart reste trois à quatre fois plus petit que l’incertitude.

Fritz 8 natif Fritz 8 adapté (UCI py) 2860 2880 2900 2920 2940 Elo (barres : ± 1 σ) Classement du laboratoire Ryzen 9 7950X3D, deux interfaces Classement : Fritz 8 natif 2902 +- 20 2902 Classement : Fritz 8 adapté 2898 +- 15 2898 écart adapté − natif : −4 Elo Tournoi ChessBase PC MSI, 700 parties sur 840 Tournoi : Fritz 8 natif 2898 +- 25 2898 Tournoi : Fritz 8 adapté 2907 +- 25 2907 écart adapté − natif : +9 Elo

Les deux mesures, côte à côte. En haut, les cotes du classement du laboratoire, obtenues dans deux interfaces différentes. En bas, celles du tournoi, où les deux versions jouent dans ChessBase.

Les cotes du tournoi ne sont pas à comparer une à une avec celles du classement : elles reposent sur 200 parties par moteur, sur une autre machine. Ce qui compte est l’écart entre les deux Fritz, mesuré dans les mêmes conditions. Au classement, l’écart de −4 mêlait l’effet éventuel du pont et celui du changement d’interface ; ici, seul le pont reste, et il a changé de signe entre 459 et 700 parties.

Ce changement de signe est la leçon la plus utile de l’exercice. Pour établir qu’un pont coûte dix points Elo — une perte déjà négligeable en pratique — il faudrait de l’ordre de neuf mille parties par version. Avec 200, on ne peut pas prouver l’égalité ; on peut seulement affirmer, et c’est déjà beaucoup, qu’une perte supérieure à une soixantaine d’Elo est exclue. Les mesures techniques, elles, sont bien plus serrées que le score : elles portent sur 28 000 coups et non sur 200 résultats, et elles disent toutes la même chose.

Ce qu’on peut conclure Dans l’interface ChessBase, à conditions identiques, Fritz 8 adapté joue comme Fritz 8 natif. Sur 200 parties chacun : 114,5 points contre 111,5, soit +9 Elo pour l’adapté à plus ou moins 35. Et sous le score, trois mesures convergentes sur 28 000 coups : 0,6 % de vitesse de recherche en moins, un tiers de demi-coup de profondeur annoncée en moins, une évaluation identique à 12 centièmes de pion près. Le pont eng2uci et son exécutable rendent le moteur d’origine sans perte mesurable.
Et pour le classement ? Ce tournoi tourne sur le PC MSI, plus lent que le Ryzen qui sert aux mesures du laboratoire. Tous les moteurs y sont ralentis de la même façon et leurs écarts relatifs ne bougent pas : calculées sur ces seules parties, les sept cotes s’écartent de celles du classement de 7 Elo en moyenne, et l’échelle n’est pas tassée — dispersion de 47 Elo contre 45 au classement. Deux moteurs s’écartent plus que les autres : Hiarcs 8 rend 18 Elo par rapport à sa cote, Fritz 8 adapté en gagne 10. Les parties pourront rejoindre le classement, l’adapté sous son nom habituel de Fritz 8 UCI py.

La suite

Le tournoi continue jusqu’à ses 840 parties, soit 240 par moteur. Les 140 dernières ramèneront l’incertitude sur l’écart d’environ 35 à 32 Elo — un gain si faible qu’il ne changera pas la conclusion. La question du pont est tranchée autant qu’elle peut l’être par des parties ; ce qui reste à faire est de vérifier la même chose sur les autres moteurs adaptés, Junior, Hiarcs et les Shredder, dont les ponts ne sont pas identiques.

Laboratoire chess.lumn.eu · tournoi toutes rondes dans l’interface ChessBase, PC MSI, état au 12 octobre 2026 (700 parties sur 840, 200 par moteur) · mesures de profondeur, de vitesse, de temps et d’évaluation extraites des annotations du PGN · cotes de référence : classement du laboratoire au 16 octobre 2026.