Partager sur : Facebook, Twitter
Pour comprendre le contexte, Toledo NanoChess se veut être le moteur de jeu d'échecs le plus petit du monde. Il inclut de base toutes les règles élémentaires de ce jeu de plateau, dont le roque, la prise en passant et la promotion.
Il a été publié par un développeur mexicain à l'occasion d'un concours annuel de code impénétrable (IOCCC = International Obfuscated C Code Contest pour les intimes). L'objectif est d'écrire un logiciel de manière illisible pour un humain mais sans aucun effet sur la syntaxe technique. Outre l'extrême concision du code source, l'auteur a nommé ses variables en utilisant son nom et le compte de son adresse électronique. Tous ces éléments contribuent à la sophistication du programme afin qu'il remporte le fameux concours.
La syntaxe entre les langages C, Java et JavaScript étant très similaire, Toledo NanoChess a été publié dans ces 3 langages. Un développeur a par exemple réutilisé la version Java pour créer une application pour les montres connectées fonctionnant sous Android Wear. Mais pour le commun des mortels que sont les joueurs d'échecs, profiter de ce moteur passe par une interface WinBoard également écrite en langage C avec offuscation.
C'est en utilisant cette version que j'ai rencontré quelques petits problèmes. Il n'est par exemple pas possible d'annuler un coup sans faire planter le jeu. En y regardant de plus près, je n'ai pas trouvé de version utilisant le protocole UCI. Alors ayant développé récemment AntiCrux qui est un jeu d'échecs suicide (la dynamique de jeu y est totalement différente), j'ai repris quelques briques techniques puis fait un effort d'ingénierie inverse pour comprendre le fonctionnement de Toledo NanoChess, ce que l'auteur encourage de faire à défaut de fournir le code source non obscurci de son œuvre. Le moteur repose massivement sur des opérations logiques binaires au travers d'une unique fonction X(). L'exercice fut très formateur.
Cette version UCI de Toledo NanoChess est disponible sur Github ! Vous êtes invité à la télécharger et l'utiliser sans modération !
Ce petit moteur d'échecs est vraiment bien pour débuter et se perfectionner. Selon le classement des jeux d'échecs, son ELO est d'environ 1220, soit pas très élevé. Il a la fâcheuse tendance à jouer les mêmes coups au début (à savoir avancer ses pions de deux cases) mais si vous variez un peu votre jeu, vous pourrez engager une partie sérieuse. La faiblesse de son niveau de jeu contraste avec sa rapidité de calcul qui s'élève jusqu'à 500 000 coups par seconde sur un ordinateur moderne.
Pour les entraînements, Toledo NanoChess UCI (ultra rapide), pyChess (débrouillard), Rybka (tactique) voire Stockfish (fort) sont quelques outils recommandés pour progresser seul contre l'ordinateur.
À vos jeux !