Protokol antarmuka mana yang harus saya terapkan untuk mesin catur saya?

8

Saya menulis mesin catur di C ++ https://github.com/RomainGoussault/Deepov .

Saya tahu ada beberapa protokol antarmuka di luar sana (UCI, protokol Winboard, dll) dan saya tidak tahu yang harus diimplementasikan. Saya ingin yang:

  • memungkinkan mesin saya untuk bermain turnamen online
  • memiliki beberapa GUI untuk Linux, Windows dan iOS
  • memiliki semacam dokumentasi

Terima kasih

Romain
sumber
2
Mengapa jawa Percayalah, Anda akan menyesal ketika Anda mengoptimalkan kecepatan mesin Anda.
Rafiek
Karena saya kenal Java dengan baik. Saya juga tahu bahwa Java sangat lambat dibandingkan dengan bahasa lain. Saya bisa porting ke C ++ sesudahnya.
Romain
Ok, tapi saya sarankan porting sesegera mungkin;)
Rafiek
1
Porting ke C ++ selesai;)
Romain

Jawaban:

9

Hanya ada dua protokol - UCI dan Winboard. Winboard adalah protokol lama dan tidak benar-benar digunakan saat ini. Crafty adalah satu-satunya mesin utama yang masih mendukung protokol Winboard, tetapi itu hanya karena mesinnya juga sangat tua. UCI adalah protokol baru yang dikembangkan oleh Shredder, dan digunakan di mana-mana - Windows, Mac, Linux, Android, iOS dll. UCI adalah satu-satunya protokol yang harus Anda pertimbangkan.

  1. UCI didukung di mana-mana
  2. Setiap GUI catur selain xboard mendukung UCI, seperti, Chessbase, Scid, Arena dll. Bahkan xboard dapat terhubung ke mesin UCI oleh sesuatu yang dikenal sebagai Polyglot.
  3. Dokumentasi UCI ada di http://wbec-ridderkerk.nl/html/UCIProtocol.html

Winboard kurang lebih sudah usang karena protokolnya lebih rumit daripada UCI yang lebih bersih. Winboard adalah protokol yang dinyatakan, itu berarti keadaan mesin tergantung pada iterasi sebelumnya, sedangkan UCI lebih mudah untuk ditangani karena Anda hanya perlu memasok dengan FEN Anda saat ini atau daftar langkah.

Catur kecil
sumber
1
Koreksi kecil pada GUI catur di atas seperti Arena biasanya tidak menggunakan FEN untuk berkomunikasi status permainan dengan UCI. Mereka menggunakan daftar pindah dari awal permainan. Hal ini memungkinkan mesin untuk menangani aturan lima puluh langkah dengan benar dan fitur permainan lainnya yang sering tidak dikomunikasikan dengan FEN. Protokol memang menggunakan FEN untuk mengatur posisi permainan sembarang, dan posisi di mana seluruh daftar langkah tidak diketahui. Namun poster itu benar dalam semua rincian lainnya.
johnwbyrd
1
@johnwbyrd Saya telah mengedit jawaban saya. Terima kasih.
SmallChess
1
FEN bekerja dengan baik untuk aturan lima puluh langkah. Itu aturan pengulangan tiga kali lipat yang menyebabkan masalah.
Kef Schecter
1

Saya rasa tidak mungkin membuat GUI atau engine sebagai aplikasi terpisah di iOS. iOS mencegah satu aplikasi untuk memanggil yang lain sebagai bagian dari pengaturan keamanannya. Seorang penulis mesin harus menulis GUI, dan mengintegrasikannya dengan mesin sebelum ia dapat mengajukan permohonan ke Apple untuk persetujuan untuk rilis di App Store. Ini mungkin berlaku untuk Windows RT juga. Android memiliki GUI dan mesin.

Selain terlepas dari UCI dan CECP (Chess Engine Communication Protocol, yaitu winboard / xboard), Chessbase memiliki protokol miliknya sendiri. Banyak mesin terkuat menggunakan UCI, sementara programmer pemula cukup umum menggunakan CECP.

Seorang pejalan kaki
sumber
Itu juga berlaku untuk telepon Windows.
SmallChess
-3

Sebagian besar mesin pendukung GUI baik di UCI atau Winboard, UCI menjadi lebih standar dan populer akhir-akhir ini. Tapi, biasanya jika Anda ingin mesin Anda mudah dicolokkan ke GUI apa pun (di Windows atau Linux), maka Anda harus memiliki "exe" atau dapat dieksekusi yang dapat ditunjukkan oleh program-program GUI ini. Jika Anda sedang membangun mesin menggunakan Java, maka saya tidak yakin bagaimana Anda akan dapat mengubah ini menjadi executable untuk digunakan oleh GUI. Hal yang sama berlaku untuk dapat bermain turnamen online. Bahkan jika Anda berencana untuk menyediakan jenis antarmuka layanan web untuk mesin Anda, saya tidak berpikir itu dapat berpartisipasi dalam kompetisi mesin.

Keshav
sumber
Tidak. Java dapat dibangun secara bawaan di .exe. Java tidak selalu harus dijalankan di mesin virtual.
SmallChess
File .exe yang Anda bicarakan adalah file mesin. Mesin harus mendukung UCI atau Winboard. Kalau tidak, tidak ada GUI catur yang bisa membacanya. Pernyataan Anda tidak masuk akal.
SmallChess
Saya tidak bisa tidak menertawakan komentar Anda. Coba jalankan program java tanpa JRE terinstal.
Keshav
1
Jika Anda melakukan pemrograman, Anda akan menertawakan diri sendiri. Java dapat dikompilasi ke program asli.
SmallChess