Ich schreibe eine Schach-Engine in C ++ https://github.com/RomainGoussault/Deepov .
Ich weiß, dass es mehrere Schnittstellenprotokolle gibt (UCI, Winboard-Protokoll usw.), und ich weiß nicht, welche ich implementieren soll. Ich möchte eine, die:
- ermöglicht meiner Engine, Online-Turniere zu spielen
- hat mehrere GUI für Linux, Windows und iOS
- hat eine Art Dokumentation
Vielen Dank
engines
software
programming
Romain
quelle
quelle
Antworten:
Es gibt nur zwei Protokolle - UCI und Winboard. Winboard ist ein altes Protokoll und wird heutzutage nicht mehr wirklich verwendet. Crafty ist die einzige große Engine, die das Winboard-Protokoll noch unterstützt, aber nur, weil die Engine auch sehr alt ist. UCI ist ein neueres Protokoll, das von Shredder entwickelt wurde und überall verwendet wird - Windows, Macs, Linux, Android, iOS usw. UCI ist wirklich das einzige Protokoll, das Sie in Betracht ziehen sollten.
Winboard ist mehr oder weniger veraltet, da das Protokoll komplizierter ist als die sauberere UCI. Winboard ist ein angegebenes Protokoll. Dies bedeutet, dass der Engine-Status von den vorherigen Iterationen abhängt, während UCI einfacher zu handhaben ist, da Sie nur Ihren aktuellen FEN oder eine Verschiebungsliste bereitstellen müssen.
quelle
Ich denke nicht, dass es möglich ist, eine GUI oder Engine als separate Apps in iOS zu erstellen. iOS verhindert, dass eine App im Rahmen ihrer Sicherheitseinstellungen eine andere aufruft. Ein Engine-Autor muss die GUI schreiben und in die Engine integrieren, bevor er bei Apple die Genehmigung zur Veröffentlichung im App Store beantragen kann. Dies gilt möglicherweise auch für Windows RT. Android hat GUIs und Engines.
Neben UCI und CECP (Chess Engine Communication Protocol, dh Winboard / Xboard) verfügt Chessbase auch über ein eigenes proprietäres Protokoll. Viele der stärksten Engines verwenden UCI, während beginnende Programmierer häufig CECP verwenden.
quelle
Die meisten GUI-Support-Engines in UCI oder Winboard, UCI wird heutzutage immer mehr zum Standard und zur Popularität. Wenn Sie jedoch möchten, dass Ihre Engine problemlos an eine beliebige GUI (unter Windows oder Linux) angeschlossen werden kann, sollten Sie über eine "exe" oder ausführbare Datei verfügen, auf die diese GUI-Programme verweisen können. Wenn Sie die Engine mit Java erstellen, bin ich mir nicht sicher, wie Sie diese in eine ausführbare Datei konvertieren können, die von der GUI verwendet wird. Gleiches gilt für Online-Turniere. Selbst wenn Sie vorhaben, eine Web-Service-Schnittstelle für Ihren Motor bereitzustellen, glaube ich nicht, dass dieser an Motorwettbewerben teilnehmen kann.
quelle