mirror of
https://github.com/chesskit-app/chesskit-engine.git
synced 2026-05-19 15:50:35 +00:00
156a7d6b08d3ed689b2c537e16b633eabbb1314d
♟️🤖 ChessKitEngine
A Swift package for the following chess engines:
ChessKitEngine implements the Universal Chess Interface protocol for communication between chess engines and user interfaces built with Swift.
For a related Swift package that manages chess logic, see chesskit-swift.
Usage
- Add a package dependency to your Xcode project or Swift Package:
.package(url: "https://github.com/chesskit-app/chesskit-engine", from: "0.2.0")
- Next you can import
ChessKitEngineto use it in your Swift code:
import ChessKitEngine
// ...
Features
- Initialize an engine and set response handler
// create Stockfish engine
let engine = Engine(type: .stockfish)
// set response handler
engine.receiveResponse = { response in
print(response)
}
// start listening for engine responses
engine.start()
- Send UCI protocol commands
// check that engine is running before sending commands
guard engine.isRunning else { return }
// stop any current engine processing
engine.send(command: .stop)
// set engine position to standard starting chess position
engine.send(command: .position(.startpos))
// start engine analysis with maximum depth of 15
engine.send(command: .go(depth: 15))
- Update engine position after a move is made
// FEN after 1. e4
let newPosition = "rnbqkbnr/pppppppp/8/8/4P3/8/PPPP1PPP/RNBQKBNR b KQkq e3 0 1"
engine.send(command: .stop)
engine.send(command: .position(.fen(newPosition))
engine.send(command: .go(depth: 15))
- Receive engine's analysis of current position
// receiveResponse is called whenever the engine publishes a response
engine.receiveResponse = { response in
switch response {
case let .info(info):
print(info.score) // engine evaluation score in centipawns
print(info.pv) // array of move strings representing best line
default:
break
}
- Terminate engine communication
// stop listening for engine responses
engine.stop()
- Enable engine response logging
// log engine commands and responses to the console
engine.loggingEnabled = true
// Logging is off by default since engines can be very
// verbose while analyzing positions and returning evaluations.
Supported Engines
The following engines are currently supported:
| Engine | Version | License | Options Reference | |
|---|---|---|---|---|
| Stockfish | 15.1 | GPL v3 | 🔗 | |
| lc0 | 0.29 | GPL v3 | 🔗 |
Author
License
ChessKitEngine is distributed under the MIT License.
Languages
Swift
86.5%
Objective-C++
5.2%
Objective-C
4.4%
C++
3.1%
C
0.8%