Qual protocolo de interface devo implementar para o meu mecanismo de xadrez?


8

Estou escrevendo um mecanismo de xadrez em C ++ https://github.com/RomainGoussault/Deepov .

Eu sei que existem vários protocolos de interface por aí (UCI, protocolo Winboard, etc.) e não sei qual implementar. Eu gostaria de um que:

  • permite que meu mecanismo jogue torneios online
  • possui várias interfaces gráficas para Linux, Windows e iOS
  • tem algum tipo de documentação

obrigado


2
Por que Java? Acredite, você vai se arrepender quando otimizar seu motor para obter velocidade.
Rafiek 18/08/19

Porque eu conheço Java bem. Eu também sei que Java é realmente lento em comparação com outras linguagens. Posso portá-lo para C ++ posteriormente.
Romain

Ok, mas eu recomendo portar o mais cedo possível;)
Rafiek

1
Portando para C ++ feito;)
Romain

Respostas:


9

Existem apenas dois protocolos - UCI e Winboard. O Winboard é um protocolo antigo e realmente não está sendo usado atualmente. O Crafty é o único mecanismo importante que ainda suporta o protocolo Winboard, mas é apenas porque o mecanismo também é muito antigo. O UCI é um protocolo mais recente desenvolvido pela Shredder e é usado em qualquer lugar - Windows, Macs, Linux, Android, iOS etc. O UCI é realmente o único protocolo que você deve considerar.

  1. UCI é suportado em qualquer lugar
  2. Toda GUI de xadrez que não seja o xboard suporta UCI, como Chessbase, Scid, Arena etc. Até o xboard pode se conectar a um mecanismo UCI por algo conhecido como Polyglot.
  3. A documentação da UCI está em http://wbec-ridderkerk.nl/html/UCIProtocol.html

O Winboard ficou mais ou menos obsoleto porque o protocolo é mais complicado que o UCI mais limpo. O Winboard é um protocolo declarado, significa que o estado do mecanismo depende das iterações anteriores, enquanto o UCI é mais fácil de lidar, pois você só precisa fornecer o seu FEN atual ou uma lista de movimentação.


1
Uma pequena correção nas GUIs do xadrez acima, como o Arena, normalmente não usa o FEN para comunicar os estados dos jogos com a UCI. Eles usam listas de movimentação desde o início do jogo. Isso permite que o mecanismo lide corretamente com a regra dos cinquenta movimentos e outros recursos do jogo que geralmente não são adequadamente comunicados com a FEN. O protocolo usa FEN, no entanto, para definir posições arbitrárias de jogos e posições em que a lista de movimentos inteira é desconhecida. No entanto, o pôster está correto em todos os outros detalhes.
19415 johnwbyrd

1
@johnwbyrd Eu editei minha resposta. Obrigado.
SmallChess

1
A FEN funciona bem para a regra dos cinquenta movimentos. É a regra da tríplice repetição que causa problemas.
Kef Schecter

1

Não acho possível criar uma GUI ou mecanismo como aplicativos separados no iOS. O iOS impede que um aplicativo invoque outro como parte de sua configuração de segurança. O autor de um mecanismo precisa escrever a GUI e integrá-la ao mecanismo antes de solicitar a aprovação da Apple para liberação na App Store. Isso também pode ser verdade no Windows RT. O Android tem GUIs e mecanismos.

Além de UCI e CECP (Chess Engine Communication Protocol, ou seja, winboard / xboard), o Chessbase possui seu próprio protocolo proprietário. Muitos dos mecanismos mais fortes usam UCI, enquanto os programadores iniciantes geralmente usam o CECP.


Também é verdade para o Windows phone.
SmallChess 22/09/2015

-3

A maioria dos GUI suporta mecanismos UCI ou Winboard, tornando-se mais um padrão e popular nos dias de hoje. Mas, normalmente, se você deseja que seu mecanismo seja facilmente conectável a qualquer GUI (no Windows ou Linux), você deve ter um "exe" ou executável que possa ser apontado por esses programas de GUI. Se você estiver construindo o mecanismo usando Java, não tenho certeza de como você poderá converter isso em um executável para ser usado pela GUI. O mesmo se aplica para poder jogar torneios online. Mesmo se você planeja fornecer um tipo de interface de serviço da web para seu mecanismo, não acho que ele possa participar de competições de mecanismo.


Não. O Java pode ser criado nativamente para .exe. O Java nem sempre precisa ser executado em uma máquina virtual.
SmallChess

O arquivo .exe que você está falando é um arquivo de mecanismo. O mecanismo deve suportar UCI ou Winboard. Caso contrário, nenhuma GUI de xadrez poderá lê-la. Sua afirmação não faz sentido.
SmallChess

Não posso deixar de rir dos seus comentários. Tente executar um programa java sem o JRE instalado.
Keshav

1
Se você fez alguma programação, vai rir de si mesmo. Java pode ser compilado para um programa nativo.
SmallChess
Ao utilizar nosso site, você reconhece que leu e compreendeu nossa Política de Cookies e nossa Política de Privacidade.
Licensed under cc by-sa 3.0 with attribution required.