multistockfish 0.3.0
SDKflutter
Platformandroidios
Multiple flavors of Stockfish Engine
multistockfish
Multiple flavors of Stockfish Engine.
This plugin provides the following Stockfish engines:
- Stockfish 16, with embedded NNUE (38MB)
- Stockfish 17.1, without embedded NNUE
- Fairy-Stockfish, for chess variants
Usage
Init engine
[!WARNING] Only one instance can be created at a time. The
Stockfish()constructor will throw a StateError if called while another instance is running.
[!NOTE] When using the
StockfishFlavor.latestNoNNUEflavor, you need to download the.nnuefiles before starting an evaluation, since it is not embedded in the binary.
import 'package:multistockfish/multistockfish.dart';
// create a new instance
final stockfish = Stockfish();
// state is a ValueListenable<StockfishState>
print(stockfish.state.value); # StockfishState.starting
// the engine takes a few moment to start
await Future.delayed(...)
print(stockfish.state.value); # StockfishState.ready
UCI command
Wait until the state is ready before sending commands.
stockfish.stdin = 'isready';
stockfish.stdin = 'go movetime 3000';
stockfish.stdin = 'go infinite';
stockfish.stdin = 'stop';
Engine output is directed to a Stream<String>, add a listener to process results.
stockfish.stdout.listen((line) {
// do something useful
print(line);
});
Dispose / Hot reload
There are two active isolates when Stockfish engine is running. That interferes with Flutter's hot reload feature so you need to dispose it before attempting to reload.
// sends the UCI quit command
stockfish.stdin = 'quit';
// or even easier...
stockfish.dispose();