Diğerlerinin söylediği gibi, UCI istediğiniz API'dir. Protokolün tüm özellikleri burada (zip dosyası bir metin dosyasına çıkarılır ): http://download.shredderchess.com/div/uci.zip
Aslında çok basit ve basit, bir UCI motoru düz metinle stdin, stdout ve stderr aracılığıyla yanıt vermeli ve cevap vermelidir. Aslında, platformunuzdaki herhangi bir UCI motorunun çalıştırılabilir ikili dosyasını çalıştırabilmeli ve UCI komutlarını manuel olarak verebilmelisiniz.
UCI, bir GUI'den veya başka bir motordan gelen talimatları, belirli bir motora, belirli bir PGN dosyasını analiz etmek de dahil olmak üzere ne yapmak isterse yapmasını söyleme talimatını kolaylaştırır (yükleme GUI veya benzeri ön uçtan yapılır, ham hareketler daha sonra motora e4 e2e4 olmak gibi genişletilmiş cebirsel formda beslenir). İhtiyaçlarınızın ikinci ve üçüncü noktaları UCI'de standarttır, ancak bunları desteklemek her motor geliştiricisine bağlıdır (bu gereksinimlerin ne kadar zayıf olduğu göz önüne alındığında, çoğu olmalıdır).
Komut satırında çalışan bir UCI örneği:
bash-3.2$ ./stockfish-5-64
Stockfish 5 64 by Tord Romstad, Marco Costalba and Joona Kiiski
uci
id name Stockfish 5 64
id author Tord Romstad, Marco Costalba and Joona Kiiski
option name Write Debug Log type check default false
option name Write Search Log type check default false
option name Search Log Filename type string default SearchLog.txt
option name Book File type string default book.bin
option name Best Book Move type check default false
option name Contempt Factor type spin default 0 min -50 max 50
option name Mobility (Midgame) type spin default 100 min 0 max 200
option name Mobility (Endgame) type spin default 100 min 0 max 200
option name Pawn Structure (Midgame) type spin default 100 min 0 max 200
option name Pawn Structure (Endgame) type spin default 100 min 0 max 200
option name Passed Pawns (Midgame) type spin default 100 min 0 max 200
option name Passed Pawns (Endgame) type spin default 100 min 0 max 200
option name Space type spin default 100 min 0 max 200
option name Aggressiveness type spin default 100 min 0 max 200
option name Cowardice type spin default 100 min 0 max 200
option name Min Split Depth type spin default 0 min 0 max 12
option name Threads type spin default 1 min 1 max 128
option name Hash type spin default 32 min 1 max 16384
option name Clear Hash type button
option name Ponder type check default true
option name OwnBook type check default false
option name MultiPV type spin default 1 min 1 max 500
option name Skill Level type spin default 20 min 0 max 20
option name Emergency Move Horizon type spin default 40 min 0 max 50
option name Emergency Base Time type spin default 60 min 0 max 30000
option name Emergency Move Time type spin default 30 min 0 max 5000
option name Minimum Thinking Time type spin default 20 min 0 max 5000
option name Slow Mover type spin default 80 min 10 max 1000
option name UCI_Chess960 type check default false
uciok
isready
readyok
quit
bash-3.2$
Verdiğim komutlar uci, isready ve quit idi.
UCI komutlarını kullanmak için esasen iki ana seçeneğiniz vardır; mevcut bir arabirimi (örneğin ChessX, Arena ve diğer bir dizi) kullanabilir veya bir motora veya motor grubuna talimatlar vermek için kendi kodunuzu yazabilirsiniz. UCI motorlarına erişmek için zaten Python sarmalayıcıları olabileceğine inanıyorum, ancak iki kez kontrol etmem gerekiyor. Kesinlikle python satranç (satranç ithal) ve pychess (ithalat pychess) var, işlevlerinin kapsamını hatırlayamıyorum. Pychess'in gizlendiğini hatırlayamıyorum (muhtemelen github veya google kodu), ancak python-satranç pip ile kurulabilir.