CT800 - NG-Play - Echecs et informatique sur PC-Windows

Rechercher
Aller au contenu

Menu principal :

Moteurs

CT800 - NG-Play


Le CT800 - NG-Play est un petit moteur sympathique et sérieux de niveaux expert (2100 Elo environ), qui a un jeu très stylé, quelque part entre Nimzowitsch et Kortchnoï. Il a été modifié spécialement pour fonctionner avec le CT800, un mini-ordinateur d'échecs à construire soi-même...






Origine exotique

Le CT800 est en fait un petit ordinateur d'échecs développé par l'ingénieur allemand Rasmus Althoff. La machine n'est pas commercialisée, il faut la réaliser soi-même à partir des indications de l'auteur.
Il fallait bien toutefois un cerveau dans le CT800 pour qu'il joue aux échecs. Rasmus Althoff a jeté son dévolu sur NG-Play dans sa version 9.86. Ce moteur open source UCI, développé en "C" par le grec George Georgopoulos, est de conception assez simple et de force limitée mais bénéficiait d'un code clair et concis. Rebaptisé par extension "CT800", le moteur amélioré par Althoff conserve toutefois les mêmes caractéristiques générales : il n'est pas trop fort en calcul mais compense par d'assez riches connaissances positionnelles, ce qui est une bonne combinaison pour un moteur destiné à être affronté par des joueurs humains de niveau correct. Sa bibliothèque d'ouvertures interne a été aussi fortement musclée.
Le CT800 - NG-Play fonctionne avec l'ordinateur d'échecs de Rasmus Althoff mais aussi sur n'importe quelle plateforme dotée de système Windows, Linux, Androïd, MacOs ou Raspberry Pi.


Style de jeu : hypermoderne et contre-attaquant


Le CT800 a un style bien à lui, cohérent et fortement teinté d'hypermodernisme. Il apprécie les débuts de partie fermés et défensifs car son évaluation lui commande, tant que la position est perçue comme égale, de ne pas échanger les pièces. Il joue d'ailleurs souvent des ouvertures hypermodernes. Son objectif stratégique à long terme est d'inciter l'adversaire à conquérir plus d'espace que nécessaire. Comme Nimzowitsch, à qui il ressemble dans cette phase du jeu, sa mobilité est faible, son développement lent et il conserve une structure de pions solide. Il ne cherchera à ouvrir la position en échangeant un pion ou deux que s'il constate un déficit matériel.
Si la phase d'ouverture s'est bien passée et qu'il arrive à une position perçue comme favorable, le CT800 passe à l'offensive. C'est ici que son jeu s'éloigne de Nimzo pour ressembler davantage à Kortchnoï : il va échanger beaucoup plus facilement les pièces pour ouvrir la position, augmenter sa mobilité et passer à l'attaque, parfois de manière directe et tranchante.
En fin de partie, le CT800 se comporte plutôt bien, le moteur ayant été alimenté en connaissances de configurations de finales.
En résumé : un très bon adversaire pour amateurs de bon niveaux et joueurs de club.


Téléchargement, installation


Le CT800 est téléchargeable sur le site de Rasmus Althoff.

En ce qui concerne la version Windows, l'auteur conseille de l'utiliser avec Arena mais elle peut fonctionner en principe avec toute interface compatible UCI, gratuite ou payante. Elle est proposée en deux versions : x32, pour les très vieux Windows en 32 bits et x64 pour tous Windows récents configurés en 64 bits.


Pour Arena : menu "Modules" > "Installer nouveau module" et allez chercher le fichier "CT800_V1.44_x64.exe" (ou "CT800_V1.44_x32.exe") dans le répertoire "binaries".
Arena va probablement vous demander s'il s'agit d'un UCI. Répondre "Oui".

Pour Lucas Chess : menu "Options" > "Configuration des moteurs" >, "Moteurs externes" ; bouton "Nouveau" et allez chercher le fichier "CT800_V1.44_x64.exe" (ou "CT800_V1.44_x32.exe") dans le répertoire "binaries".

Pour Pychess : menu "Éditer" > "Moteurs" puis bouton "Nouveau" et allez chercher le fichier "CT800_V1.44_x64.exe" (ou "CT800_V1.44_x32.exe") dans le répertoire "binaries".

Pour Mayura Chess : menu "Engine" > "Change Engine" > "Add or Remove Engines...". et allez chercher le fichier "CT800_V1.44_x64.exe" (ou "CT800_V1.44_x32.exe") dans le répertoire "binaries".
Remarque : avec la version "free", il n'est pas possible de changer les paramètres de configuration du moteur mais le réglage de force UCI_Elo reste actif.


Configuration

Voici le menu de configuration de CT800 tel qu'il se présente avec Arena (Menu "Modules" > "Module 1" > "Configurer" ou Ctrl + 1). Sur les autres interfaces les paramètres seront présentés différemment mais ce seront les mêmes.



Il n'y a pas lieu de faire des modifications ici sauf sur un point: la valeur de la taille de la table de Hash. Par défaut à 8 Mo, elle est faible pour un usage du moteur à pleine puissance. Sur un PC récent, le moteur acceptera facilement 128 Mo. Ne vous gênez pas car cela équivaut juste à augmenter la vitesse moyenne de votre système (sans modifier par exemple la fidélité du réglage UCI_Elo).

Pour ceux que cela intéresserait, voyons rapidement les autres options :

Book Moves : montre les coups d'ouverture possibles dans la position, si l'interface gère ce niveau de détail.

Keep Hash Tables : si coché conserve le contenu des tables de hash de la partie précédente (par défaut coché)

Clear Hash : pour vider des tables de hash.

OwnBook : si coché, le moteur va utiliser sa propre bibliothèque d'ouvertures (choix recommandé).

Move Overhead (ms) : délai de transfert des données à l'interface. Par défaut, 50 millisecondes. Augmenter si vous avez une vieille machine et que le moteur perd souvent au temps.

CPU speed throttle : cocher pour désactiver UCI_Elo et activer les réglages manuels ci-dessous (non-recommandé - voire plus bas "Réduction de force").
-> CPU Speed (%) : vitesse du processeur, par défaut 100 (maximum)
-> CPU Speed (kNPS) : vitesse du processeur, en kilo-noeuds explorés par seconde. Par défaut à 32000 (soit plus que ne peut atteindre un PC standard).

Eval Noise (%) : pourcentage de flou dans l'évaluation (par défaut zéro, c'est-à-dire aucun affaiblissement de la réflexion du moteur). Il n'est pas conseillé de changer cette valeur (voire plus bas "Réduction de force").  

Show current move : affichage du contenu de la recherche dans la zone de notification soit une fois par seconde (réglage par défaut), soit continuellement (non-recommandé).

Contempt value (cps) : valeur d'acceptation de nullité dans une position donnée, par défaut fixé à 30 centipions. Si on augmente cette valeur, le moteur deviendra plus optimiste et prendra plus de risques pour poursuivre la partie.
Contempt End (moves) : par défaut 35. A partir du 36eme mouvement le "Contempt" est désactivé si coché.


Réduire la force du moteur

Si "CPU Speed Throttle" est décoché dans le menu de configuration, le système automatique "UCI_Elo" de réduction de force restera en service. Il permet de régler la force du moteur au Elo près depuis l'interface. Avec Arena cela se fait depuis le menu "Niveau" > "Limite Elo de la force de jeu". Dans le cas du CT800 le choix est entre 1000 et 2400 Elo, ce qui est très optimiste puisque le niveau maximum de ce moteur est estimé à 2100-2200 Elo. Mais entre 1000 et 2000 Elo, le réglage de force devrait être fiable, du moins pour les contrôles de temps rapides, si vous utilisez une machine assez récente.

Si "CPU Speed Throttle" est coché, UCI_Elo est désactivé et les paramètres CPU Speed (%), CPU Speed (kNPS) et Eval Noise (%) vous permettront de régler manuellement la force du moteur. Mais je déconseille de le faire car le système UCI_Elo est déjà une combinaison optimale de réduction du nombre de nœuds explorés par le moteur et d'un certain pourcentage de "Noise". Rappelons que le "Noise" (ou "bruit", encore appelé "Blur" ou "Flou" sur d'autres moteurs) provoque une altération aléatoire de la qualité de l'évaluation.  
Dans le cas où vous voudriez quand même utiliser "Noise", je vous déconseille d'aller au delà de 10%, sinon le moteur vous donnera l'impression d'avoir bu quelques coups de trop.


Merci à Hazel d'avoir attiré mon attention sur ce petit diamant. Ses observations m'ont également aidé à rédiger cet article...

Rob Rob, mai 2023


 
 
 
 
 
 
Retourner au contenu | Retourner au menu _gaq.push(['_trackPageview']); (function() { var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); })();