Quale protocollo di interfaccia devo implementare per il mio motore di scacchi?


8

Sto scrivendo un motore di scacchi in C ++ https://github.com/RomainGoussault/Deepov .

So che esistono diversi protocolli di interfaccia (UCI, protocollo Winboard, ecc.) E non so quale implementare. Ne vorrei uno che:

  • consente al mio motore di giocare ai tornei online
  • ha diverse GUI per Linux, Windows e iOS
  • ha una sorta di documentazione

Grazie


2
Perché Java Credimi, te ne pentirai quando stai ottimizzando il tuo motore per la velocità.
Rafiek,

Perché conosco bene Java. So anche che Java è molto lento rispetto ad altre lingue. Potrei successivamente portarlo su C ++.
Romain,

Ok, ma raccomando il porting il prima possibile;)
Rafiek,

1
Porting su C ++ completato;)
Romain,

Risposte:


9

Esistono solo due protocolli: UCI e Winboard. Winboard è un vecchio protocollo e attualmente non viene utilizzato. Crafty è l'unico motore principale che supporta ancora il protocollo Winboard, ma è solo perché il motore è anche molto vecchio. L'UCI è un protocollo più recente sviluppato da Shredder e viene utilizzato ovunque: Windows, Mac, Linux, Android, iOS ecc. L'UCI è davvero l'unico protocollo da considerare.

  1. L'UCI è supportato ovunque
  2. Ogni GUI diversa da xboard supporta UCI, come Chessbase, Scid, Arena ecc. Anche xboard può connettersi a un motore UCI da qualcosa noto come Polyglot.
  3. La documentazione UCI è disponibile all'indirizzo http://wbec-ridderkerk.nl/html/UCIProtocol.html

Winboard è più o meno obsoleto perché il protocollo è più complicato dell'UCI più pulito. Winboard è un protocollo dichiarato, significa che lo stato del motore dipende dalle iterazioni precedenti, mentre UCI è più facile da gestire in quanto devi solo fornire la tua FEN corrente o una lista di mosse.


1
Una correzione minore sulle GUI di scacchi di cui sopra, come Arena, in genere non utilizza FEN per comunicare gli stati di gioco con l'UCI. Usano le liste delle mosse dall'inizio del gioco. Ciò consente al motore di gestire correttamente la regola delle cinquanta mosse e altre funzionalità di gioco che spesso non sono adeguatamente comunicate con FEN. Il protocollo utilizza FEN tuttavia per impostare posizioni di gioco arbitrarie e posizioni in cui l'intera lista di mosse è sconosciuta. Tuttavia, il poster è corretto in tutti gli altri particolari.
johnwbyrd,

1
@johnwbyrd Ho modificato la mia risposta. Grazie.
SmallChess,

1
FEN funziona bene per la regola delle cinquanta mosse. È la triplice regola di ripetizione che causa problemi.
Kef Schecter,

1

Non credo sia possibile creare una GUI o un motore come app separate in iOS. iOS impedisce a un'app di invocarne un'altra come parte della sua configurazione di sicurezza. Un autore di motori deve scrivere la GUI e integrarla con il motore prima di poter richiedere ad Apple l'approvazione per il rilascio su App Store. Questo può essere vero anche per Windows RT. Android ha GUI e motori.

Oltre a UCI e CECP (Chess Engine Communication Protocol, ovvero winboard / xboard), Chessbase ha un proprio protocollo proprietario. Molti dei motori più potenti usano UCI, mentre i programmatori principianti usano abbastanza comunemente CECP.


È vero anche per Windows Phone.
SmallChess,

-3

La maggior parte dei motori di supporto della GUI sia in UCI che in Winboard, l'UCI sta diventando più standard e popolare in questi giorni. Ma, in genere, se si desidera che il proprio motore sia facilmente collegabile a qualsiasi GUI (in Windows o Linux), si dovrebbe avere un "exe" o un eseguibile che può essere indicato da questi programmi della GUI. Se stai costruendo il motore usando Java, non sono sicuro di come potresti convertirlo in un eseguibile per essere utilizzato dalla GUI. Lo stesso vale per poter giocare ai tornei online. Anche se stai pensando di fornire un tipo di interfaccia web-service per il tuo motore, non credo che possa partecipare alle competizioni del motore.


No. Java può essere creato nativamente per su .exe. Java non deve sempre essere eseguito su una macchina virtuale.
SmallChess,

Il file .exe di cui stai parlando è un file motore. Il motore deve supportare UCI o Winboard. Altrimenti, nessuna GUI di scacchi può leggere da essa. La tua affermazione non ha senso.
SmallChess,

Non posso che ridere dei tuoi commenti. Prova a eseguire un programma java senza JRE installato.
Keshav,

1
Se hai programmato, riderai di te stesso. Java può essere compilato per un programma nativo.
SmallChess,
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.