Giao thức UCI
quit
Thoát engine, sau khi nhập engine sẽ thoát ngay lập tức. Engine không xuất bất kỳ nội dung nào.
ucinewgame
Khi bắt đầu một ván mới, giao diện nên gửi lệnh ucinewgame cho engine để xóa bảng chuyển vị và các dữ liệu khác. Việc thực thi lệnh ucinewgame có thể mất một khoảng thời gian, sau khi gửi lệnh này giao diện nên dùng isready để xác nhận trạng thái của engine.
setoption
Thiết lập tùy chọn cho engine, cách dùng:
setoption name <id> [value <x>]Trong đó, <id> là tên tùy chọn UCI, <x> là giá trị bạn muốn đặt.
Ví dụ giao diện muốn đặt số luồng của engine là 16, có thể gửi:
setoption name Threads value 16Một số tùy chọn, như Clear Hash (xóa bảng chuyển vị), có thể bỏ value và dùng trực tiếp, ví dụ:
setoption name Clear HashVề các tùy chọn UCI, xem chi tiết tại trang "Tùy chọn UCI", ở đây không nhắc lại.
Engine không xuất bất kỳ nội dung nào.
isready
Dùng để kiểm tra engine có hoạt động bình thường không, engine luôn phải xuất readyok.
uci
Dùng để lấy thông tin liên quan của engine (như tên, tác giả, tùy chọn UCI...), ví dụ đầu ra như sau:
id name Pikafish 2024-02-18
id author the Pikafish developers (see AUTHORS file)
option name Debug Log File type string default
option name Threads type spin default 1 min 1 max 1024
option name Hash type spin default 16 min 1 max 33554432
option name Clear Hash type button
option name Ponder type check default false
option name MultiPV type spin default 1 min 1 max 128
...
uciokTrong đó, uciok là bắt buộc. Nếu sau khi giao diện nhập uci mà không nhận được uciok từ engine, giao diện sẽ coi chương trình đó không phải engine UCI.
[position] fen
Nhập thế cờ FEN cho engine.
Ví dụ:
position fen 3k1a3/4a4/5n3/9/9/9/9/9/9/4KR3 wHoặc thêm movelist (các nước đi trước đó) vào:
5a3/3ka4/5n3/9/9/9/9/9/9/4K1R2 w - - 0 1 moves g0f0 d8d9Lưu ý
Các engine cờ tướng dùng UCI-Cyclone, có thể bỏ position, và chỉ số hàng bắt đầu từ 0.
Engine không xuất bất kỳ nội dung nào.
[position] startpos
Đặt thế cờ hiện tại là thế cờ ban đầu (rnbakabnr/9/1c5c1/p1p1p1p1p/9/9/P1P1P1P1P/1C5C1/9/RNBAKABNR w), có thể bỏ position.
Engine không xuất bất kỳ nội dung nào.
go
Để engine phân tích thế cờ hiện tại (thế cờ hiện tại có thể đặt bằng lệnh position).
Có thể thêm các tham số sau:
searchmoves <move1> <move2> ... <movei>: chỉ định các nước đi cần tìm kiếm (chức năng "đổi nước" của giao diện cần dùng tham số này). Cần lưu ý rằng giao thức UCI không có lệnhbanmoves(lệnh này thuộc giao thức UCCI).infinite: phân tích không giới hạn (cho đến khi gửistop).ponder: suy nghĩ nền.wtime,btime: thời gian còn lại của Đỏ và Đen (ms).winc,binc: thời gian cộng thêm của Đỏ và Đen (ms).movestogo: dùng cho thể thức thời gian "trong bao nhiêu thời gian phải đi bao nhiêu nước", cho engine biết còn bao nhiêu nước nữa thì được cộng thời gian mới, trong cờ tướng thường không dùng đến.depth: chỉ định độ sâu.nodes: chỉ định số nút tìm kiếm.mate: chỉ định tìm đến chiếu bí trong bao nhiêu nước thì dừng.movetime: chỉ định thời gian mỗi nước (ms).perft: vét cạn các thế cờ trong bao nhiêu nước.
Sau khi nhập go, engine sẽ tìm kiếm thế cờ hiện tại và xuất kết quả tìm kiếm. Khi đạt giới hạn tương ứng hoặc người dùng gửi lệnh stop, engine sẽ dừng tìm kiếm.
d
Xuất thế cờ hiện tại, FEN của thế cờ, thông tin key và thông tin chiếu tướng. Lệnh này dành cho việc phát triển và gỡ lỗi engine.
eval
Xuất thông tin đánh giá của thế cờ hiện tại. Lệnh này dành cho việc phát triển và gỡ lỗi engine.
export_net
Xuất trọng số, có thể chỉ định tên file.
flip
Đổi bên đi.
compiler
Xuất thông tin trình biên dịch và tập lệnh của engine.
bench
Xem chi tiết tại bench là gì? Kết quả bench cho biết điều gì?.
