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
engines
software
programming
Romain
sumber
sumber
Jawaban:
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.
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.
sumber
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.
sumber
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.
sumber