Prophet - Le Bottin des Jeux Linux

Prophet

🗃️ Specifications

📰 Title: Prophet 🕹️ / 🛠️ Type: Tool
🗃️ Genre: Puzzle 🚦 Status: 06. Tested & Working
🏷️ Category: Puzzle ➤ Board Game ➤ Chess ➤ Engine ➤ CECP only 🌍️ Browser version:
🔖 Tags: Puzzle; Board Game; Chess Engine; CECP Protocol 📦️ Package Name:
🐣️ Approx. start: 2000-01-01 📦️ Arch:
🐓️ Latest: 2020-09-12 🍥️ On Deb repo:
📍️ Version: Latest : v3-20181124 / Dev : v4 / 530f5a9 📦️ Deb:
🏛️ License type: FOSS/Libre 📦️ RPM:
🏛️ License: MIT 📦️ AppImage:
🏝️ Perspective: Third person 📦️ Snap:
👁️ Visual: Text 📦️ Flatpak/Athenaeum:
⏱️ Pacing: Turn-Based ⚙️ Generic bin.: ✓
👫️ Played: Single 📄️ Source: ✓
🎖️ This record: 5 stars 📱️ PDA support:
🎀️ Game design: 5 stars 👫️ Contrib.: Goupil & Louis
🎰️ ID: 12391 🐛️ Created: 2010-08-20
🐜️ Updated: 2021-11-14

📖️ Summary

[fr]: Une IA de jeu d'échecs (une IA spécialisée dans ce type de jeux) libre et multi-plateforme, d'un assez bon niveau (puissance estimée à 2100 Elo pour la v.3, classée 360ème sur 2779 candidats au CCRL 40/15, classement "CCRL 404 - All engines" du 16 janvier 2021), communiquant avec le protocole CECP (les protocoles les plus courants sont CECP aka Winboard/Xboard, et UCI). La v1 expérimentait la méthode TD-Leaf. La v2 lui a ajouté des algorithmes de recherche parallèle. La v3 n'a pas réitérée la recherche parallèle, mais implémente l'algorithme magic bitboards. La v4 est en développement et sortira avec une performance augmentée d'au moins 100 ELO. [en]: A libre and multi-platform chess AI (an AI specialized in this type of games), with a fairly good level (power estimated at 2100 Elo for the v.3, ranked 360th out of 2779 candidates at the CCRL 40/15, ranking "CCRL 404 - All engines" of January 16, 2021), communicating with the CECP protocol (the most common protocols are CECP aka Winboard/Xboard, and UCI). The v1 was experimenting with the TD-Leaf method. The v2 added parallel search algorithms to it. V3 did not reiterate the parallel search, but implements the magic bitboards algorithm. The v4 is under development and will be released with an increased performance of at least 100 ELO

🕸️ Links

🏡️ Website & videos
[Homepage] [Dev site 1 (v4) 2 (v3)] [Features/About] [Screenshots] [Videos t(202xxx) ts(202xxx) gd(202xxx) gu(202xxx) id(202xxx) r(202xxx) lp(202xxx) g(202xxx) g[fr](202xxx) g[de](202xxx) g[ru](202xxx) g[pl](202xxx) g[cz](202xxx) g[sp](202xxx) g[pt](202xxx) g[it](202xxx) g[tr](202xxx)] [WIKI] [FAQ] [RSS] [Changelog 1 2(v3) 3(v4) 4]

💵 Commercial : (empty)

🍩️ Resources
• (empty) :
🛠️ Technical informations
[Open Hub] [PCGamingWiki] [MobyGames] [Chess Programming Wiki] [Computer Chess Rating Lists ("CCRL 404 - All engines")]

🐘 Social
Devs (James Swafford (jswaff) [fr] [en]) : [Site 1 2] [mastodon] [twitter] [PeerTube] [YouTube] [Interview 1 2]
Game : [Blog] [Forums] [mastodon] [twitter] [PeerTube] [YouTube]

🐝️ Related


📦️ Misc. repositories


🕵️ Reviews
[HowLongToBeat] [metacritic] [OpenCritic] [iGDB] [OpenCritic] [iGDB]

📰 News / Source of this Entry (SotE) / News (SotN)
[Changes with v. v3-20181124 (20190618)]

🕊️ Source of this Entry: -

🐘 Social Networking Update (on Mastodon)

🛠️ Title:
🦊️ What's:
🏡���
🐣️
🔖 #linux
📖 Our entry: https://bit.ly/bottinLightOn

🥁️ Update:
⚗️
📌️ Changes:
🐘 From:

🏝️ http://youtu.be/
🕵️ http://youtu.be/
🕹️ http://youtu.be/
🐧 http://youtu.be/

📕 Description [fr]

Une IA de jeu d'échecs libre d'un bon assez niveau, par James Swafford (jswaff).
En C.

Prophet est une IA de jeu d'échecs (une IA spécialisée dans ce type de jeux) libre et multi-plateforme, d'un assez bon niveau (puissance estimée à 2100 Elo pour la v.3, classée 360ème sur 2779 candidats au CCRL 40/15, classement "CCRL 404 - All engines" du 16 janvier 2021), communiquant avec le protocole CECP (les protocoles les plus courants sont CECP aka Winboard/Xboard, et UCI). La v1 expérimentait la méthode TD-Leaf. La v2 lui a ajouté des algorithmes de recherche parallèle. La v3 n'a pas réitérée la recherche parallèle, mais implémente l'algorithme magic bitboards. La v4 est en développement et sortira avec une performance augmentée d'au moins 100 ELO.

Ressources et documentations disponibles : voir les fiches "Ressources - Echecs" et "Ressources - Echecs Orientaux".


À propos de

La première version de Prophet a été écrite vers l'an 2000, alors que j'étais étudiant en licence. C'était un moteur d'échecs conventionnel, utilisant une première recherche alpha-bêta avec approfondissement itératif. J'ai utilisé cette version pour faire quelques expériences pas très réussies avec TDLeaf (une forme d'apprentissage par différence temporelle) et j'ai écrit à ce sujet dans ce résumé.

La deuxième version a été publiée au début de l'année 2007. J'étais en troisième cycle à l'époque et j'utilisais Prophet comme banc d'essai pour divers algorithmes de recherche parallèle. J'ai continué à travailler sur cette version jusqu'à ce que je termine mes études supérieures en 2008. Si cela vous intéresse, vous pouvez lire ce document.

Ensuite, Prophet est resté en sommeil pendant quelques années jusqu'en 2011, date à laquelle j'ai entamé une deuxième réécriture complète. À ce moment-là, j'avais appris l'importance de la conception axée sur les tests et je voulais l'appliquer à Prophet. La vie a repris son cours et le projet est resté en sommeil pendant plusieurs années avant même d'être publié. Prophet3 n'a jamais atteint la parité fonctionnelle avec Prophet2. Je n'ai jamais mis en œuvre la recherche parallèle, et certains termes d'évaluation n'ont jamais été portés. Malgré cela, je pense que ce programme est globalement meilleur.

Le développement sur Prophet4 a commencé en juin 2019. Il reste encore beaucoup de travail à faire, mais je pense que le résultat final en vaudra la peine.

Quelle est sa force ?

Pendant son développement actif, Prophet3 a été régulièrement testé contre une série d'adversaires à raison de 3 minutes par partie avec des incréments de 0,5 seconde par coup. Mes tests ont montré que Prophet3 était environ 100 elo plus fort que Prophet2, et très proche en force de Horizon 4.4 et TCB 0052 - voir Une autre série de sparring partners pour Prophet3.

La liste CCRL 40/40, cependant, montre que Prophète 3 est de 40 à 50 points plus faible que Prophète 2. Cette différence n'a jamais été entièrement expliquée, mais elle est peut-être discutable maintenant qu'une réécriture est en cours.

Prophet joue aussi régulièrement en ligne au club d'échecs Internet, mais ces classements ont tendance à varier fortement. Normalement, les classements des blitz se situent entre 2100 et 2300.


Prophet4

Prophet4 est, ou sera, un programme de jeu d'échecs écrit en C. Il est le successeur de Prophet3, et comme son nom l'indique, la troisième grande réécriture du moteur d'échecs Prophet.

Objectifs de la conception

• Utiliser du C pur. Prophet3 est "presque C" de toute façon. Ce n'est pas un programme orienté objet.
• Modulariser la base de code. Regrouper les fichiers sources dans des répertoires en fonction de leur fonctionnalité. Par exemple movegen, eval, search, etc.
• Décomposer le code en plusieurs fichiers sources de nature plus ciblée.
• Mieux utiliser les fonctions statiques.
• Mieux utiliser le qualificatif const.
• Améliorer la documentation. Chaque fonction devrait avoir au moins une brève description de son objectif, une liste d'arguments et une valeur de retour.
• Améliorer la couverture des tests. En général, Prophet3 est bien testé, mais la couverture pourrait être améliorée dans certains domaines.
• Utiliser un faisceau de test approprié, par exemple GoogleTest ou autre. Le binaire de sortie ne doit pas contenir le code de test. Prophet3 utilise exclusivement des assertions, et tout le code de test est intégré dans le binaire (même s'il ne peut pas être exécuté lorsqu'il est compilé avec le drapeau NDEBUG).
• Utiliser des détecteurs de fuite de mémoire tels que Valgrind à chaque version.
• Produire une bibliothèque statique contenant les fonctions de génération, d'évaluation et de recherche de mouvements. Elle ne comprendra pas le code relatif au livre d'ouverture ni le code relatif au protocole Xboard. L'objectif est de modulariser les fonctionnalités de base pour les inclure dans d'autres projets.

Statut

La réécriture est suffisamment avancée maintenant que Prophet4 est un moteur d'échecs entièrement fonctionnel et compatible avec XBoard. Des améliorations en matière de recherche sont en cours d'ajout et de test minutieux. Le moteur sortira lorsqu'il sera 100 ELO plus puissant que son prédécesseur, Prophet3.

📕 Description [en]

"A libre and multi-platform chess AI, with a fairly good level (power estimated at 2131 Elo)" (Serge Le Tyrant, Le Bottin des Jeux Linux / The Linux Games Book).

About

The first version of Prophet was written around the year 2000 while I was an undergraduate. It was a conventional chess engine, utilizing a depth first alpha-beta search with iterative deepening. I used this version to do some not-so-successful experimentation with TDLeaf (a form of temporal difference learning) and wrote about it in this abstract.

The second version was released in early 2007. I was in graduate school at that time and was using Prophet as a test bed for various parallel search algorithms. I continued to work on this version until shortly after finishing graduate school in 2008. If you’re interested you can read about it in this paper.

After that, Prophet lie dormant for a few years until 2011 when I started a second complete rewrite. By this point I had learned the importance of test driven design and wanted to apply that to Prophet. Life got busy again and the project lie dormant for several more years before it was even released. Prophet3 never achieved functional parity with Prophet2. I never implemented the parallel search, and there are some evaluation terms that were never ported. Despite that, I think it is a better program overall.

Development on Prophet4 began in June 2019. There is still a considerable amount of work to do, but I believe the end result will be worth the effort.

How Strong is it?

While under active development, Prophet3 was regularly tested against a suite of opponents at 3 minutes per game with 0.5 second increments per move. My testing showed Prophet3 to be about 100 elo stronger than Prophet2, and very close in strength to Horizon 4.4 and TCB 0052 – see Another round of sparring partners for Prophet3.

The CCRL 40/40 list, however, shows Prophet3 to be 40-50 points weaker than Prophet2. That difference was never fully explained, but perhaps a moot point now that a rewrite is underway.

Prophet also regularly plays online at the Internet Chess Club, but those ratings tend to vary wildly. Normally the blitz ratings are in the 2100-2300 range.


Prophet4

Prophet4 is, or will be, a chess playing program written in C. It is the successor to Prophet3, and as the name suggests, the third major rewrite of the Prophet chess engine.

Design Goals

• Use pure C. Prophet3 is "nearly C" anyway. It is not an object oriented program.
• Modularize the codebase. Group source files into directories according to functionality. E.g. movegen, eval, search, etc.
• Break the code down into more source files that are more focused in nature.
• Make better use of static functions.
• Make better use of the const qualifier.
• Improve the documentation. Each function should have at least a brief description of its purpose, a listing of arguments and return value.
• Improve testing coverage. In general Prophet3 is well tested, but there are some areas the coverage could improve.
• Use a proper test harness, e.g. GoogleTest or the like. The release binary should not contain the test code. Prophet3 uses assertions exclusively, and all the test code is built into the binary (even though it can't be executed when compiled with the NDEBUG flag).
• Make use of memory leak detectors such as Valgrind on each release.
• Produce a static library containing the move generation, evaluation, and search related functions. It will not include the opening book related code or the Xboard protocol related code. The intent is to modularize the core functionality for inclusion in other projects.

Status

The rewrite is far enough along now that Prophet4 is a completely functional XBoard compatible chess engine. Search enhancements are being added and carefully tested. The engine will be released when it is 100 ELO stronger than its predecessor, Prophet3.

🚧️ Installation [fr]

Pour jouer avec ce moteur, utilisez une interface graphique de jeu telle que (testé & validé) : Knights, Scid

Sous Debian, les Moteurs de jeux d'échecs empaquetés sont installés dans /usr/games/
(information utile pour le paramétrage des interfaces graphiques).

🔍️ Test [fr]

🕵️ Test (2.0 b1) :
LE BINAIRE FOURNI :
Il fonctionne correctement.

COMPILATION :
Sa compilation plante sur :
(...)
book.cpp:83: erreur: ‘printf’ was not declared in this scope
(...)