Estoy escribiendo un motor de ajedrez en C ++ https://github.com/RomainGoussault/Deepov .
Sé que existen varios protocolos de interfaz (UCI, protocolo Winboard, etc.) y no sé cuál implementar. Me gustaría uno que:
- permite que mi motor juegue torneos en línea
- tiene varias GUI para Linux, Windows e iOS
- tiene algún tipo de documentación
Gracias
engines
software
programming
Romain
fuente
fuente
Respuestas:
Solo hay dos protocolos: UCI y Winboard. Winboard es un protocolo antiguo y actualmente no se usa realmente. Crafty es el único motor importante que todavía admite el protocolo Winboard, pero es solo porque el motor también es muy antiguo. UCI es un protocolo más nuevo desarrollado por Shredder, y se usa en todas partes: Windows, Mac, Linux, Android, iOS, etc. UCI es realmente el único protocolo que debe considerar.
Winboard ha quedado más o menos obsoleto porque el protocolo es más complicado que el UCI más limpio. Winboard es un protocolo establecido, significa que el estado del motor depende de las iteraciones anteriores, mientras que UCI es más fácil de manejar, ya que solo tiene que suministrar su FEN actual o una lista de movimientos.
fuente
No creo que sea posible crear una GUI o un motor como aplicaciones separadas en iOS. iOS evita que una aplicación invoque a otra como parte de su configuración de seguridad. Un autor del motor tiene que escribir la GUI e integrarla con el motor antes de poder solicitar a Apple la aprobación para su lanzamiento en la App Store. Esto también puede ser cierto para Windows RT. Android tiene GUI y motores.
Además de UCI y CECP (Protocolo de comunicación del motor de ajedrez, es decir, winboard / xboard), Chessbase tiene su propio protocolo patentado. Muchos de los motores más potentes usan UCI, mientras que los programadores principiantes suelen usar CECP.
fuente
La mayoría de los motores de soporte GUI, ya sea en UCI o Winboard, UCI se está convirtiendo en un estándar y popular en estos días. Pero, por lo general, si desea que su motor se pueda conectar fácilmente a cualquier GUI (en Windows o Linux), debe tener un "exe" o ejecutable al que puedan apuntar estos programas GUI. Si está construyendo el motor usando Java, entonces no estoy seguro de cómo podría convertir esto en un ejecutable para ser utilizado por la GUI. Lo mismo se aplica para poder jugar torneos en línea. Incluso si planea proporcionar un tipo de interfaz de servicio web para su motor, no creo que pueda participar en competiciones de motores.
fuente