Des problèmes d’échecs, résolus jusqu’au dernier coup.

Zugwunder est un moteur d’échecs que j’ai écrit de zéro en Swift, et l’app Mac construite autour. Il prouve exactement les mats, les mats aidés et les automats, invente de nouveaux problèmes à partir de ses propres tables de finales, entraîne votre tactique et joue à environ 3000 Elo. Tout le calcul se fait sur votre Mac.

Version 1.1.15 pour macOS 14 ou plus récent sur Apple Silicon. Le moteur seul tourne aussi sous Linux ; Wolfgang, une interface d’échecs pour n’importe quel moteur UCI, est également sur la page de téléchargement.

Problème d’échecs : mat en trois Roi blanc en e8, dame blanche en e4, roi noir en g5. Les Blancs jouent et font mat en trois coups. Solution : 1. Rf7 Rh5 2. Rf6 Rh6 3. Dg6 mat.
Mat en trois, les Blancs au trait. Un seul premier coup fonctionne, et ce n’est pas un échec. Le générateur de problèmes de Zugwunder construit des positions comme celle-ci à partir de ses tables de finales et vérifie que le coup clé est unique.

1. Rf7 Rh5 2. Rf6 Rh6 3. Dg6#Après 1…Rh6, 2. Dg6#.

Mesuré, pas proclamé.

Chaque chiffre ci-dessous provient des propres séries de tests de Zugwunder. Les journaux accompagnent chaque version, et une version qui échoue à un test n’est pas publiée.

Force de jeu 3065 ± 20 Elo réseau v6, un cœur 500 parties de référence contre Stockfish à son UCI_Elo calibré de 3100, 60 s + 0,6 s par coup, 256 Mo de hachage, tables Syzygy : 83 victoires, 284 nulles, 133 défaites. Au-delà de cette série, le cluster a joué des milliers de parties contre Stockfish et d’autres moteurs. Une estimation sur l’échelle de Stockfish, pas un classement officiel.
Données d’entraînement 236,6 millions de positions Issues des parties de Zugwunder contre lui-même et contre Stockfish, étiquetées avec les résultats de recherche de Zugwunder et l’issue des parties. Aucun code, aucun poids ni aucune évaluation étrangers ne sont entrés dans le réseau.
Évaluation NNUE, 6e génération 768 → 2 × 256 → 1 Un petit réseau de neurones, quantifié en entiers 16 bits et mis à jour de façon incrémentale avec des instructions SIMD. Entraîné avec un script PyTorch de 150 lignes, intégré dans le binaire, exécuté en Swift.
Dépendances Aucune Seulement Swift et les frameworks d’Apple. L’unique exception est Fathom (licence MIT), qui lit les tables de finales Syzygy.
Tests par version 364 + 32 364 tests Swift couvrant le moteur, l’app et Wolfgang, plus 32 tests de protocole exécutés contre le vrai binaire zugwunder-uci. Toute nouvelle idée de recherche doit d’abord gagner un match SPRT contre la version précédente.
Langues 4 Allemand, anglais, français et néerlandais, commutables dans l’app. Ce site suit les quatre mêmes.

Un moteur, trois programmes.

Le moteur est une bibliothèque. L’app Mac, l’interface d’échecs et le binaire UCI autonome sont trois façons de l’utiliser.

Icône de l’app Zugwunder

Zugwunder

L’app Mac

Solveur, entraîneur tactique, partenaire de jeu et éditeur d’échiquier dans une seule fenêtre native. Elle prouve exactement les mats et les énoncés du problème d’échecs, génère des problèmes, analyse vos parties et imprime des fiches d’exercices.

Toutes les fonctions
Icône de l’app Wolfgang

Wolfgang

Une interface d’échecs pour tout moteur UCI

Jouez contre Zugwunder, Stockfish ou n’importe quel autre moteur UCI, faites jouer des moteurs entre eux, organisez de petits tournois à partir de séries d’ouvertures et conservez tout en PGN. Nommé d’après le cousin qui m’a appris les échecs.

Wolfgang en détail

zugwunder-uci

Le moteur seul

Un seul fichier pour macOS, Linux (x86_64 et ARM64) et WebAssembly. Chargez-le dans Cute Chess, En Croissant, Banksia, Wolfgang ou tout autre programme d’échecs UCI, ou laissez-le jouer dans votre navigateur.

Obtenir le moteur

Quatre modes, un échiquier.

La barre latérale passe de l’un à l’autre ; la position sur l’échiquier vous suit. Un problème de l’entraîneur peut être résolu, joué contre le moteur ou modifié.

Résoudre

Tapez une FEN, ouvrez un PGN ou photographiez un diagramme dans un livre. Zugwunder trouve les meilleures suites avec plusieurs variantes à la fois, ou prouve exactement un énoncé : mat, mat aidé, automat ou pat en n, avec l’arbre de solution complet et un avertissement lorsqu’un problème a une seconde solution.

Entraîneur tactique

Des problèmes Lichess par motif et difficulté, votre propre bibliothèque de problèmes, et des problèmes que Zugwunder génère lui-même. Progrès par problème et par motif, des indices quand vous le voulez, et un mode de répétition pour ceux qui vous ont battu.

Contre le moteur

Trois niveaux nommés Débutant, Club et Erik, un livre d’ouvertures et une pendule avec incrément. Ou jouez contre un autre moteur, limitez Stockfish à un Elo, ou regardez Zugwunder l’affronter. Ensuite, une analyse complète de la partie avec courbe d’évaluation et PGN annoté.

Éditeur d’échiquier

Placez les pièces à la main, fixez le trait et les droits de roque, et laissez l’app vérifier que la position est légale avant de la résoudre, de vous entraîner ou de jouer à partir de là.

Nouveautés de l’automne.

Depuis la fin septembre, l’app est passée d’un solveur de mats à un atelier d’échecs complet. Voici ce qui a changé le plus récemment ; l’historique complet se trouve dans les notes de version de l’app.

  • Créer un problème d’échecsnouveau

    Choisissez le camp au trait, un mat en un à six coups, et une dame, une tour ou un pion comme pièce supplémentaire. Zugwunder tire au sort une finale à trois pièces dans ses tables exactes, vérifie qu’un seul premier coup mate à temps, et confie la position à l’entraîneur. Chaque problème est nouveau, et chacun a une solution.

  • Position à partir d’une photo, dans les quatre langues

    Glissez une image, collez-en une avec ⌘V ou choisissez un fichier : un diagramme de livre, un scan ou une capture d’écran. La reconnaissance utilise Claude d’Anthropic via votre propre clé API, et le résultat est une proposition modifiable que vous confirmez avant toute résolution. L’interface, les textes d’aide et les remarques du modèle suivent désormais la langue de l’app.

  • Captures de fenêtre

    Un bouton appareil photo dans les quatre modes enregistre toute la fenêtre, barre de titre comprise, en PNG où vous voulez. Pratique pour une chronique d’échecs ou le bulletin du club.

  • Force réglable pour le moteur UCI

    Avec UCI_LimitStrength activé, UCI_Elo choisit un niveau de 1100 à 3000. L’échelle a été calibrée sur plus de 5 000 parties contre Stockfish 17.1 et reste provisoire tant qu’un second adversaire et macOS n’ont pas été vérifiés.

  • Réseau v6 et prise en charge UCI complète

    Le sixième réseau est entré dans toutes les versions après des matchs de 500 parties contre Stockfish et Arasan. L’implémentation UCI a été complétée selon la spécification de 2006, y compris la réflexion sur le temps adverse, searchmoves, go mate et les limites de nœuds, et elle est vérifiée par 32 tests de protocole à chaque version.

  • Le moteur comme paquet à part

    zugwunder-uci est devenu un programme distinct avec des versions pour macOS, Linux x86_64 et ARM64, et WebAssembly. Les deux apps embarquent leur propre copie et lui parlent en UCI comme à n’importe quel autre moteur.

Écrit à partir des bitboards.

Un moteur d’échecs est le genre de programme où chaque raccourci se paie par une partie perdue. Il n’y a aucune bibliothèque de moteur sous Zugwunder : la génération des coups, la recherche, l’évaluation neuronale et sa chaîne d’entraînement, les tables de finales, les solveurs de problèmes, les apps et le programme de mise à jour font tous partie du projet.

Lire comment c’est construit

Le moteur répond comme n’importe quel autre moteur UCI. Un test rapide dans un terminal :

printf 'uci\nisready\ngo movetime 1000\n' | ~/bin/zugwunder-uci

Il répond avec ses options, uciok, readyok, quelques lignes info et enfin bestmove ….

Essayez-le sur une position que vous connaissez.

Signé et notarisé pour macOS. La version pour navigateur ne demande aucune installation.