Quel protocole d'interface dois-je implémenter pour mon moteur d'échecs?

8

J'écris un moteur d'échecs en C ++ https://github.com/RomainGoussault/Deepov .

Je sais qu'il existe plusieurs protocoles d'interface (UCI, protocole Winboard, etc.) et je ne sais pas lequel implémenter. J'aimerais en avoir un qui:

  • permet à mon moteur de jouer à des tournois en ligne
  • a plusieurs GUI pour Linux, Windows et iOS
  • a une sorte de documentation

Merci

Romain
la source
2
Pourquoi Java? Croyez-moi, vous le regretterez lorsque vous optimiserez la vitesse de votre moteur.
Rafiek
Parce que je connais bien Java. Je sais également que Java est vraiment lent par rapport à d'autres langages. Je peux ensuite le porter en C ++.
Romain
D'accord, mais je recommande le portage dès que possible;)
Rafiek
1
Portage en C ++ fait;)
Romain

Réponses:

9

Il n'y a que deux protocoles - UCI et Winboard. Winboard est un ancien protocole et n'est pas vraiment utilisé de nos jours. Crafty est le seul moteur majeur prenant encore en charge le protocole Winboard, mais c'est uniquement parce que le moteur est également très ancien. UCI est un protocole plus récent développé par Shredder, et est utilisé partout - Windows, Mac, Linux, Android, iOS etc. UCI est vraiment le seul protocole que vous devriez considérer.

  1. L'UCI est prise en charge partout
  2. Chaque interface graphique d'échecs autre que xboard prend en charge UCI, comme Chessbase, Scid, Arena, etc. Même xboard peut se connecter à un moteur UCI par quelque chose appelé Polyglot.
  3. La documentation de l'UCI se trouve sur http://wbec-ridderkerk.nl/html/UCIProtocol.html

Winboard est plus ou moins obsolète car le protocole est plus compliqué que l'UCI plus propre. Winboard est un protocole déclaré, cela signifie que l'état du moteur dépend des itérations précédentes, tandis que l'UCI est plus facile à gérer car il vous suffit de fournir votre FEN actuel ou une liste de mouvements.

SmallChess
la source
1
Une correction mineure sur les interfaces graphiques d'échecs telles que Arena n'utilisent généralement pas FEN pour communiquer les états de jeu avec l'UCI. Ils utilisent des listes de coups depuis le début de la partie. Cela permet au moteur de gérer correctement la règle des cinquante coups et d'autres fonctionnalités du jeu qui souvent ne sont pas correctement communiquées avec FEN. Le protocole utilise cependant FEN pour configurer des positions de jeu arbitraires et des positions où la liste de coups entière est inconnue. Cependant, l'affiche est correcte dans tous les autres détails.
johnwbyrd
1
@johnwbyrd J'ai modifié ma réponse. Merci.
SmallChess
1
FEN fonctionne bien pour la règle des cinquante coups. C'est la triple règle de répétition qui pose problème.
Kef Schecter
1

Je ne pense pas qu'il soit possible de créer une interface graphique ou un moteur en tant qu'applications distinctes dans iOS. iOS empêche une application d'en invoquer une autre dans le cadre de sa configuration de sécurité. Un auteur de moteur doit écrire l'interface graphique et l'intégrer au moteur avant de pouvoir demander à Apple une approbation pour publication sur l'App Store. Cela peut également être vrai pour Windows RT. Android possède des interfaces graphiques et des moteurs.

En plus de l'UCI et du CECP (Chess Engine Communication Protocol, c'est-à-dire winboard / xboard), Chessbase a son propre protocole propriétaire. Beaucoup des moteurs les plus puissants utilisent UCI, tandis que les programmeurs débutants utilisent assez couramment CECP.

Un passant
la source
C'est également vrai pour Windows Phone.
SmallChess
-3

La plupart des moteurs de prise en charge de l'interface graphique, que ce soit en UCI ou Winboard, UCI devenant de plus en plus un standard et populaire de nos jours. Mais, généralement, si vous voulez que votre moteur soit facilement connectable à n'importe quelle interface graphique (sous Windows ou Linux), vous devriez avoir un "exe" ou un exécutable qui peut être indiqué par ces programmes GUI. Si vous construisez le moteur à l'aide de Java, je ne sais pas comment vous pourriez le convertir en un exécutable à utiliser par l'interface graphique. La même chose s'applique pour pouvoir jouer à des tournois en ligne. Même si vous prévoyez de fournir une interface de type service Web pour votre moteur, je ne pense pas qu'il puisse participer à des compétitions de moteurs.

Keshav
la source
Non. Java peut être nativement construit pour .exe. Java ne doit pas toujours être exécuté sur une machine virtuelle.
SmallChess
Le fichier .exe dont vous parlez est un fichier moteur. Le moteur doit prendre en charge UCI ou Winboard. Sinon, aucune interface graphique d'échecs ne peut y lire. Votre déclaration n'a aucun sens.
SmallChess
Je ne peux que rire de vos commentaires. Essayez d'exécuter un programme java sans le JRE installé.
Keshav
1
Si vous avez fait de la programmation, vous vous moquerez de vous. Java peut être compilé dans un programme natif.
SmallChess